diff --git a/PhysicsAnalysis/D2PDMaker/CMakeLists.txt b/PhysicsAnalysis/D2PDMaker/CMakeLists.txt index 2005e65fe2ea1aabe3d298bb792907e666c30127..6eed4fa8e914e70de7b37ad981644d24ddfa8e8a 100644 --- a/PhysicsAnalysis/D2PDMaker/CMakeLists.txt +++ b/PhysicsAnalysis/D2PDMaker/CMakeLists.txt @@ -1,62 +1,22 @@ -# $Id: CMakeLists.txt 773467 2016-09-15 13:56:14Z krasznaa $ -################################################################################ -# Package: D2PDMaker -################################################################################ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( D2PDMaker ) -# Declare the package's dependencies: -atlas_depends_on_subdirs( - PUBLIC - Calorimeter/CaloEvent - Control/AthenaBaseComps - Control/AthenaKernel - Control/AthContainers - Control/AthLinks - Control/Navigation - Control/StoreGate - Event/EventKernel - Event/NavFourMom - GaudiKernel - Generators/GeneratorObjects - Generators/AtlasHepMC - PhysicsAnalysis/AnalysisCommon/AnalysisUtils - PhysicsAnalysis/AnalysisCommon/PATCore - PhysicsAnalysis/AnalysisCommon/ParticleEvent - PhysicsAnalysis/AssociationBuilder/AssociationKernel - PhysicsAnalysis/TruthParticleID/McParticleEvent - Reconstruction/Jet/JetEvent - Reconstruction/MuonIdentification/muonEvent - Reconstruction/Particle - Reconstruction/egamma/egammaEvent - Reconstruction/tauEvent - Tracking/TrkEvent/VxVertex - PRIVATE - DetectorDescription/GeoPrimitives - Generators/GenAnalysisTools/TruthHelper - Reconstruction/MissingETPerformance - Tracking/TrkEvent/TrkTrackSummary ) - # External dependencies: -find_package( Boost ) find_package( CLHEP ) find_package( ROOT COMPONENTS Core Tree MathCore Hist ) # Component(s) in the package: atlas_add_component( D2PDMaker D2PDMaker/*.h D2PDMaker/*.icc src/*.cxx src/components/*.cxx - INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} - - LINK_LIBRARIES ${Boost_LIBRARIES} ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib CaloEvent AthenaBaseComps AthenaKernel AthContainers AthLinks - Navigation StoreGateLib EventKernel NavFourMom GaudiKernel + Navigation EventKernel NavFourMom GaudiKernel GeneratorObjects AnalysisUtilsLib PATCoreLib ParticleEvent AssociationKernel McParticleEvent JetEvent muonEvent Particle egammaEvent tauEvent VxVertex GeoPrimitives TruthHelper MissingETPerformanceLib TrkTrackSummary ) # Install files from the package: -atlas_install_headers( D2PDMaker ) -atlas_install_python_modules( python/*.py ) -atlas_install_joboptions( share/*.py ) -atlas_install_runtime( xml/*.xml ) +atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) diff --git a/PhysicsAnalysis/D2PDMaker/D2PDMaker/CheckD2PD.h b/PhysicsAnalysis/D2PDMaker/D2PDMaker/CheckD2PD.h deleted file mode 100644 index b8835c6b0ec9f96c8df2cca0033cddbc2438ecaf..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/D2PDMaker/CheckD2PD.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -// Dear emacs, this is -*-c++-*- -#ifndef D2PDMAKER_CHECKD2PD_H -#define D2PDMAKER_CHECKD2PD_H -//=========================================================================== -// Name : CheckD2PD.h -// Package : offline/PhysicsAnalysis/ -// Author : Karsten Koeneke -// Created : April 2009 -// -// DESCRIPTION: -// -// Check some properties of the D2PD. -// -//=========================================================================== - -#include "AthenaBaseComps/AthAlgorithm.h" -#include "GaudiKernel/ObjectVector.h" -#include "CLHEP/Units/SystemOfUnits.h" -#include "GaudiKernel/ITHistSvc.h" - -#include "egammaEvent/ElectronContainer.h" - -#include <string> -#include "TH1.h" -#include "TH2.h" - - - -class CheckD2PD : public AthAlgorithm { - - public: - - CheckD2PD(const std::string& name, ISvcLocator* pSvcLocator); - ~CheckD2PD(); - - StatusCode initialize(); - StatusCode finalize(); - StatusCode execute(); - - - private: - - /** the actual check of the egamma DPD */ - StatusCode checkD2PD(); - - - private: - - /** a handle on the Hist/TTree registration service */ - ITHistSvc * m_thistSvc; - - /** name of the electron container to retrieve from StoreGate */ - std::string m_compPartCollName1; - std::string m_compPartCollName2; - std::string m_compPartCollName3; - std::string m_compPartCollName4; - std::string m_compPartCollName5; - - /** create the histograms */ - TH1F* m_dpd_composite1_number; - TH1F* m_dpd_composite1_mass; - TH1F* m_dpd_composite1_pt; - TH1F* m_dpd_composite1_eta; - - TH1F* m_dpd_composite1_nDaughter; - TH1F* m_dpd_composite1_daughters_pt; - TH1F* m_dpd_composite1_daughters_eta; - - - TH1F* m_dpd_composite2_number; - TH1F* m_dpd_composite2_mass; - TH1F* m_dpd_composite2_pt; - TH1F* m_dpd_composite2_eta; - - - TH1F* m_dpd_composite3_number; - TH1F* m_dpd_composite3_mass; - TH1F* m_dpd_composite3_pt; - TH1F* m_dpd_composite3_eta; - - - TH1F* m_dpd_composite4_number; - TH1F* m_dpd_composite4_mass; - TH1F* m_dpd_composite4_pt; - TH1F* m_dpd_composite4_eta; - - - TH1F* m_dpd_composite5_number; - TH1F* m_dpd_composite5_mass; - TH1F* m_dpd_composite5_pt; - TH1F* m_dpd_composite5_eta; - -}; - -#endif // CHECKD2PD_H - diff --git a/PhysicsAnalysis/D2PDMaker/D2PDMaker/CreateControlPlots.h b/PhysicsAnalysis/D2PDMaker/D2PDMaker/CreateControlPlots.h deleted file mode 100644 index 3ae6449371a5915939cd89b6a3cfdb3871607e51..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/D2PDMaker/CreateControlPlots.h +++ /dev/null @@ -1,148 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Dear emacs, this is -*-c++-*- -#ifndef D2PDMAKER_CREATECONTROLPLOTS_H -#define D2PDMAKER_CREATECONTROLPLOTS_H -//=========================================================================== -// Name : CreateControlPlots.h -/** - @class CreateControlPlots - - @author Karsten Koeneke <karsten.koeneke@cernSPAMNOT.ch> - - @date February 2011 - - @brief Make some histograms. -*/ -//=========================================================================== - -#include "AthenaBaseComps/AthAlgorithm.h" - -// STL includes -#include <string> -#include <vector> - -// Gaudi includes -#include "GaudiKernel/ServiceHandle.h" - -class ITHistSvc; -class TH1F; - -namespace Trk - { - class VxCandidate; - class VxTrackAtVertex; - } - - - - -class CreateControlPlots : public AthAlgorithm { - -public: - - /** Default constructor */ - CreateControlPlots(const std::string& name, ISvcLocator* pSvcLocator); - - /* Default destructor */ - ~CreateControlPlots(); - - - /** Gaudi Service Interface method implementations - initialize */ - StatusCode initialize(); - - /** Gaudi Service Interface method implementations - execute */ - StatusCode finalize(); - - /** Gaudi Service Interface method implementations - finalize */ - StatusCode execute(); - - -private: - - /** a handle on the Hist/TTree registration service */ - //ITHistSvc * m_thistSvc; - ServiceHandle<ITHistSvc> m_thistSvc; - - /** name of the ITHistSvc */ - //std::string m_thistSvcName; - - /** name of the vertex container to retrieve from StoreGate */ - std::string m_vtxCollName; - - /** Name of the output stream to which to save the histograms */ - std::string m_outStreamName; - - /** Name of the output directory inside the root file */ - std::string m_rootDirName; - - /** Prefix for histogram names */ - std::string m_histPreName; - - - /** Internal event counter */ - unsigned long m_nEventsProcessed; - - - //------------------------------------------------------ - // Selections - //------------------------------------------------------ - - /** minimum number of tracks at vertex */ - unsigned int m_minNumberVxTracks; - - /** maximum number of tracks at vertex */ - unsigned int m_maxNumberVxTracks; - - - /** Pointer to VertexCandidate */ - const Trk::VxCandidate* m_vxcand; - - /** Pointer to vector of tracks at vertex */ - const std::vector<Trk::VxTrackAtVertex*>* m_trackAtVertex; - - /** VertexType list for accept (logical OR combination) */ - std::vector<int> m_acceptVertexTypeList; - - /** VertexType list for require (logical AND combination) */ - std::vector<int> m_requireVertexTypeList; - - /** VertexType list for veto (logical NOT combination) */ - std::vector<int> m_vetoVertexTypeList; - - - /** minimum global x-poition of the vertex */ - double m_minVertexX; - - /** maximum global x-poition of the vertex */ - double m_maxVertexX; - - /** minimum global y-poition of the vertex */ - double m_minVertexY; - - /** maximum global y-poition of the vertex */ - double m_maxVertexY; - - /** minimum global z-poition of the vertex */ - double m_minVertexZ; - - /** maximum global z-poition of the vertex */ - double m_maxVertexZ; - - - - /** create the histograms */ - TH1F* m_vtx_number; - -// TH1F* m_vtx_mass; -// TH1F* m_vtx_pt; -// TH1F* m_vtx_eta; - - - -}; - -#endif // CREATECONTROLPLOTS_H - diff --git a/PhysicsAnalysis/D2PDMaker/python/AddContainers.py b/PhysicsAnalysis/D2PDMaker/python/AddContainers.py index fa3f15e97be53c7877384c8ef8665dc761bd04ef..69baae37f9be19776148bf629a3263e901219091 100644 --- a/PhysicsAnalysis/D2PDMaker/python/AddContainers.py +++ b/PhysicsAnalysis/D2PDMaker/python/AddContainers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration ##============================================================================= ## Name: AddContainers @@ -73,7 +73,7 @@ class AddContainers( PyAthena.Alg ): ## Import needed modules import PyUtils.RootUtils as ru - ROOT = ru.import_root() + ROOT = ru.import_root() # noqa: F841 ## Get the StoreGate service self.storeGateSvc = PyAthena.py_svc('StoreGateSvc') @@ -82,7 +82,7 @@ class AddContainers( PyAthena.Alg ): return StatusCode.Failure ## import some 4-mom utils - import FourMomUtils.Bindings + import FourMomUtils.Bindings # noqa: F401 self.utils = { 'deltaR' : PyAthena.P4Helpers.deltaR } return StatusCode.Success @@ -92,7 +92,7 @@ class AddContainers( PyAthena.Alg ): def getFunctor(self, obj): if self.attribute != "": if hasattr(obj, self.attribute): - self.msg.debug( "Will use new object of type %s for further computation" % self.attribute ) + self.msg.debug( "Will use new object of type %s for further computation", self.attribute ) return getattr(obj, self.attribute)() pass return obj @@ -112,26 +112,26 @@ class AddContainers( PyAthena.Alg ): def execute(self): self.nProcessed+=1 - self.msg.debug( '==> execute %s on %r. event...' % (self.name(), self.nProcessed) ) + self.msg.debug( '==> execute %s on %r. event...', self.name(), self.nProcessed ) # Get the input collections from StoreGate and add each to the list of containers for this event nInputElements = 0 inContList = [] - for i in xrange( self.inputContainerNames.__len__() ) : + for i in range( self.inputContainerNames.__len__() ) : inCont = None try: inCont = self.storeGateSvc.retrieve( self.inputContainerType, self.inputContainerNames[i] ) except LookupError: if self.nProcessed < 100: - self.msg.warning( 'Collection of type %s with key %s not found' % (self.inputContainerType, self.inputContainerNames[i]) ) + self.msg.warning( 'Collection of type %s with key %s not found', self.inputContainerType, self.inputContainerNames[i] ) pass #continue pass if inCont: inContList.append( inCont ) nInputElements += inCont.size() pass - self.msg.debug( 'Found %s input containers.' % len(inContList) ) + self.msg.debug( 'Found %d input containers.', len(inContList) ) @@ -156,7 +156,7 @@ class AddContainers( PyAthena.Alg ): self.nObjectsProcessed += 1 self.msg.verbose( ' Processing object in input container...' ) if self.removeIdentical : - if not obj in outCont : + if obj not in outCont : outCont.push_back( obj ) pass pass @@ -178,7 +178,7 @@ class AddContainers( PyAthena.Alg ): nPassedObject = outCont.size() self.nObjectsPassed += nPassedObject if nPassedObject >= self.minNumberPassed and nPassedObject <= self.maxNumberPassed : - self.msg.debug( 'Found %s objects in this event... passing it.' % nPassedObject ) + self.msg.debug( 'Found %s objects in this event... passing it.', nPassedObject ) self.nEventAccepted += 1 self.setFilterPassed(True) pass @@ -189,7 +189,7 @@ class AddContainers( PyAthena.Alg ): # Record the merged output container into StoreGate so that they can be retrieved by other algorithms if self.storeGateSvc.record( outCont, self.outputContainerName ) != StatusCode.Success : - self.msg.error( 'Could not record the output container into StoreGate with the key = ' % self.outputContainerName ) + self.msg.error( 'Could not record the output container into StoreGate with the key = ', self.outputContainerName ) pass return StatusCode.Success @@ -198,7 +198,6 @@ class AddContainers( PyAthena.Alg ): def finalize(self): ## Import needed modules - import math import PyUtils.Logging # Only dump the summary if requested or in DEBUG/VERBOSE mode @@ -215,9 +214,9 @@ class AddContainers( PyAthena.Alg ): self.msg.info( 'Event filter description :: N accepted : ratio[%] :: N accepted : ratio[%]' ) self.msg.info( '--------------------------------------------------------------------------------------------------------------------------------------------' ) self.msg.info( 'Total number of objects/events processed :: %10u : 100.000 :: %10u : 100.000' - % ( self.nObjectsProcessed, self.nProcessed ) ) + , self.nObjectsProcessed, self.nProcessed ) self.msg.info( 'Final count :: %10u : %8.5g :: %10u : %8.5g' - % ( self.nObjectsPassed, objRatio, self.nEventAccepted, evtRatio ) ) + , self.nObjectsPassed, objRatio, self.nEventAccepted, evtRatio ) self.msg.info( '=================================================================== end ====================================================================' ) pass diff --git a/PhysicsAnalysis/D2PDMaker/python/D2PDFlags.py b/PhysicsAnalysis/D2PDMaker/python/D2PDFlags.py index 3aac061de773ebdbf6ac424ee77b166e69481592..534c79a2861324b49a5cf9f09baac88d52cd62f2 100644 --- a/PhysicsAnalysis/D2PDMaker/python/D2PDFlags.py +++ b/PhysicsAnalysis/D2PDMaker/python/D2PDFlags.py @@ -17,7 +17,6 @@ __author__ = "Karsten Koeneke <karsten.koeneke@desy.de>" from AthenaCommon.JobProperties import JobProperty, JobPropertyContainer from AthenaCommon.JobProperties import jobproperties -from RecExConfig.RecoFunctions import AddValidItemToList,RemoveValidItemFromList #===================================================================== # First define container for the D2PDMaker flags @@ -63,251 +62,9 @@ class OutputPoolRootFileNamePrefix(JobProperty): jobproperties.D2PDFlags.add_JobProperty(OutputPoolRootFileNamePrefix) - -class GRLFile(JobProperty): - """ File name prefix for the pool.root output files.""" - statusOn = True - allowedTypes = ['str'] - StoredValue = "http://atlasdqm.web.cern.ch/atlasdqm/grlgen/StandardModel/WZjets_allchannels_v4/data10_7TeV.periodAllYear_DetStatus-v03-pro05_WZjets_allchannels.xml" - pass -jobproperties.D2PDFlags.add_JobProperty(GRLFile) - - - ##-------------------------------- ## Flags to turn on/off each possible DPD ## Note: each DPD has its own internal flags. ##-------------------------------- listAODtoD2PD=[] listESDtoD2PD=[] - -class WriteExampleSimpleZeeStream(JobProperty): - """ Produce the D2PD simple Z->ee DPD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = "D2AODM_ZEE" - FileName = "" - DPDMakerScript = "D2PDMaker/D2PD_ExampleSimpleZee.py" - pass -jobproperties.D2PDFlags.add_JobProperty(WriteExampleSimpleZeeStream) -listAODtoD2PD.append(WriteExampleSimpleZeeStream.StreamName) - -class WriteExampleSimpleZmumuStream(JobProperty): - """ Produce the D2PD simple Z->mumu DPD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = "D2AODM_ZMUMU" - FileName = "" - DPDMakerScript = "D2PDMaker/D2PD_ExampleSimpleZmumu.py" - pass -jobproperties.D2PDFlags.add_JobProperty(WriteExampleSimpleZmumuStream) -listAODtoD2PD.append(WriteExampleSimpleZmumuStream.StreamName) - -class WriteExampleSimpleWmunuStream(JobProperty): - """ Produce the D2PD simple W->mu nu DPD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = "D2AODM_WMUNU" - FileName = "" - DPDMakerScript="D2PDMaker/D2PD_ExampleSimpleWmunu.py" - pass -jobproperties.D2PDFlags.add_JobProperty(WriteExampleSimpleWmunuStream) -listAODtoD2PD.append(WriteExampleSimpleWmunuStream.StreamName) - -class WriteExampleSimpleH4lStream(JobProperty): - """ Produce the D2PD simple H -> ZZ* -> 4l DPD.""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = "D2AOD_H4L" - FileName = "" - DPDMakerScript="D2PDMaker/D2PD_ExampleSimpleH4l.py" - ApplyThinning = True - pass -jobproperties.D2PDFlags.add_JobProperty(WriteExampleSimpleH4lStream) -listAODtoD2PD.append(WriteExampleSimpleH4lStream.StreamName) - -class WriteDAOD_SUSYEGammaStream(JobProperty): - """Produce DAOD_SUSYEGAMMA""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = "DAOD_SUSYEGAMMA" - FileName = "" - DPDMakerScript="D2PDMaker/DAOD_SUSYEGamma.py" - CutVersion = 'newest' #also: OldV1 - pass -jobproperties.D2PDFlags.add_JobProperty(WriteDAOD_SUSYEGammaStream) -listAODtoD2PD.append(WriteDAOD_SUSYEGammaStream.StreamName) - -class WriteDAOD_SUSYMuonsStream(JobProperty): - """Produce DAOD_SUSYMUONS""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = "DAOD_SUSYMUONS" - FileName = "" - DPDMakerScript="D2PDMaker/DAOD_SUSYMuons.py" - CutVersion = 'newest' #also: OldV1 - pass -jobproperties.D2PDFlags.add_JobProperty(WriteDAOD_SUSYMuonsStream) -listAODtoD2PD.append(WriteDAOD_SUSYMuonsStream.StreamName) - -class WriteDAOD_SUSYJetsStream(JobProperty): - """Produce DAOD_SUSYJETS""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = "DAOD_SUSYJETS" - FileName = "" - DPDMakerScript="D2PDMaker/DAOD_SUSYJets.py" - CutVersion = 'newest' #not used yet - pass -jobproperties.D2PDFlags.add_JobProperty(WriteDAOD_SUSYJetsStream) -listAODtoD2PD.append(WriteDAOD_SUSYJetsStream.StreamName) - -class WriteD2AOD_WENUStream(JobProperty): - """Produce D2AOD_WENU""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = "D2AOD_WENU" - FileName = "" - DPDMakerScript="D2PDMaker/D2PD_WenuStream.py" - pass -jobproperties.D2PDFlags.add_JobProperty(WriteD2AOD_WENUStream) -listAODtoD2PD.append(WriteD2AOD_WENUStream.StreamName) - -class WriteD2ESDM_TRKJET(JobProperty): - """Produce D2ESDM_TRKJET""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = "D2ESDM_TRKJET" - FileName = "" - DPDMakerScript="D2PDMaker/D2ESDM_TRKJET.py" - pass -jobproperties.D2PDFlags.add_JobProperty(WriteD2ESDM_TRKJET) -listESDtoD2PD.append(WriteD2ESDM_TRKJET.StreamName) - -class WriteDAOD_RNDMStream(JobProperty): - """Produce DAOD_RNDM""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = "DAOD_RNDM" - FileName = "" - DPDMakerScript="D2PDMaker/DAOD_RNDM.py" - pass -jobproperties.D2PDFlags.add_JobProperty(WriteDAOD_RNDMStream) -listAODtoD2PD.append(WriteDAOD_RNDMStream.StreamName) - -class WriteDAOD_ElLoose18Stream(JobProperty): - """Produce DAOD_ELLOOSE18""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = "DAOD_ELLOOSE18" - FileName = "" - DPDMakerScript="D2PDMaker/DAOD_ElLoose18.py" - pass -jobproperties.D2PDFlags.add_JobProperty(WriteDAOD_ElLoose18Stream) -listAODtoD2PD.append(WriteDAOD_ElLoose18Stream.StreamName) - -class WriteDAOD_2LHSG2Stream(JobProperty): - """Produce DAOD_2LHSG2""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = "StreamDAOD_2LHSG2" - FileName = "" - DPDMakerScript = "HSG2DPDUtils/hsg2_daodmaker_2lepton.prodJobOFragment.py" - pass -jobproperties.D2PDFlags.add_JobProperty(WriteDAOD_2LHSG2Stream) -listAODtoD2PD.append(WriteDAOD_2LHSG2Stream.StreamName) - -class WriteDAOD_4LHSG2Stream(JobProperty): - """Produce DAOD_4LHSG2""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = "StreamDAOD_4LHSG2" - FileName = "" - DPDMakerScript = "HSG2DPDUtils/hsg2_daodmaker_4lepton.prodJobOFragment.py" - pass -jobproperties.D2PDFlags.add_JobProperty(WriteDAOD_4LHSG2Stream) -listAODtoD2PD.append(WriteDAOD_4LHSG2Stream.StreamName) - -class WriteDAOD_2L2QHSG2Stream(JobProperty): - """Produce DAOD_2L2QHSG2""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = "StreamDAOD_2L2QHSG2" - FileName = "" - DPDMakerScript = "HSG2DPDUtils/hsg2_daodmaker_2L2Q.prodJobOFragment.py" - pass -jobproperties.D2PDFlags.add_JobProperty(WriteDAOD_2L2QHSG2Stream) -listAODtoD2PD.append(WriteDAOD_2L2QHSG2Stream.StreamName) - -class WriteDAOD_JPSIHSG2Stream(JobProperty): - """Produce DAOD_JPSIHSG2""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = "StreamDAOD_JPSIHSG2" - FileName = "" - DPDMakerScript = "HSG2DPDUtils/hsg2_daodmaker_Jpsi.prodJobOFragment.py" - pass -jobproperties.D2PDFlags.add_JobProperty(WriteDAOD_JPSIHSG2Stream) -listAODtoD2PD.append(WriteDAOD_JPSIHSG2Stream.StreamName) - -class WriteDAOD_HWWStream(JobProperty): - """Produce DAOD_HWW""" - statusOn = True - allowedTypes = ['bool'] - StoredValue = False - StreamName = "DAOD_HWW" - FileName = "" - DPDMakerScript = "HSG3DPDUtils/DAOD_HWW.py" - pass -jobproperties.D2PDFlags.add_JobProperty(WriteDAOD_HWWStream) -listAODtoD2PD.append(WriteDAOD_HWWStream.StreamName) - - - -#class WriteDAODM_MYFIRSTStream(JobProperty): -# """Produce DAODM_MYFIRST""" -# statusOn = True -# allowedTypes = ['bool'] -# StoredValue = False -# StreamName = "DAODM_MYFIRST" -# FileName = "" -# DPDMakerScript = "MyNewPackage/MyFirstDAOD.py" -# ApplyThinning = True -# ApplySlimming = True -# CreateControlPlots = False -# pass -#jobproperties.D2PDFlags.add_JobProperty(WriteDAODM_MYFIRSTStream) -#listAODtoD2PD.append(WriteDAODM_MYFIRSTStream.StreamName) - - - -class InputSUSYJetCollection(JobProperty): - """Input Jet collection of SUSYFilters""" - statusOn = True - allowedTypes = ['str'] - StoredValue = "AntiKt4H1TopoJets" #<--r15, for r16: AntiKt4TopoJets - pass -jobproperties.D2PDFlags.add_JobProperty(InputSUSYJetCollection) - -class VerboseLevel(JobProperty): - """Input Jet collection of SUSYFilters""" - statusOn = True - allowedTypes = ['int'] - StoredValue = 3 #3==INFO, 2==DEBUG - pass -jobproperties.D2PDFlags.add_JobProperty(VerboseLevel) diff --git a/PhysicsAnalysis/D2PDMaker/python/SUSYFilters.py b/PhysicsAnalysis/D2PDMaker/python/SUSYFilters.py deleted file mode 100644 index fee28de238e701f7d650143814ef54ae008b8d80..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/python/SUSYFilters.py +++ /dev/null @@ -1,274 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -## Creation: George Redlinger, Lucian Ancu & David Cote, September 2010 -## This file defines the SUSY filters without any instanciation -## The default values are for the newest cut version, but older cut versions are also listed at the bottom - -## Import the module that allows to use named units, e.g. GeV -import AthenaCommon.SystemOfUnits as Units -from D2PDMaker.D2PDFlags import D2PDFlags - -# Muons filters -from D2PDMaker.D2PDMakerConf import D2PDMuonSelector -### STACO ### -StacoMuonSelectorSUSY_forEMu = D2PDMuonSelector( "StacoMuonSelectorSUSY_forEMu", - inputCollection = 'StacoMuonCollection', - outputLinkCollection = 'SelectedStacoMuonLinks_forEMu', - muonRequireIsCombined = True, - etaMin = -2.5, - etaMax = 2.5, - minNumberPassed = 1, - ptMin = 6.0*Units.GeV - ) - -#StacoMuonSelectorSUSY is a sub-set of StacoMuonSelectorSUSY_forEMu, with tighter pT cut -StacoMuonSelectorSUSY = D2PDMuonSelector( "StacoMuonSelectorSUSY", - inputCollection = 'SelectedStacoMuonLinks_forEMu', - outputLinkCollection = 'SelectedStacoMuonLinks', - ptMin = 12.0*Units.GeV, - minNumberPassed = 1 - ) - -#StacoDiMuonSelectorSUSY is a sub-set of StacoMuonSelectorSUSY_forEMu, requiring two muons -StacoDiMuonSelectorSUSY = D2PDMuonSelector( "StacoDiMuonSelectorSUSY", - inputCollection = 'SelectedStacoMuonLinks_forEMu', - outputLinkCollection = 'SelectedStacoDiMuonLinks', - minNumberPassed = 2 - ) - -#### MuID ### -MuidMuonSelectorSUSY_forEMu = D2PDMuonSelector( "MuidMuonSelectorSUSY_forEMu", - inputCollection = 'MuidMuonCollection', - outputLinkCollection = 'SelectedMuidMuonLinks_forEMu', - muonRequireIsCombined = True, - etaMin = -2.5, - etaMax = 2.5, - minNumberPassed = 1, - ptMin = 6.0*Units.GeV - ) - -#MuidMuonSelectorSUSY is a sub-set of MuidMuonSelectorSUSY_forEMu, with tighter pT cut -MuidMuonSelectorSUSY = D2PDMuonSelector( "MuidMuonSelectorSUSY", - inputCollection = 'SelectedMuidMuonLinks_forEMu', - outputLinkCollection = 'SelectedMuidMuonLinks', - ptMin = 12.0*Units.GeV, - minNumberPassed = 1 - ) - -#MuidDiMuonSelectorSUSY is a sub-set of MuidMuonSelectorSUSY_forEMu, requiring two muons -MuidDiMuonSelectorSUSY = D2PDMuonSelector( "MuidDiMuonSelectorSUSY", - inputCollection = 'SelectedMuidMuonLinks_forEMu', - outputLinkCollection = 'SelectedMuidDiMuonLinks', - minNumberPassed = 2 - ) - - -# Electron filters -import PyUtils.RootUtils as ru -ROOT = ru.import_root() -import cppyy -cppyy.load_library('libegammaEnumsDict') -from ROOT import egammaPID -from ROOT import egammaParameters - -from D2PDMaker.D2PDMakerConf import D2PDElectronSelector -ElectronSelectorSUSY_forEMu = D2PDElectronSelector( "ElectronSelectorSUSY_forEMu", - inputCollection = 'ElectronAODCollection', - outputLinkCollection = 'SelectedElectronLinks_forEMu', - electronIsEM = egammaPID.ElectronMedium, - #electronAuthor = egammaParameters.AuthorElectron, - #requested by Jovan - clusterEMCaloLayerEtaMin = -2.5, - clusterEMCaloLayerEtaMax = 2.5, - clusterEMCaloLayer = 2, - minNumberPassed = 1, - etMin = 6.0*Units.GeV - ) - -#ElectronSelectorSUSY is a sub-set of ElectronSelectorSUSY_forEMu, with tighter Et cut -ElectronSelectorSUSY = D2PDElectronSelector( "ElectronSelectorSUSY", - inputCollection = 'SelectedElectronLinks_forEMu', - outputLinkCollection = 'SelectedElectronLinks', - etMin = 12.0*Units.GeV, - minNumberPassed =1 - ) - -#DiElectronSelectorSUSY is a sub-set of ElectronSelectorSUSY_forEMu, requinring two muons -DiElectronSelectorSUSY = D2PDElectronSelector( "DiElectronSelectorSUSY", - inputCollection = 'SelectedElectronLinks_forEMu', - outputLinkCollection = 'SelectedDiElectronLinks', - minNumberPassed = 2 - ) - -# Photon filter(s) -from D2PDMaker.D2PDMakerConf import D2PDPhotonSelector -PhotonSelectorSUSY = D2PDPhotonSelector( "PhotonSelectorSUSY", - inputCollection = 'PhotonAODCollection', - outputLinkCollection = 'SelectedPhotonLinks', - minNumberPassed = 1, - photonIsEM = egammaPID.PhotonLoose, - #photonAuthor = egammaParameters.AuthorPhoton, - #requested by Jovan - etMin = 20.0*Units.GeV, - clusterEMCaloLayer = 2, - clusterEMCaloLayerEtaMin = -2.5, - clusterEMCaloLayerEtaMax = 2.5 - ) - - - -# Jet filters -from D2PDMaker.D2PDMakerConf import D2PDJetSelector -JetSelectorSUSY = D2PDJetSelector( "JetSelectorSUSY", - inputCollection = D2PDFlags.InputSUSYJetCollection() , - outputLinkCollection = 'AntiKt4H1TopoJets_SelectedJetLinks', - minNumberPassed = 1, - useJetSignalState = 0, - jetScaledEtMin = 80.0*Units.GeV, - jetSignalStateAbsEtaMax = 3.0 - ) - -DiJetSelectorSUSY = D2PDJetSelector( "DiJetSelectorSUSY", - inputCollection = D2PDFlags.InputSUSYJetCollection() , - outputLinkCollection = 'AntiKt4H1TopoJets_SelectedDijetLinks', - minNumberPassed = 2, - useJetSignalState = 0, - jetScaledEtMin = 30.0*Units.GeV, - jetSignalStateAbsEtaMax = 3.0 - ) - -#FourJet not used yet, but likely to be soon when dijet filter tightens -FourJetSelectorSUSY = D2PDJetSelector( "FourJetSelectorSUSY", - inputCollection = D2PDFlags.InputSUSYJetCollection() , - outputLinkCollection = 'AntiKt4H1TopoJets_SelectedFourjetLinks', - minNumberPassed = 4, - useJetSignalState = 0, - jetScaledEtMin = 30.0*Units.GeV, - jetSignalStateAbsEtaMax = 3.0 - ) - - - -# MET filter(s) -from D2PDMaker.D2PDMakerConf import D2PDMissingEtSelector -METSelectorSUSY = D2PDMissingEtSelector( "METSelectorSUSY", - inputCollection = 'MET_Topo', - outputCollection = 'MET_Topo_SUSYselection', - minNumberPassed = 1, - missingEtMin = 40.0*Units.GeV - ) - - - -# Combined filters -from PrimaryDPDMaker.LogicalFilterCombiner import LogicalFilterCombiner - -#MuonPlusJet and ElectronPlusJet are not needed anymore! -#MuonPlusJetSelectorSUSY = LogicalFilterCombiner("MuonPlusJetSelectorSUSY") -#MuonPlusJetSelectorSUSY.cmdstring = "(StacoMuonSelectorSUSY or MuidMuonSelectorSUSY) and DiJetSelectorSUSY_WithLep" - -#ElectronPlusJetSelectorSUSY = LogicalFilterCombiner("ElectronPlusJetSelectorSUSY") -#ElectronPlusJetSelectorSUSY.cmdstring = "ElectronSelectorSUSY and DiJetSelectorSUSY_WithLep" - -ElectronPlusMuonSelectorSUSY = LogicalFilterCombiner("ElectronPlusMuonSelectorSUSY") -ElectronPlusMuonSelectorSUSY.cmdstring = "(MuidMuonSelectorSUSY_forEMu or StacoMuonSelectorSUSY_forEMu) and ElectronSelectorSUSY_forEMu" - -################################################################################## -# Helper functions for the streams -def GetOldV1Setup(seq): - #This is the same for all streams - #>0 electron(s) - if not hasattr(seq,"ElectronSelectorSUSY"): seq+=ElectronSelectorSUSY - seq.ElectronSelectorSUSY.etMin=10.0*Units.GeV - #>0 muon(s) - if not hasattr(seq,"StacoMuonSelectorSUSY"): seq += StacoMuonSelectorSUSY - if not hasattr(seq,"MuidMuonSelectorSUSY"): seq += MuidMuonSelectorSUSY - seq.StacoMuonSelectorSUSY.ptMin = 6.0*Units.GeV - seq.MuidMuonSelectorSUSY.ptMin = 6.0*Units.GeV - #jets or MET - if not hasattr(seq,"JetSelectorSUSY"): seq += JetSelectorSUSY - if not hasattr(seq,"DiJetSelectorSUSY"): seq += DiJetSelectorSUSY - if not hasattr(seq,"METSelectorSUSY"): seq += METSelectorSUSY - seq.JetSelectorSUSY.jetSignalStateEtMin=40.0*Units.GeV - seq.DiJetSelectorSUSY.jetSignalStateEtMin=20.0*Units.GeV - seq.METSelectorSUSY.missingEtMin=20.0*Units.GeV - #Then take an OR of all above filters - return ["ElectronSelectorSUSY","StacoMuonSelectorSUSY","MuidMuonSelectorSUSY","JetSelectorSUSY","DiJetSelectorSUSY","METSelectorSUSY"] - -def SetupEGammaStreamFilters(seq): - acceptAlgs=[] - cutVersion=D2PDFlags.WriteDAOD_SUSYEGammaStream.CutVersion - if cutVersion=='newest': - #photon: - if not hasattr(seq,"PhotonSelectorSUSY"): seq += PhotonSelectorSUSY - #el+mu (must execute before other selectors because of elementlink nesting (see above)) - if not hasattr(seq,"MuidMuonSelectorSUSY_forEMu"): seq += MuidMuonSelectorSUSY_forEMu - if not hasattr(seq,"StacoMuonSelectorSUSY_forEMu"): seq += StacoMuonSelectorSUSY_forEMu - if not hasattr(seq,"ElectronSelectorSUSY_forEMu"): seq += ElectronSelectorSUSY_forEMu - if not hasattr(seq,"ElectronPlusMuonSelectorSUSY"): seq += ElectronPlusMuonSelectorSUSY - seq += ElectronSelectorSUSY - seq.ElectronSelectorSUSY.etMin=12.0*Units.GeV - #di-electrons - seq += DiElectronSelectorSUSY - seq.ElectronSelectorSUSY.OutputLevel=D2PDFlags.VerboseLevel() - seq.DiElectronSelectorSUSY.OutputLevel=D2PDFlags.VerboseLevel() - seq.ElectronPlusMuonSelectorSUSY.OutputLevel=D2PDFlags.VerboseLevel() - seq.PhotonSelectorSUSY.OutputLevel=D2PDFlags.VerboseLevel() - acceptAlgs=["ElectronSelectorSUSY","DiElectronSelectorSUSY","PhotonSelectorSUSY","ElectronPlusMuonSelectorSUSY"] - elif cutVersion=='OldV1': - acceptAlgs = GetOldV1Setup( seq ) - else: - raise RuntimeError("Unknown cut version '%s'"%cutVersion) - - return acceptAlgs - -def SetupMuonsStreamFilters(seq): - acceptAlgs=[] - cutVersion=D2PDFlags.WriteDAOD_SUSYMuonsStream.CutVersion - if cutVersion=='newest': - #photon: - if not hasattr(seq,"PhotonSelectorSUSY"): seq += PhotonSelectorSUSY - #el+mu (must execute before other selectors because of elementlink nesting (see above)) - if not hasattr(seq,"MuidMuonSelectorSUSY_forEMu"): seq += MuidMuonSelectorSUSY_forEMu - if not hasattr(seq,"StacoMuonSelectorSUSY_forEMu"): seq += StacoMuonSelectorSUSY_forEMu - if not hasattr(seq,"ElectronSelectorSUSY_forEMu"): seq += ElectronSelectorSUSY_forEMu - if not hasattr(seq,"ElectronPlusMuonSelectorSUSY"): seq += ElectronPlusMuonSelectorSUSY - seq +=StacoMuonSelectorSUSY - seq +=MuidMuonSelectorSUSY - #dimuons - seq += MuidDiMuonSelectorSUSY - seq += StacoDiMuonSelectorSUSY - seq.MuidMuonSelectorSUSY.OutputLevel=D2PDFlags.VerboseLevel() - seq.StacoMuonSelectorSUSY.OutputLevel=D2PDFlags.VerboseLevel() - seq.MuidDiMuonSelectorSUSY.OutputLevel=D2PDFlags.VerboseLevel() - seq.StacoDiMuonSelectorSUSY.OutputLevel=D2PDFlags.VerboseLevel() - seq.ElectronPlusMuonSelectorSUSY.OutputLevel=D2PDFlags.VerboseLevel() - seq.PhotonSelectorSUSY.OutputLevel=D2PDFlags.VerboseLevel() - - acceptAlgs=["MuidMuonSelectorSUSY","StacoMuonSelectorSUSY","MuidDiMuonSelectorSUSY","StacoDiMuonSelectorSUSY","ElectronPlusMuonSelectorSUSY","PhotonSelectorSUSY"] - elif cutVersion=='OldV1': - acceptAlgs = GetOldV1Setup( seq ) - else: - raise RuntimeError("Unknown cut version '%s'"%cutVersion) - return acceptAlgs - -def SetupJetsStreamFilters(seq): - acceptAlgs=[] - cutVersion=D2PDFlags.WriteDAOD_SUSYJetsStream.CutVersion - if cutVersion=='newest': - seq += JetSelectorSUSY - seq += DiJetSelectorSUSY - seq += METSelectorSUSY - #seq += FourJetSelectorSUSY <--not used yet - #seq.FourJetSelectorSUSY.OutputLevel=D2PDFlags.VerboseLevel() - seq.JetSelectorSUSY.OutputLevel=D2PDFlags.VerboseLevel() - seq.DiJetSelectorSUSY.OutputLevel=D2PDFlags.VerboseLevel() - seq.METSelectorSUSY.OutputLevel=D2PDFlags.VerboseLevel() - acceptAlgs=["JetSelectorSUSY","DiJetSelectorSUSY","METSelectorSUSY"]#,"FourJetSelectorSUSY" - elif cutVersion=='OldV1': - acceptAlgs = GetOldV1Setup( seq ) - else: - raise RuntimeError("Unknown cut version '%s'"%cutVersion) - return acceptAlgs - - diff --git a/PhysicsAnalysis/D2PDMaker/share/CheckD2PD_jobOptions.py b/PhysicsAnalysis/D2PDMaker/share/CheckD2PD_jobOptions.py deleted file mode 100644 index f88c8a920bda66bca0d39da5b274831fb135a805..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/share/CheckD2PD_jobOptions.py +++ /dev/null @@ -1,30 +0,0 @@ -# Author: Karsten Koeneke -# CERN, February 2009 - - -#============================= This algorithm ============================= -from D2PDMaker.D2PDMakerConf import CheckD2PD -topSequence += CheckD2PD( "MyCheckD2PD", - OutputLevel = DEBUG, - #CompositeParticleContainer3 = "MyLooseZBosonOffShellCollection", - #CompositeParticleContainer2 = "MyLooseZBosonCollection", - CompositeParticleContainer1 = "MyZeeLooseZeeBosonCollection" ) -#========================================================================== - - - -########################################## -# setup TTree registration Service -# save ROOT histograms and Tuple -rootFileName = 'checkD2PD.root' -from GaudiSvc.GaudiSvcConf import THistSvc -ServiceMgr += THistSvc() -ServiceMgr.THistSvc.Output = ["AANT DATAFILE='"+rootFileName+"' OPT='RECREATE'"] -#from AnalysisTools.AnalysisToolsConf import AANTupleStream ## deprecated? -from AnalysisTools.AthAnalysisToolsConf import AANTupleStream -topSequence += AANTupleStream() -AANTupleStream = AANTupleStream() -AANTupleStream.ExtraRefNames = [ "StreamDPD","Stream1" ] -AANTupleStream.OutputName = rootFileName -AANTupleStream.WriteInputDataHeader = True -AANTupleStream.OutputLevel = WARNING diff --git a/PhysicsAnalysis/D2PDMaker/share/D2PD_ExampleSimpleH4l.py b/PhysicsAnalysis/D2PDMaker/share/D2PD_ExampleSimpleH4l.py deleted file mode 100644 index ac173bfcb39b3b3574807fd334969945c038912f..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/share/D2PD_ExampleSimpleH4l.py +++ /dev/null @@ -1,215 +0,0 @@ -##----------------------------------------------------------------------------- -## Name: D2PD_Test.py -## -## Author: Karsten Koeneke (DESY) -## Email: karsten.koeneke@desy.de -## -## Description: This defines the content of the D2PD example -## H -> Z Z* -> 4l -## -##----------------------------------------------------------------------------- - -## Import the module that allows to use named units, e.g. GeV -import AthenaCommon.SystemOfUnits as Units - -## Include the job property flags for this package and from RecExCommon -from D2PDMaker.D2PDFlags import D2PDFlags -from RecExConfig.RecFlags import rec - -## This handels multiple output streams -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - - - -#==================================================================== -# Define the individual particle selections -#==================================================================== -# - the muon selector --- for testing! -from D2PDMaker.D2PDMakerConf import D2PDMuonSelector -topSequence += D2PDMuonSelector( "MuonSelectorInExampleH4lStream", - OutputLevel = INFO, - inputCollection = 'StacoMuonCollection', - outputLinkCollection = 'MyH4lLooseMuonLinkCollection', - minNumberPassed = 2, - etMin = 5.0*Units.GeV, - etaMin = -2.5, - etaMax = 2.5, - etaVetoRanges = "[-1.52, -1.37], [1.37, 1.52]" - ) - -# - the electron selector -from D2PDMaker.D2PDMakerConf import D2PDElectronSelector -topSequence += D2PDElectronSelector( "ElectronSelectorInExampleH4lStream", - OutputLevel = INFO, - inputCollection = 'ElectronAODCollection', - outputLinkCollection = 'MyH4lLooseElectronLinkCollection', - minNumberPassed = 2, - etMin = 15.0*Units.GeV, - etaMin = -2.5, - etaMax = 2.5, - etaVetoRanges = "[-1.52, -1.37], [1.37, 1.52]", - electronIsEM = egammaPID.ElectronLoose, - electronAuthor = egammaParameters.AuthorElectron - ) - - - -#==================================================================== -# Define the particle combinations -#==================================================================== - -# - the Z->mumu Boson (on-shell) -from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner -topSequence += D2PDParticleCombiner( "D2PDParticleCombinerInExampleH4lStream_ZmumuBoson", - OutputLevel = INFO, - compositeParticlePDG_ID = 23, # This is a Z Boson - inputCollectionList = [ 'MyH4lLooseMuonLinkCollection', 'MyH4lLooseMuonLinkCollection' ], - outputCollection = 'MyH4lLooseZmumuBosonCollection', - minNumberPassed = 1, - chargeMax = 0, - massMin = 70.0*Units.GeV, - massMax = 110.0*Units.GeV - ) - -# - the Z->mumu Boson (off-shell) -from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner -topSequence += D2PDParticleCombiner( "D2PDParticleCombinerInExampleH4lStream_ZmumuBosonOffShell", - OutputLevel = INFO, - compositeParticlePDG_ID = 23, # This is a Z Boson - inputCollectionList = [ 'MyH4lLooseMuonLinkCollection', 'MyH4lLooseMuonLinkCollection' ], - outputCollection = 'MyH4lLooseZmumuBosonOffShellCollection', - minNumberPassed = 1, - chargeMax = 0, - massMin = 20.0*Units.GeV, - massMax = 110.0*Units.GeV - ) - -# - the Z->ee Boson (on-shell) -from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner -topSequence += D2PDParticleCombiner( "D2PDParticleCombinerInExampleH4lStream_ZeeBoson", - OutputLevel = INFO, - compositeParticlePDG_ID = 23, # This is a Z Boson - inputCollectionList = [ 'MyH4lLooseElectronLinkCollection', 'MyH4lLooseElectronLinkCollection' ], - outputCollection = 'MyH4lLooseZeeBosonCollection', - minNumberPassed = 1, - chargeMax = 0, - massMin = 70.0*Units.GeV, - massMax = 110.0*Units.GeV - ) - -# - the Z->ee Boson (off-shell) -from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner -topSequence += D2PDParticleCombiner( "D2PDParticleCombinerInExampleH4lStream_ZeeBosonOffShell", - OutputLevel = INFO, - compositeParticlePDG_ID = 23, # This is a Z Boson - inputCollectionList = [ 'MyH4lLooseElectronLinkCollection', 'MyH4lLooseElectronLinkCollection' ], - outputCollection = 'MyH4lLooseZeeBosonOffShellCollection', - minNumberPassed = 1, - chargeMax = 0, - massMin = 20.0*Units.GeV, - massMax = 120.0*Units.GeV - ) - - -# - the Higgs->4e Boson -from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner -topSequence += D2PDParticleCombiner( "D2PDParticleCombinerInExampleH4lStream_Higgs4eBoson", - OutputLevel = INFO, - compositeParticlePDG_ID = 25, # This is a Higgs Boson - inputCollectionList = [ 'MyH4lLooseZeeBosonCollection', 'MyH4lLooseZeeBosonOffShellCollection' ], - outputCollection = 'MyH4lLooseHiggs4eBosonCollection', - minNumberPassed = 1, - massMin = 100.0*Units.GeV - ) - -# - the Higgs->2mu2e Boson -from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner -topSequence += D2PDParticleCombiner( "D2PDParticleCombinerInExampleH4lStream_Higgs2mu2eBoson", - OutputLevel = INFO, - compositeParticlePDG_ID = 25, # This is a Higgs Boson - inputCollectionList = [ 'MyH4lLooseZmumuBosonCollection', 'MyH4lLooseZeeBosonOffShellCollection' ], - outputCollection = 'MyH4lLooseHiggs2mu2eBosonCollection', - minNumberPassed = 1, - massMin = 100.0*Units.GeV - ) - - -# - the Higgs->2e2mu Boson -from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner -topSequence += D2PDParticleCombiner( "D2PDParticleCombinerInExampleH4lStream_Higgs2e2muBoson", - OutputLevel = INFO, - compositeParticlePDG_ID = 25, # This is a Higgs Boson - inputCollectionList = [ 'MyH4lLooseZeeBosonCollection', 'MyH4lLooseZmumuBosonOffShellCollection' ], - outputCollection = 'MyH4lLooseHiggs2e2muBosonCollection', - minNumberPassed = 1, - massMin = 100.0*Units.GeV - ) - - -# - the Higgs->4mu Boson -from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner -topSequence += D2PDParticleCombiner( "D2PDParticleCombinerInExampleH4lStream_Higgs4muBoson", - OutputLevel = INFO, - compositeParticlePDG_ID = 25, # This is a Higgs Boson - inputCollectionList = [ 'MyH4lLooseZmumuBosonCollection', 'MyH4lLooseZmumuBosonOffShellCollection' ], - outputCollection = 'MyH4lLooseHiggs4muBosonCollection', - minNumberPassed = 1, - massMin = 100.0*Units.GeV - ) - - - - - -#==================================================================== -# Define the test DPD output stream -#==================================================================== -from D2PDMaker.D2PDHelpers import buildFileName -# This stream HAS TO start with "StreamD2AOD_"! If the input was an (D)ESD(M), this should start with "StreamD2ESD(M)_". -# See this twiki for more information: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/DPDNamingConvention -streamName = "StreamD2AOD_H4l" -fileName = D2PDFlags.OutputDirectoryName() + "MyD2PDExampleSimpleH4lStream.pool.root" -ExampleH4lStream = MSMgr.NewPoolStream( streamName, fileName ) - -# Only events that pass the filters listed below are written out -# AcceptAlgs = logical OR of filters -# RequireAlgs = logical AND of filters -ExampleH4lStream.AcceptAlgs( ["ElectronSelectorInExampleH4lStream", - "MuonSelectorInExampleH4lStream", - "D2PDParticleCombinerInExampleH4lStream_ZmumuBoson", - "D2PDParticleCombinerInExampleH4lStream_ZmumuBosonOffShell", - "D2PDParticleCombinerInExampleH4lStream_ZeeBoson", - "D2PDParticleCombinerInExampleH4lStream_ZeeBosonOffShell", - "D2PDParticleCombinerInExampleH4lStream_Higgs4eBoson", - "D2PDParticleCombinerInExampleH4lStream_Higgs2mu2eBoson", - "D2PDParticleCombinerInExampleH4lStream_Higgs2e2muBoson", - "D2PDParticleCombinerInExampleH4lStream_Higgs4muBoson"] ) - - - -#--------------------------------------------------- -# Add the containers to the output stream -#--------------------------------------------------- -from PrimaryDPDMaker import PrimaryDPD_OutputDefinitions as dpdOutput - -# Take all items from the input, except for the ones listed in the excludeList -excludeList = [] -excludeList = list(set(excludeList)) # This removes dublicates from the list -dpdOutput.addAllItemsFromInputExceptExcludeList( streamName, excludeList ) - - -ExampleH4lStream.AddItem( ['INav4MomLinkContainer#MyH4lLooseMuonLinkCollection'] ) -ExampleH4lStream.AddItem( ['INav4MomLinkContainer#MyH4lLooseElectronLinkCollection'] ) - -ExampleH4lStream.AddItem( ['CompositeParticleContainer#MyH4lLooseZmumuBosonCollection'] ) -ExampleH4lStream.AddItem( ['CompositeParticleContainer#MyH4lLooseZmumuBosonOffShellCollection'] ) -ExampleH4lStream.AddItem( ['CompositeParticleContainer#MyH4lLooseZeeBosonCollection'] ) -ExampleH4lStream.AddItem( ['CompositeParticleContainer#MyH4lLooseZeeBosonOffShellCollection'] ) -ExampleH4lStream.AddItem( ['CompositeParticleContainer#MyH4lLooseHiggs4eBosonCollection'] ) -ExampleH4lStream.AddItem( ['CompositeParticleContainer#MyH4lLooseHiggs2mu2eBosonCollection'] ) -ExampleH4lStream.AddItem( ['CompositeParticleContainer#MyH4lLooseHiggs2e2muBosonCollection'] ) -ExampleH4lStream.AddItem( ['CompositeParticleContainer#MyH4lLooseHiggs4muBosonCollection'] ) - - - - diff --git a/PhysicsAnalysis/D2PDMaker/share/D2PD_ExampleSimpleHgamgam.py b/PhysicsAnalysis/D2PDMaker/share/D2PD_ExampleSimpleHgamgam.py deleted file mode 100644 index 2e4b7bd26375c33aa975501d388eaf7e70c827bb..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/share/D2PD_ExampleSimpleHgamgam.py +++ /dev/null @@ -1,121 +0,0 @@ -##----------------------------------------------------------------------------- -## Name: D2PD_ExampleSimpleHgamgam.py -## -## Author: Karsten Koeneke (DESY) -## Email: karsten.koeneke@desy.de -## -## Description: This defines the content of the D2PD example -## H -> gamma gamma output stream. -## -##----------------------------------------------------------------------------- - -## Import the module that allows to use named units, e.g. GeV -import AthenaCommon.SystemOfUnits as Units - -## Include the job property flags for this package and from RecExCommon -from D2PDMaker.D2PDFlags import D2PDFlags - -## This handels multiple output streams -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - - -#---- Load the egammaPID and egammaParameters information -# This is needed to always be up-to-date with the egamma -# IsEM selections and also the author selections -import PyUtils.RootUtils as ru -ROOT = ru.import_root() -import cppyy -cppyy.load_library('libegammaEnumsDict') -from ROOT import egammaPID -from ROOT import egammaParameters - - -#==================================================================== -# Define the individual particle selections -#==================================================================== -# - the electron selector -# Load the actual filter -from D2PDMaker.D2PDMakerConf import D2PDPhotonSelector -# Create an instance of this filter, configure it, and add it to the AlgSequence -topSequence += D2PDPhotonSelector( "PhotonSelectorInExampleSimpleHgamgamStream", - OutputLevel = INFO, - inputCollection = 'PhotonAODCollection', - outputLinkCollection = 'MyHgamgamLoosePhotonLinkCollection', - minNumberPassed = 1, - photonIsEM = egammaPID.PhotonLoose, - photonAcceptAuthorList = [ egammaParameters.AuthorPhoton, egammaParameters.AuthorRConv ], - etMin = 0.0*Units.GeV, - clusterEtaMin = -2.5, - clusterEtaMax = 2.5, - clusterEtaVetoRanges = "[-1.52, -1.37], [1.37, 1.52]" - #egDefaultCaloIsolationDeltaR = 0.20, - #egDefaultAbsoluteCaloEtIsolation = 8.0*Units.GeV - ) - - -#==================================================================== -# Define the particle combinations -#==================================================================== -# - the Z->ee Boson (on-shell) -from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner -topSequence += D2PDParticleCombiner( "D2PDParticleCombinerInExampleSimpleHgamgamStream_HBoson", - OutputLevel = INFO, - compositeParticlePDG_ID = 25, # This is a Higgs Boson - inputCollectionList = [ 'MyHgamgamLoosePhotonLinkCollection', 'MyHgamgamLoosePhotonLinkCollection' ], - outputCollection = 'MyHgamgamLooseHgamgamBosonCollection', - minNumberPassed = 1, - massMin = 100.0*Units.GeV, - massMax = 200.0*Units.GeV - ) - - - -#==================================================================== -# Define the trigger selection -#==================================================================== -include("PrimaryDPDMaker/SetupTrigDecisionTool.py") -from PrimaryDPDMaker.TriggerFilter import TriggerFilter -topSequence += TriggerFilter( "D2PDTriggerFilterInExampleSimpleHgamgamStream_EF_g20", - trigger = "EF_g20" - ) - - - -#==================================================================== -# Define the test DPD output stream -#==================================================================== -from D2PDMaker.D2PDHelpers import buildFileName -# This stream HAS TO start with "StreamD2AOD_"! If the input was an (D)ESD(M), this should start with "StreamD2ESD(M)_". -# See this twiki for more information: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/DPDNamingConvention -streamName = "StreamD2AOD_Hgamgam" -fileName = D2PDFlags.OutputDirectoryName() + "MyD2PDExampleSimpleHgamgamStream.pool.root" -ExampleSimpleHgamgamStream = MSMgr.NewPoolStream( streamName, fileName ) - -# Only events that pass the filters listed below are written out -# AcceptAlgs = logical OR of filters -# RequireAlgs = logical AND of filters -ExampleSimpleHgamgamStream.AcceptAlgs( ["PhotonSelectorInExampleSimpleHgamgamStream", - "D2PDParticleCombinerInExampleSimpleHgamgamStream_HBoson"] ) -ExampleSimpleHgamgamStream.RequireAlgs( ["D2PDTriggerFilterInExampleSimpleHgamgamStream_EF_g20"] ) - - -#--------------------------------------------------- -# Add the containers to the output stream -#--------------------------------------------------- -from PrimaryDPDMaker import PrimaryDPD_OutputDefinitions as dpdOutput - -# Take all items from the input, except for the ones listed in the excludeList -# If the excludeList is empty, all containers from the input file (e.g. AOD) -# are copied to the output file. -excludeList = [] -excludeList = list(set(excludeList)) # This removes dublicates from the list -dpdOutput.addAllItemsFromInputExceptExcludeList( streamName, excludeList ) - - -# You need to add your newly created output containers from above to the output stream -ExampleSimpleHgamgamStream.AddItem( ['CompositeParticleContainer#MyHgamgamLooseHgamgamBosonCollection'] ) -ExampleSimpleHgamgamStream.AddItem( ['INav4MomLinkContainer#MyHgamgamLoosePhotonLinkCollection'] ) - - - - diff --git a/PhysicsAnalysis/D2PDMaker/share/D2PD_ExampleSimpleWmunu.py b/PhysicsAnalysis/D2PDMaker/share/D2PD_ExampleSimpleWmunu.py deleted file mode 100644 index 4a6ad9fcac5c4a3430f3f6c2bb615e69cd34edef..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/share/D2PD_ExampleSimpleWmunu.py +++ /dev/null @@ -1,122 +0,0 @@ -##----------------------------------------------------------------------------- -## Name: D2PD_ExampleSimpleWmunu.py -## -## Author: Karsten Koeneke (DESY) -## Email: karsten.koeneke@desy.de -## -## Description: This defines the content of the D2PD example -## W -> mu nu output stream. -## -##----------------------------------------------------------------------------- - -## Import the module that allows to use named units, e.g. GeV -import AthenaCommon.SystemOfUnits as Units - -## Include the job property flags for this package and from RecExCommon -from D2PDMaker.D2PDFlags import D2PDFlags -from RecExConfig.RecFlags import rec - -## This handels multiple output streams -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - - - -#==================================================================== -# Define the individual particle selections -#==================================================================== -# - the electron selector -# Load the actual filter -from D2PDMaker.D2PDMakerConf import D2PDMuonSelector -# Create an instance of this filter and add it to the AlgSequence -# Also, configure the filter to your needs. This are just some examples -topSequence += D2PDMuonSelector( "MuonSelectorInExampleSimpleWmunuStream", - OutputLevel = INFO, - inputCollection = 'StacoMuonCollection', - outputLinkCollection = 'MyWmunuLooseMuonLinkCollection', - minNumberPassed = 1, - etMin = 10.0*Units.GeV, - etaMin = -2.5, - etaMax = 2.5, - ) - - -#==================================================================== -# Define the particle combinations -#==================================================================== -# - the W->mu nu Boson (on-shell) -from D2PDMaker.D2PDMakerConf import D2PDLeptonNeutrinoCombiner -topSequence += D2PDLeptonNeutrinoCombiner( "D2PDLeptonNeutrinoCombinerInExampleSimpleWmunuStream_WmunuBoson", - OutputLevel = INFO, - compositeParticlePDG_ID = 24, # This is a W Boson - inputCollection = 'MET_RefFinal', - inputLeptonCollection = 'MyWmunuLooseMuonLinkCollection', - outputNeutrinoCollection = 'MyWmunuNeutrinoCollection', - outputNeutrinoLinkCollection = 'MyWmunuNeutrinoLinkCollection', - outputCollection = 'MyWmunuLooseWmunuBosonCollection', - minNumberPassed = 1, - missingEtMin = 20.0*Units.GeV, - massMin = 64.0*Units.GeV, - massMax = 104.0*Units.GeV - ) - - - - -#==================================================================== -# Define the test DPD output stream -#==================================================================== -from D2PDMaker.D2PDHelpers import buildFileName -# This stream HAS TO start with "StreamD2AODM_"! If the input was an (D)ESD(M), this should start with "StreamD2ESD(M)_". -# See this twiki for more information: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/DPDNamingConvention -streamName = "StreamD2AODM_Wmunu" -fileName = D2PDFlags.OutputDirectoryName() + "MyD2PDExampleSimpleWmunuStream.pool.root" -ExampleSimpleWmunuStream = MSMgr.NewPoolStream( streamName, fileName ) - -# Only events that pass the filters listed below are written out -# AcceptAlgs = logical OR of filters -# RequireAlgs = logical AND of filters -ExampleSimpleWmunuStream.AcceptAlgs( ["MuonSelectorInExampleSimpleWmunuStream", - "D2PDLeptonNeutrinoCombinerInExampleSimpleWmunuStream_WmunuBoson"] ) - - - -#--------------------------------------------------- -# Add the containers to the output stream -#--------------------------------------------------- -from PrimaryDPDMaker import PrimaryDPD_OutputDefinitions as dpdOutput - -# Take all items from the input, except for the ones listed in the excludeList -# If the excludeList is empty, all containers from the input file (e.g. AOD) -# are copied to the output file. -excludeList = [] -excludeList = list(set(excludeList)) # This removes dublicates from the list -#dpdOutput.addAllItemsFromInputExceptExcludeList( streamName, excludeList ) - -# Just copy a few containers by hand. This way is rather dangerous because -# if you have a typo in the string or if a container name in the AOD changes, -# you will loose this one in the output container! -ExampleSimpleWmunuStream.AddItem( ['EventInfo#*'] ) -ExampleSimpleWmunuStream.AddItem( ["egammaContainer#ElectronAODCollection"] ) -ExampleSimpleWmunuStream.AddItem( ["egammaContainer#PhotonAODCollection"] ) -ExampleSimpleWmunuStream.AddItem( ["egDetailContainer#egDetailAOD"] ) -ExampleSimpleWmunuStream.AddItem( ["egDetailContainer#egDetailAOD"] ) -ExampleSimpleWmunuStream.AddItem( ["egDetailContainer#egDetailContainer"] ) -ExampleSimpleWmunuStream.AddItem( ["egDetailContainer#SofteDetailContainer"] ) -ExampleSimpleWmunuStream.AddItem( ["Analysis::MuonContainer#StacoMuonCollection"] ) -ExampleSimpleWmunuStream.AddItem( ["Analysis::MuonContainer#MuidMuonCollection"] ) -ExampleSimpleWmunuStream.AddItem( ["Analysis::TauJetContainer#TauRecContainer"] ) -ExampleSimpleWmunuStream.AddItem( ["JetCollection#Cone4TowerJets"] ) -ExampleSimpleWmunuStream.AddItem( ["JetCollection#Cone4TopoJets"] ) -ExampleSimpleWmunuStream.AddItem( ["JetCollection#Cone7TowerJets"] ) -ExampleSimpleWmunuStream.AddItem( ["JetKeyDescriptor#JetKeyMap"] ) - - -# You need to add your newly created output containers from above to the output stream -ExampleSimpleWmunuStream.AddItem( ['CompositeParticleContainer#MyWmunuLooseWmunuBosonCollection'] ) -ExampleSimpleWmunuStream.AddItem( ['NeutrinoContainer#MyWmunuNeutrinoCollection'] ) -ExampleSimpleWmunuStream.AddItem( ['INav4MomLinkContainer#MyWmunuLooseMuonLinkCollection'] ) -ExampleSimpleWmunuStream.AddItem( ['INav4MomLinkContainer#MyWmunuNeutrinoLinkCollection'] ) - - - - diff --git a/PhysicsAnalysis/D2PDMaker/share/D2PD_ExampleSimpleZee.py b/PhysicsAnalysis/D2PDMaker/share/D2PD_ExampleSimpleZee.py deleted file mode 100644 index 33315d6a78556d542d23167b80b1fac7668520f2..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/share/D2PD_ExampleSimpleZee.py +++ /dev/null @@ -1,128 +0,0 @@ -##----------------------------------------------------------------------------- -## Name: D2PD_ExampleSimpleZee.py -## -## Author: Karsten Koeneke (DESY) -## Email: karsten.koeneke@desy.de -## -## Description: This defines the content of the D2PD example -## Z -> ee output stream. -## -##----------------------------------------------------------------------------- - -## Import the module that allows to use named units, e.g. GeV -import AthenaCommon.SystemOfUnits as Units - -## Include the job property flags for this package and from RecExCommon -from D2PDMaker.D2PDFlags import D2PDFlags -from RecExConfig.RecFlags import rec - -## This handels multiple output streams -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - - -#---- Load the egammaPID and egammaParameters information -# This is needed to always be up-to-date with the egamma -# IsEM selections and also the author selections -import PyUtils.RootUtils as ru -ROOT = ru.import_root() -import cppyy -cppyy.load_library('libegammaEnumsDict') -from ROOT import egammaPID -from ROOT import egammaParameters - - -#==================================================================== -# Define the individual particle selections -#==================================================================== -# - the electron selector -# Load the actual filter -from D2PDMaker.D2PDMakerConf import D2PDElectronSelector -# Create an instance of this filter and add it to the AlgSequence -# Also, configure the filter to your needs. This are just some examples -topSequence += D2PDElectronSelector( "ElectronSelectorInExampleSimpleZeeStream", - OutputLevel = INFO, - inputCollection = 'ElectronAODCollection', - outputLinkCollection = 'MyZeeLooseElectronLinkCollection', - minNumberPassed = 1, - electronIsEM = egammaPID.ElectronLoose, - electronAuthor = egammaParameters.AuthorElectron, - etMin = 15.0*Units.GeV, - clusterEtaMin = -2.5, - clusterEtaMax = 2.5, - clusterEtaVetoRanges = "[-1.52, -1.37], [1.37, 1.52]", - ) - - - -#==================================================================== -# Define the particle combinations -#==================================================================== -# - the Z->ee Boson (on-shell) -from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner -topSequence += D2PDParticleCombiner( "D2PDParticleCombinerInExampleSimpleZeeStream_ZeeBoson", - OutputLevel = INFO, - compositeParticlePDG_ID = 23, # This is a Z Boson - inputCollectionList = [ 'MyZeeLooseElectronLinkCollection', 'MyZeeLooseElectronLinkCollection' ], - outputCollection = 'MyZeeLooseZeeBosonCollection', - minNumberPassed = 1, - chargeMax = 0, - massMin = 30.0*Units.GeV, - massMax = 200.0*Units.GeV - ) - - - -#==================================================================== -# Define the test DPD output stream -#==================================================================== -from D2PDMaker.D2PDHelpers import buildFileName -# This stream HAS TO start with "StreamD2AODM_"! If the input was an (D)ESD(M), this should start with "StreamD2ESD(M)_". -# See this twiki for more information: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/DPDNamingConvention -streamName = "StreamD2AODM_MyZee" -fileName = D2PDFlags.OutputDirectoryName() + "MyD2PDExampleSimpleZeeStream.pool.root" -ExampleSimpleZeeStream = MSMgr.NewPoolStream( streamName, fileName ) - -# Only events that pass the filters listed below are written out -# AcceptAlgs = logical OR of filters -# RequireAlgs = logical AND of filters -ExampleSimpleZeeStream.AcceptAlgs( ["D2PDParticleCombinerInExampleSimpleZeeStream_ZeeBoson"] ) - - - -#--------------------------------------------------- -# Add the containers to the output stream -#--------------------------------------------------- -from PrimaryDPDMaker import PrimaryDPD_OutputDefinitions as dpdOutput - -# Take all items from the input, except for the ones listed in the excludeList -# If the excludeList is empty, all containers from the input file (e.g. AOD) -# are copied to the output file. -excludeList = [] -excludeList = list(set(excludeList)) # This removes dublicates from the list -#dpdOutput.addAllItemsFromInputExceptExcludeList( streamName, excludeList ) - -# Just copy a few containers by hand. This way is rather dangerous because -# if you have a typo in the string or if a container name in the AOD changes, -# you will loose this one in the output container! -ExampleSimpleZeeStream.AddItem( ['EventInfo#*'] ) -ExampleSimpleZeeStream.AddItem( ["egammaContainer#ElectronAODCollection"] ) -ExampleSimpleZeeStream.AddItem( ["egammaContainer#PhotonAODCollection"] ) -ExampleSimpleZeeStream.AddItem( ["egDetailContainer#egDetailAOD"] ) -ExampleSimpleZeeStream.AddItem( ["egDetailContainer#egDetailAOD"] ) -ExampleSimpleZeeStream.AddItem( ["egDetailContainer#egDetailContainer"] ) -ExampleSimpleZeeStream.AddItem( ["egDetailContainer#SofteDetailContainer"] ) -ExampleSimpleZeeStream.AddItem( ["CaloClusterContainer#egClusterCollection"] ) -ExampleSimpleZeeStream.AddItem( ["Analysis::MuonContainer#StacoMuonCollection"] ) -ExampleSimpleZeeStream.AddItem( ["Analysis::MuonContainer#MuidMuonCollection"] ) -ExampleSimpleZeeStream.AddItem( ["Analysis::TauJetContainer#TauRecContainer"] ) -ExampleSimpleZeeStream.AddItem( ["JetCollection#AntiKt4TopoEMJets"] ) -ExampleSimpleZeeStream.AddItem( ["JetKeyDescriptor#JetKeyMap"] ) -ExampleSimpleZeeStream.AddItem( ["Rec::TrackParticleContainer#TrackParticleCandidate"] ) - -# You need to add your newly created output containers from above to the output stream -ExampleSimpleZeeStream.AddItem( ['CompositeParticleContainer#MyZeeLooseZeeBosonCollection'] ) -ExampleSimpleZeeStream.AddItem( ['INav4MomLinkContainer#MyZeeLooseElectronLinkCollection'] ) - - - - diff --git a/PhysicsAnalysis/D2PDMaker/share/D2PD_ExampleSimpleZmumu.py b/PhysicsAnalysis/D2PDMaker/share/D2PD_ExampleSimpleZmumu.py deleted file mode 100644 index 89e9a4b1a72bb71eb6032651a145c4e8854e121a..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/share/D2PD_ExampleSimpleZmumu.py +++ /dev/null @@ -1,110 +0,0 @@ -##----------------------------------------------------------------------------- -## Name: D2PD_ExampleSimpleZmumu.py -## -## Author: Karsten Koeneke (DESY) -## Email: karsten.koeneke@desy.de -## -## Description: This defines the content of the D2PD example -## Z -> mumu output stream. -## -##----------------------------------------------------------------------------- - -## Import the module that allows to use named units, e.g. GeV -import AthenaCommon.SystemOfUnits as Units - -## Include the job property flags for this package and from RecExCommon -from D2PDMaker.D2PDFlags import D2PDFlags -from RecExConfig.RecFlags import rec - -## This handels multiple output streams -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - - -#==================================================================== -# Define the individual particle selections -#==================================================================== -# - the muon selector -# Load the actual filter -from D2PDMaker.D2PDMakerConf import D2PDMuonSelector -# Create an instance of this filter and add it to the AlgSequence -# Also, configure the filter to your needs. This are just some examples -topSequence += D2PDMuonSelector( "MuonSelectorInExampleSimpleZmumuStream", - OutputLevel = INFO, - inputCollection = 'MuidMuonCollection', - outputLinkCollection = 'MyZmumuTightMuonLinkCollection', - minNumberPassed = 2, - ptMin = 15.0*Units.GeV, - muonRequireIsTight = True, - etaMin = -2.5, - etaMax = 2.5 - ) - - - -#==================================================================== -# Define the particle combinations -#==================================================================== -# - the Z->mumu Boson (on-shell) -from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner -topSequence += D2PDParticleCombiner( "D2PDParticleCombinerInExampleSimpleZmumuStream_ZmumuBoson", - OutputLevel = INFO, - compositeParticlePDG_ID = 23, # This is a Z Boson - inputCollectionList = [ 'MyZmumuTightMuonLinkCollection', - 'MyZmumuTightMuonLinkCollection' ], - outputCollection = 'MyZmumuLooseZmumuBosonCollection', - minNumberPassed = 1, - chargeMax = 0, - massMin = 30.0*Units.GeV - ) - - - -#==================================================================== -# Define the test DPD output stream -#==================================================================== -from D2PDMaker.D2PDHelpers import buildFileName -# This stream HAS TO start with "StreamD2AODM_"! If the input was an (D)ESD(M), this should start with "StreamD2ESD(M)_". -# See this twiki for more information: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/DPDNamingConvention -streamName = "StreamD2AODM_MyZmumu" -fileName = D2PDFlags.OutputDirectoryName() + "MyD2PDExampleSimpleZmumuStream.pool.root" -ExampleSimpleZmumuStream = MSMgr.NewPoolStream( streamName, fileName ) - -# Only events that pass the filters listed below are written out -# AcceptAlgs = logical OR of filters -# RequireAlgs = logical AND of filters -ExampleSimpleZmumuStream.AcceptAlgs( ["D2PDParticleCombinerInExampleSimpleZmumuStream_ZmumuBoson"] ) - - - -#--------------------------------------------------- -# Add the containers to the output stream -#--------------------------------------------------- -from PrimaryDPDMaker import PrimaryDPD_OutputDefinitions as dpdOutput - -# Take all items from the input, except for the ones listed in the excludeList -# If the excludeList is empty, all containers from the input file (e.g. AOD) -# are copied to the output file. -excludeList = [] -excludeList = list(set(excludeList)) # This removes dublicates from the list -#dpdOutput.addAllItemsFromInputExceptExcludeList( streamName, excludeList ) - -# Just copy a few containers by hand. This way is rather dangerous because -# if you have a typo in the string or if a container name in the AOD changes, -# you will loose this one in the output container! -ExampleSimpleZmumuStream.AddItem( ['EventInfo#*'] ) -ExampleSimpleZmumuStream.AddItem( ["egammaContainer#ElectronAODCollection"] ) -ExampleSimpleZmumuStream.AddItem( ["egammaContainer#PhotonAODCollection"] ) -ExampleSimpleZmumuStream.AddItem( ["Analysis::MuonContainer#StacoMuonCollection"] ) -ExampleSimpleZmumuStream.AddItem( ["Analysis::MuonContainer#MuidMuonCollection"] ) -ExampleSimpleZmumuStream.AddItem( ["Analysis::TauJetContainer#TauRecContainer"] ) -ExampleSimpleZmumuStream.AddItem( ["JetCollection#AntiKt4TopoEMJets"] ) -ExampleSimpleZmumuStream.AddItem( ["JetKeyDescriptor#JetKeyMap"] ) -ExampleSimpleZmumuStream.AddItem( ["Rec::TrackParticleContainer#TrackParticleCandidate"] ) - -# You need to add your newly created output containers from above to the output stream -ExampleSimpleZmumuStream.AddItem( ['CompositeParticleContainer#MyZmumuLooseZmumuBosonCollection'] ) -ExampleSimpleZmumuStream.AddItem( ['INav4MomLinkContainer#MyZmumuTightMuonLinkCollection'] ) - - - - diff --git a/PhysicsAnalysis/D2PDMaker/share/D2PD_ExampleSimpleZtautau.py b/PhysicsAnalysis/D2PDMaker/share/D2PD_ExampleSimpleZtautau.py deleted file mode 100644 index 4af042ed809f5ae6920e535f6382a19bb002d8e4..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/share/D2PD_ExampleSimpleZtautau.py +++ /dev/null @@ -1,123 +0,0 @@ -##----------------------------------------------------------------------------- -## Name: D2PD_ExampleSimpleZtautau.py -## -## Author: Karsten Koeneke (DESY) -## Email: karsten.koeneke@desy.de -## -## Description: This defines the content of the D2PD example -## Z -> tau tau output stream. -## -##----------------------------------------------------------------------------- - -## Import the module that allows to use named units, e.g. GeV -import AthenaCommon.SystemOfUnits as Units - -## Include the job property flags for this package and from RecExCommon -from D2PDMaker.D2PDFlags import D2PDFlags -from RecExConfig.RecFlags import rec - -## This handels multiple output streams -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - - - -#==================================================================== -# Define the individual particle selections -#==================================================================== -# - the electron selector -# Load the actual filter -from D2PDMaker.D2PDMakerConf import D2PDTauSelector -# Create an instance of this filter and add it to the AlgSequence -# Also, configure the filter to your needs. This are just some examples -topSequence += D2PDTauSelector( "TauSelectorInExampleSimpleZtautauStream", - OutputLevel = INFO, - inputCollection = 'TauJetContainer', - outputLinkCollection = 'MyZtautauLooseTauLinkCollection', - minNumberPassed = 1, - #tauIsTau = TauJetParameters.TauCutSafeMedium, - #tauAuthor = TauJetParameters.tauRec, - etMin = 15.0*Units.GeV, - etaMin = -2.5, - etaMax = 2.5, - etaVetoRanges = "[-1.52, -1.37], [1.37, 1.52]", - acceptChargeList = [ 1 ], - allowChargeConjugate = True, - acceptNumberOfTracksList = [ 1, 3 ] - ) - - - -#==================================================================== -# Define the particle combinations -#==================================================================== -# - the Z->ee Boson (on-shell) -from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner -topSequence += D2PDParticleCombiner( "D2PDParticleCombinerInExampleSimpleZtautauStream_ZtautauBoson", - OutputLevel = INFO, - compositeParticlePDG_ID = 23, # This is a Z Boson - inputCollectionList = [ 'MyZtautauLooseTauLinkCollection', 'MyZtautauLooseTauLinkCollection' ], - outputCollection = 'MyZtautauLooseZtautauBosonCollection', - minNumberPassed = 1, - chargeMax = 0, - massMin = 70.0*Units.GeV, - massMax = 110.0*Units.GeV - ) - - - -#==================================================================== -# Define the test DPD output stream -#==================================================================== -from D2PDMaker.D2PDHelpers import buildFileName -# This stream HAS TO start with "StreamD2AODM_"! If the input was an (D)ESD(M), this should start with "StreamD2ESD(M)_". -# See this twiki for more information: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/DPDNamingConvention -streamName = "StreamD2AODM_MyZtautau" -fileName = D2PDFlags.OutputDirectoryName() + "MyD2PDExampleSimpleZtautauStream.pool.root" -ExampleSimpleZtautauStream = MSMgr.NewPoolStream( streamName, fileName ) - -# Only events that pass the filters listed below are written out -# AcceptAlgs = logical OR of filters -# RequireAlgs = logical AND of filters -ExampleSimpleZtautauStream.AcceptAlgs( ["TauSelectorInExampleSimpleZtautauStream", - "D2PDParticleCombinerInExampleSimpleZtautauStream_ZtautauBoson"] ) - - - -#--------------------------------------------------- -# Add the containers to the output stream -#--------------------------------------------------- -from PrimaryDPDMaker import PrimaryDPD_OutputDefinitions as dpdOutput - -# Take all items from the input, except for the ones listed in the excludeList -# If the excludeList is empty, all containers from the input file (e.g. AOD) -# are copied to the output file. -excludeList = [] -excludeList = list(set(excludeList)) # This removes dublicates from the list -#dpdOutput.addAllItemsFromInputExceptExcludeList( streamName, excludeList ) - -# Just copy a few containers by hand. This way is rather dangerous because -# if you have a typo in the string or if a container name in the AOD changes, -# you will loose this one in the output container! -ExampleSimpleZtautauStream.AddItem( ['EventInfo#*'] ) -ExampleSimpleZtautauStream.AddItem( ["egammaContainer#TauAODCollection"] ) -ExampleSimpleZtautauStream.AddItem( ["egammaContainer#PhotonAODCollection"] ) -ExampleSimpleZtautauStream.AddItem( ["egDetailContainer#egDetailAOD"] ) -ExampleSimpleZtautauStream.AddItem( ["egDetailContainer#egDetailAOD"] ) -ExampleSimpleZtautauStream.AddItem( ["egDetailContainer#egDetailContainer"] ) -ExampleSimpleZtautauStream.AddItem( ["egDetailContainer#SofteDetailContainer"] ) -ExampleSimpleZtautauStream.AddItem( ["Analysis::MuonContainer#StacoMuonCollection"] ) -ExampleSimpleZtautauStream.AddItem( ["Analysis::MuonContainer#MuidMuonCollection"] ) -ExampleSimpleZtautauStream.AddItem( ["Analysis::TauJetContainer#TauRecContainer"] ) -ExampleSimpleZtautauStream.AddItem( ["JetCollection#Cone4TowerJets"] ) -ExampleSimpleZtautauStream.AddItem( ["JetCollection#Cone4TopoJets"] ) -ExampleSimpleZtautauStream.AddItem( ["JetCollection#Cone7TowerJets"] ) -ExampleSimpleZtautauStream.AddItem( ["JetKeyDescriptor#JetKeyMap"] ) -ExampleSimpleZtautauStream.AddItem( ["Rec::TrackParticleContainer#TrackParticleCandidate"] ) - -# You need to add your newly created output containers from above to the output stream -ExampleSimpleZtautauStream.AddItem( ['CompositeParticleContainer#MyZtautauLooseZtautauBosonCollection'] ) -ExampleSimpleZtautauStream.AddItem( ['INav4MomLinkContainer#MyZtautauLooseTauLinkCollection'] ) - - - - diff --git a/PhysicsAnalysis/D2PDMaker/share/D2PD_Test.py b/PhysicsAnalysis/D2PDMaker/share/D2PD_Test.py deleted file mode 100644 index 57995788d1f5a9eb2126f0223246f91ded98b13d..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/share/D2PD_Test.py +++ /dev/null @@ -1,188 +0,0 @@ -##----------------------------------------------------------------------------- -## Name: D2PD_Test.py -## -## Author: Karsten Koeneke (DESY) -## Email: karsten.koeneke@desy.de -## -## Description: This defines the content of the D2PD Test output stream. -## -##----------------------------------------------------------------------------- - -## for messaging -from AthenaCommon.Logging import logging -testD2PD_msg = logging.getLogger( 'D2PD_TestStream' ) - -## Import the module that allows to use named units, e.g. GeV -import AthenaCommon.SystemOfUnits as Units - -## Include the job property flags for this package and from RecExCommon -from D2PDMaker.D2PDFlags import D2PDFlags -from RecExConfig.RecFlags import rec - -## This handels multiple output streams -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - - - - -#---- Track Isolation -# This is needed to initialize the TrackIsolationTool properly. -# Without this, there will be ERRORs! -#include( "TrackIsolationTools/TrackIsolationTool_jobOptions.py" ) - -#---- Muon Isolation -# This is needed to initialize the MuonIsolationTool properly. -# Without this, there will be ERRORs! -#include( "MuonIsolationTools/MuonIsolationTool_jobOptions.py" ) - -#---- Load the egammaPID and egammaParameters information -# This is needed to always be up-to-date with the egamma -# IsEM selections and also the author selections -import PyUtils.RootUtils as ru -ROOT = ru.import_root() -import cppyy -cppyy.load_library('libegammaEnumsDict') -from ROOT import egammaPID -from ROOT import egammaParameters - -#---- Load the TauJetParameters -# This is needed to always be up-to-date with the tau -# ID selections and also the author selections -# This only works starting with tauEvent-00-05-21!!! -#cppyy.load_library('libtauEventEnumsDict') -#from ROOT import TauJetParameters - - - - -# ==================================================================== -# Test AODSelect -# ==================================================================== -#from AODSelect.AODSelectFlags import AODSelectFlags -#AODSelectFlags.doAll = True - -#AODSelectFlags.doLooseCleanJetBuilding.add( inputItem = "JetCollection#AntiKt4TopoEMJets", -# createOutputCollection = True, -# createOutputLinkCollection = True ) - -#AODSelectFlags.doLooseCleanJetFlagging.add( inputItem = "JetCollection#AntiKt4TopoEMJets" ) - -#AODSelectFlags.doOfflineMatching.add( inputItem = "ElectronContainer#ElectronAODCollection", -# matchToItemList = [ "JetCollection#AntiKt4TopoEMJets", -# "Analysis::MuonContainer#MuidMuonCollection" ] ) - -#AODSelectFlags.doOfflineMatching.add( inputItem = "Analysis::MuonContainer#MuidMuonCollection", -# matchToItemList = [ "ElectronContainer#ElectronAODCollection", -# "PhotonContainer#PhotonAODCollection" ], -# matchDistanceList = [ 0.2, 0.2 ] ) - -#AODSelectFlags.doTriggerMatching.add( inputItem = "ElectronContainer#ElectronAODCollection", -# matchToItemList = [ "EF_e20_medium", "EF_e20_medium1", -# "EF_e22_medium", "EF_e22_medium1", -# "EF_e22vh_medium1", "EF_2e12_medium", -# "EF_2e12T_medium", "EF_2e12Tvh_medium" ], -# matchDistanceList = [ 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15 ]) - -#AODSelectFlags.doTruthMatching.add( inputItem = "PhotonContainer#PhotonAODCollection" ) -#AODSelectFlags.doTruthMatching.add( inputItem = "ElectronContainer#ElectronAODCollection" ) - -#AODSelectFlags.print_JobProperties() - - - - - -# ==================================================================== -# Test possible bug -# ==================================================================== -# Truth pre-selector (this way, only one loop over the SpclMC container is needed per event -> faster) -from D2PDMaker.D2PDMakerConf import D2PDTruthParticleSelector -topSequence += D2PDTruthParticleSelector( "TruthPreSelectorInH4lBremRecoStream", - OutputLevel = INFO, - inputCollection = 'SpclMC', - outputLinkCollection = 'TruthParticlePreSelectedLinkCollection', - minNumberPassed = 1, - pdgIDList = [ 4, 5, 6, 11, 12, 13, 14, 15, 16, 22, 23, 24, 25 ], # c, b, t, e, nu_e, mu, nu_mu, tau, nu_tau, gamma, Z, W, H - removeDocumentationLine = False, - keepOnlyGenerator = True, - keepOnlyStable = False, - removeSelfDecay = True - ) - -# Truth-electron selector: -topSequence += D2PDTruthParticleSelector( "TruthLeptonSelectorInH4lBremRecoStream", - OutputLevel = VERBOSE, - inputCollection = 'TruthParticlePreSelectedLinkCollection', - outputLinkCollection = 'TruthLeptonFromBosonLinkCollection', - minNumberPassed = 2, - pdgIDList = [ 11, 13 ], # e-, e+, mu+, mu- - pdgIDListOrigin = [ 23, 24, 25 ], # Z, W, H boson - acceptStatusCodeList = [ 1 ], # stable - removeDocumentationLine = True, - keepOnlyGenerator = True, - keepOnlyStable = True, - removeSelfDecay = True - ) - - - - -#==================================================================== -# Define the test DPD output stream -#==================================================================== -from D2PDMaker.D2PDHelpers import buildFileName -# This stream HAS TO start with "StreamD2AODM_"! If the input was an (D)ESD(M), this should start with "StreamD2ESD(M)_". -# See this twiki for more information: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/DPDNamingConvention -streamName = "StreamD2AODM_Test" -fileName = D2PDFlags.OutputDirectoryName() + "MyD2PDTestStream.pool.root" -TestStream = MSMgr.NewPoolStream( streamName, fileName ) - -# Only events that pass the filters listed below are written out -# AcceptAlgs = logical OR of filters -# RequireAlgs = logical AND of filters -TestStream.AcceptAlgs( [] ) - - - - -#--------------------------------------------------- -# Add the containers to the output stream -#--------------------------------------------------- -#from PrimaryDPDMaker import PrimaryDPD_OutputDefinitions as dpdOutput - -# Take all items from the input, except for the ones listed in the excludeList -#excludeList = [] -#excludeList = list(set(excludeList)) # This removes dublicates from the list -#dpdOutput.addAllItemsFromInputExceptExcludeList( streamName, excludeList ) - -#TestStream.AddItem( ['ElectronContainer#*'] ) -#TestStream.AddItem( ['INav4MomLinkContainer#*'] ) -#TestStream.AddItem( ['INav4MomAssocs#*'] ) - -#TestStream.AddItem( ['Rec::TrackParticleContainer#GSFTrackParticleCandidate'] ) -#TestStream.AddItem( ["Rec::TrackParticleContainer#TrackParticleCandidate"] ) -#TestStream.AddItem( ["CaloClusterContainer#CaloCalTopoCluster"] ) - -TestStream.AddItem( ['PhotonContainer#*'] ) -TestStream.AddItem( ['ElectronContainer#*'] ) -TestStream.AddItem( ['Analysis::MuonContainer#*'] ) -TestStream.AddItem( ['Analysis::TauJetContainer#*'] ) -#TestStream.AddItem( ['JetCollection#*'] ) -TestStream.AddItem( ['JetCollection#AntiKt4TopoEMJets'] ) -#TestStream.AddItem( ['JetCollection#AntiKt4TopoJets'] ) -#TestStream.AddItem( ['JetCollection#AntiKt4LCTopoJets'] ) -#TestStream.AddItem( ['JetCollection#AntiKt4TowerAODJets'] ) -#TestStream.AddItem( ['JetCollection#AntiKt6TowerAODJets'] ) -#TestStream.AddItem( ['JetCollection#AntiKt6LCTopoJets'] ) -#TestStream.AddItem( ['JetCollection#AntiKt6TopoEMJets'] ) -#TestStream.AddItem( ['JetCollection#AntiKt6TopoJets'] ) -TestStream.AddItem( ['JetCollection#VeryLoose*'] ) -TestStream.AddItem( ['JetCollection#Loose*'] ) -TestStream.AddItem( ['JetCollection#Medium*'] ) -TestStream.AddItem( ['JetCollection#Tight*'] ) -TestStream.AddItem( ['UserDataStore#*'] ) -TestStream.AddItem( ['INav4MomLinkContainer#*'] ) -TestStream.AddItem( ['INav4MomAssocs#*'] ) - - - diff --git a/PhysicsAnalysis/D2PDMaker/share/D2PD_WenuStream.py b/PhysicsAnalysis/D2PDMaker/share/D2PD_WenuStream.py deleted file mode 100644 index 3bbd6e2531ec79b0a953b4c2a48dda0185333ea2..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/share/D2PD_WenuStream.py +++ /dev/null @@ -1,744 +0,0 @@ -##----------------------------------------------------------------------------- -## Name: D2PD_Wenu.py -## -## Author: Karsten Koeneke (DESY) -## Email: karsten.koeneke@desy.de -## -## Description: This defines the content of the D2PD example -## Z -> ee output stream. -## -##----------------------------------------------------------------------------- - -# Include the job property flags for this package and from RecExCommon -from D2PDMaker.D2PDFlags import D2PDFlags -from RecExConfig.RecFlags import rec - -# for messaging -from AthenaCommon.Logging import logging -wenuDPD_msg = logging.getLogger( 'D2PD_WENU' ) -wenuDPD_msg.info( 'Starting configuration of %s' % D2PDFlags.WriteD2AOD_WENUStream.StreamName ) - -## Import the module that allows to use named units, e.g. GeV -import AthenaCommon.SystemOfUnits as Units - -## Include the job property flags for this package and from RecExCommon -from D2PDMaker.D2PDFlags import D2PDFlags -from RecExConfig.RecFlags import rec - -## This handels multiple output streams -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - -# Import the LogicalFilterCombiner -from PrimaryDPDMaker.LogicalFilterCombiner import LogicalFilterCombiner - - -#---- Load the egammaPID and egammaParameters information -# This is needed to always be up-to-date with the egamma -# IsEM selections and also the author selections -import PyUtils.RootUtils as ru -ROOT = ru.import_root() -import cppyy -cppyy.load_library('libegammaEnumsDict') -from ROOT import egammaPID -from ROOT import egammaParameters - - - -#==================================================================== -# Define an empty list for bookkeeping -#==================================================================== -algsToBookkeep = [] - - -#==================================================================== -# Check if we have Monte Carlo or real data, based on the inputFileSummary -#==================================================================== -inputIsSimulation = False -if inputFileSummary.has_key("evt_type"): - eventTypeList = inputFileSummary.get("evt_type") - if eventTypeList.__contains__("IS_SIMULATION") : - print "Detected that the input file is a simulated dataset" - inputIsSimulation = True - pass - pass - - -# Check for the presence of GEN_AOD, TruthEvent (ESD), GEN_EVENT, and SpclMC: -hasSpclMC = False -mcEventCollectionForMCTruthClassifier = "" -if inputIsSimulation : - mcEventColls = "" - if inputFileSummary.has_key("eventdata_itemsDic"): - eventDic = inputFileSummary.get('eventdata_itemsDic') - mcEventColls = eventDic['McEventCollection'] - if mcEventColls.__contains__("GEN_AOD") : - mcEventCollectionForMCTruthClassifier = "GEN_AOD" - pass - elif mcEventColls.__contains__("TruthEvent") : - mcEventCollectionForMCTruthClassifier = "TruthEvent" - pass - elif mcEventColls.__contains__("GEN_EVENT") : - mcEventCollectionForMCTruthClassifier = "GEN_EVENT" - pass - truthPartColls = eventDic['TruthParticleContainer'] - if truthPartColls.__contains__("SpclMC") : - hasSpclMC = True - pass - pass - # Print a error message if no MCEventCollection is found - if mcEventCollectionForMCTruthClassifier == "" : - wenuDPD_msg.error( "No MCEventCollection found even though the input file is simulation!" ) - wenuDPD_msg.error( "These are the McEventCollections from the input file: %s" % mcEventColls ) - pass - pass - - - - - -#==================================================================== -# Do the good run list (GRL) selection --- only for data -#==================================================================== -cmdString_GRL = "" -if not inputIsSimulation and False: - # use closest DB replica - from PoolSvc.PoolSvcConf import PoolSvc - svcMgr += PoolSvc(SortReplicas=True) - from DBReplicaSvc.DBReplicaSvcConf import DBReplicaSvc - svcMgr += DBReplicaSvc(UseCOOLSQLite=False) - - # Try to copy the GRL locally - import socket - socket.setdefaulttimeout(180) - import urllib - remoteGRL = D2PDFlags.GRLFile() - localGRL = "data10_7TeV.pro05.merged_LBSUMM_WZjets_allchannels.xml" - urllib.urlretrieve( remoteGRL, localGRL ) - - # Create an instance of the GoodRunsListSelectorTool - from GoodRunsLists.GoodRunsListsConf import * - ToolSvc += GoodRunsListSelectorTool( "GoodRunsListSelectorTool", - OutputLevel = INFO, - GoodRunsListVec = [ 'data10_7TeV.pro05.merged_LBSUMM_WZjets_allchannels.xml' ], ## specify your grl here - PassThrough = False - ) - - # Use the GRLTriggerSelectorAlg - from GoodRunsListsUser.GoodRunsListsUserConf import * - topSequence += GRLTriggerSelectorAlg( "GRLFilterInWenuStream", - OutputLevel = INFO, - GoodRunsListArray = [ 'WZjets_allchannels' ] ## GRL name from the above xml-file - ) - - #theApp.getHandle().Dlls += ['XMLCoreParser'] ## Hack to avoid library mismatch after importing the GRL stuff - - algsToBookkeep.append( "GRLFilterInWenuStream" ) - #-------------------------------------------------------------------- - # Set up the cumulative cut-flow for the standard pre-selection. - # This will use the Logical Filter Combiners to add individual cuts. - #-------------------------------------------------------------------- - cmdString_GRL += "GRLFilterInWenuStream and " - pass # End: if not inputIsSimulation - - - - - - -#==================================================================== -# Do the PrimaryVertex selection -#==================================================================== -from D2PDMaker.D2PDMakerConf import D2PDVertexSelector -topSequence += D2PDVertexSelector( "VertexSelectorInWenuStream", - OutputLevel = INFO, - inputCollection = 'VxPrimaryCandidate', - minNumberVxTracks = 3 - ) -algsToBookkeep.append( "VertexSelectorInWenuStream" ) - -#-------------------------------------------------------------------- -# Set up the cumulative cut-flow for the standard pre-selection. -# This will use the Logical Filter Combiners to add individual cuts. -#-------------------------------------------------------------------- -cmdString_GRL_PrimVtx = cmdString_GRL + "VertexSelectorInWenuStream" -topSequence += LogicalFilterCombiner( "StreamWenuFilterCombiner_GRL_PrimVtx", - cmdstring = cmdString_GRL_PrimVtx ) -algsToBookkeep.append( "StreamWenuFilterCombiner_GRL_PrimVtx" ) - - - - - - -#==================================================================== -# Do the trigger selection -#==================================================================== -include("PrimaryDPDMaker/SetupTrigDecisionTool.py") -from PrimaryDPDMaker.TriggerFilter import TriggerFilter -topSequence += TriggerFilter( "TriggerFilterInWenuStream_L1_EM10", - trigger = "L1_EM10" - ) -algsToBookkeep.append( "TriggerFilterInWenuStream_L1_EM10" ) - -#-------------------------------------------------------------------- -# Set up the cumulative cut-flow for the standard pre-selection. -# This will use the Logical Filter Combiners to add individual cuts. -#-------------------------------------------------------------------- -cmdString_GRL_PrimVtx_Trigger = cmdString_GRL_PrimVtx + " and TriggerFilterInWenuStream_L1_EM10" -topSequence += LogicalFilterCombiner( "StreamWenuFilterCombiner_GRL_PrimVtx_Trigger", - cmdstring = cmdString_GRL_PrimVtx_Trigger ) -algsToBookkeep.append( "StreamWenuFilterCombiner_GRL_PrimVtx_Trigger" ) - -# Add other triggers for long term -# EF_g17_etcut -topSequence += TriggerFilter( "TriggerFilterInZeeStream_EF_g17_etcut", - trigger = "EF_g17_etcut" - ) -algsToBookkeep.append( "TriggerFilterInZeeStream_EF_g17_etcut" ) - -# EF_g15_loose -topSequence += TriggerFilter( "TriggerFilterInZeeStream_EF_g15_loose", - trigger = "EF_g15_loose" - ) -algsToBookkeep.append( "TriggerFilterInZeeStream_EF_g15_loose" ) - -# EF_g15_medium -topSequence += TriggerFilter( "TriggerFilterInZeeStream_EF_g15_medium", - trigger = "EF_g15_medium" - ) -algsToBookkeep.append( "TriggerFilterInZeeStream_EF_g15_medium" ) - -# EF_e10_loose -topSequence += TriggerFilter( "TriggerFilterInZeeStream_EF_e10_loose", - trigger = "EF_e10_loose" - ) -algsToBookkeep.append( "TriggerFilterInZeeStream_EF_e10_loose" ) - -# EF_e15_loose -topSequence += TriggerFilter( "TriggerFilterInZeeStream_EF_e15_loose", - trigger = "EF_e15_loose" - ) -algsToBookkeep.append( "TriggerFilterInZeeStream_EF_e15_loose" ) - -# EF_e20_loose -topSequence += TriggerFilter( "TriggerFilterInZeeStream_EF_e20_loose", - trigger = "EF_e20_loose" - ) -algsToBookkeep.append( "TriggerFilterInZeeStream_EF_e20_loose" ) - - - - - - - -#==================================================================== -# Do the jet/missingEt event cleaning -#==================================================================== -# First, create an instance of the tool that will calculate the good, -# the bad, and the ugly for each jet and store the result in UserData. -from UserDataUtils.UserDataUtilsConf import UserDataCalcJetQualityTool -ToolSvc += UserDataCalcJetQualityTool( "UserDataCalcJetQualityToolInWenuStream", - OutputLevel = INFO, - userDataPrefix = "jet_", - userDataJetQualityName = "isGoodUglyBad" - ) - -# Now, use the JetSelector and use the UserDataCalcJetQualityTool with it -from D2PDMaker.D2PDMakerConf import D2PDJetSelector -topSequence += D2PDJetSelector( "JetMetCleaningSelectorInWenuStream", - OutputLevel = INFO, - inputCollection = 'AntiKt4TopoJets', - outputLinkCollection = 'WenuStreamEMScalePt10BadJetCollection', - #userDataCalcToolList = [ ToolSvc.UserDataCalcJetQualityToolInWenuStream ], - minNumberPassed = 1, - useJetSignalState = PyAthena.P4SignalState.JETEMSCALE, - jetSignalStatePtMin = 10.0*Units.GeV, - #userDataNameList = [ "jet_isGoodUglyBad" ], - #userDataMinCutList = [ 3.5 ] # good=1, ugly=2, bad=4 (combinations add up) - ) -algsToBookkeep.append( "JetMetCleaningSelectorInWenuStream" ) - -#-------------------------------------------------------------------- -# Set up the cumulative cut-flow for the standard pre-selection. -# This will use the Logical Filter Combiners to add individual cuts. -#-------------------------------------------------------------------- -cmdString_GRL_PrimVtx_Trigger_JetMetClean = cmdString_GRL_PrimVtx_Trigger + " and not JetMetCleaningSelectorInWenuStream" -topSequence += LogicalFilterCombiner( "StreamWenuFilterCombiner_GRL_PrimVtx_Trigger_JetMetClean", - cmdstring = cmdString_GRL_PrimVtx_Trigger_JetMetClean ) -algsToBookkeep.append( "StreamWenuFilterCombiner_GRL_PrimVtx_Trigger_JetMetClean" ) - - - - - -#==================================================================== -# Do the Monte Carlo Truth selections, if the input is a simulation file -#==================================================================== -if inputIsSimulation : - # Truth pre-selector (this way, only one loop over the SpclMC container is needed per event -> faster) - from D2PDMaker.D2PDMakerConf import D2PDTruthParticleSelector - topSequence += D2PDTruthParticleSelector( "TruthPreSelectorInWenuStream", - OutputLevel = INFO, - inputCollection = 'SpclMC', - outputLinkCollection = 'WenuStreamTruthParticlePreSelectedLinkCollection', - minNumberPassed = 1, - pdgIDList = [ 4, 5, 6, 11, 12, 13, 14, 15, 16, 22, 23, 24, 25 ], # c, b, t, e, nu_e, mu, nu_mu, tau, nu_tau, gamma, Z, W, H - removeDocumentationLine = False, - keepOnlyGenerator = True, - keepOnlyStable = False, - removeSelfDecay = True - ) - algsToBookkeep.append( "TruthPreSelectorInWenuStream" ) - - # Truth-electron selector: - topSequence += D2PDTruthParticleSelector( "TruthElectronSelectorInWenuStream", - OutputLevel = INFO, - inputCollection = 'TruthParticlePreSelectedLinkCollection', - outputLinkCollection = 'WenuStreamTruthElectronFromWBosonLinkCollection', - minNumberPassed = 2, - pdgIDList = [ 11 ], # e-, e+ - pdgIDListOrigin = [ 24 ], # W boson - removeDocumentationLine = False, - keepOnlyGenerator = True, - keepOnlyStable = False, - removeSelfDecay = True - ) - algsToBookkeep.append( "TruthElectronSelectorInWenuStream" ) - - # Truth-electron selector for status code == 1: - topSequence += D2PDTruthParticleSelector( "TruthElectronStatusCode1SelectorInWenuStream", - OutputLevel = INFO, - inputCollection = 'TruthElectronFromWBosonLinkCollection', - outputLinkCollection = 'WenuStreamTruthElectronStatusCode1FromWBosonLinkCollection', - minNumberPassed = 2, - acceptStatusCodeList = [ 1 ] - ) - algsToBookkeep.append( "TruthElectronStatusCode1SelectorInWenuStream" ) - - # Truth-electron selector for status code == 3: - topSequence += D2PDTruthParticleSelector( "TruthElectronStatusCode3SelectorInWenuStream", - OutputLevel = INFO, - inputCollection = 'TruthElectronFromWBosonLinkCollection', - outputLinkCollection = 'WenuStreamTruthElectronStatusCode3FromWBosonLinkCollection', - minNumberPassed = 2, - acceptStatusCodeList = [ 3 ] - ) - algsToBookkeep.append( "TruthElectronStatusCode3SelectorInWenuStream" ) - - # Truth-photon selector: - topSequence += D2PDTruthParticleSelector( "TruthPhotonSelectorInWenuStream", - OutputLevel = INFO, - inputCollection = 'TruthParticlePreSelectedLinkCollection', - outputLinkCollection = 'WenuStreamTruthPhotonFromFSRLinkCollection', - minNumberPassed = 1, - pdgIDList = [ 22 ], # gamma - pdgIDListOrigin = [ 11, 23, 24 ], # e-, e+, Z, W boson - removeDocumentationLine = True, - keepOnlyGenerator = True, - keepOnlyStable = True, - removeSelfDecay = True, - etaMax = 5.1 - ) - algsToBookkeep.append( "TruthPhotonSelectorInWenuStream" ) - - # Truth Z0 selector: - topSequence += D2PDTruthParticleSelector( "TruthZBosonSelectorInZeeStream", - OutputLevel = INFO, - inputCollection = 'TruthParticlePreSelectedLinkCollection', - outputLinkCollection = 'WenuStreamTruthZBosonLinkCollection', - minNumberPassed = 1, - pdgIDList = [ 23 ], # Z boson - removeDocumentationLine = True, - keepOnlyGenerator = False, - keepOnlyStable = False, - removeSelfDecay = True - ) - algsToBookkeep.append( "TruthZBosonSelectorInZeeStream" ) - - # Truth W selector: - topSequence += D2PDTruthParticleSelector( "TruthWBosonSelectorInWenuStream", - OutputLevel = INFO, - inputCollection = 'TruthParticlePreSelectedLinkCollection', - outputLinkCollection = 'WenuStreamTruthWBosonLinkCollection', - minNumberPassed = 1, - pdgIDList = [ 24 ], # Z boson - removeDocumentationLine = True, - keepOnlyGenerator = False, - keepOnlyStable = False, - removeSelfDecay = True - ) - algsToBookkeep.append( "TruthWBosonSelectorInWenuStream" ) - - # Combine truth electron and truth photon in a DeltaR cone of 0.05 (final state radiation recovery) - from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner - topSequence += D2PDParticleCombiner( "TruthElectronTruthPhotonCombinerInWenuStream", - OutputLevel = INFO, - compositeParticlePDG_ID = 11, # This is an electron - inputCollectionList = [ 'TruthElectronStatusCode1FromWBosonLinkCollection', - 'TruthPhotonFromFSRLinkCollection' ], - outputCollection = 'WenuStreamCombinedTruthElectronTruthPhotonCollection', - deltaRMax = 0.05 - ) - algsToBookkeep.append( "TruthElectronTruthPhotonCombinerInWenuStream" ) - - - # Truth matching/classification using the MCTruthClassifier - # First, set up the standard MCTruthClassifier - from MCTruthClassifier.MCTruthClassifierBase import MCTruthClassifier as ElectronMCTruthClassifierInWenuStream - ElectronMCTruthClassifierInWenuStream.McEventCollection = mcEventCollectionForMCTruthClassifier - - # Now, use the MCTruthClassifier for the association/matching tool - from AssociationComps.AssociationCompsConf import MCTruthClassifierAssociationTool - ToolSvc += MCTruthClassifierAssociationTool( "ElectronMCTruthClassifierAssociationToolInWenuStream", - OutputLevel = INFO, - mcTruthClassifier = ElectronMCTruthClassifierInWenuStream, - inputAssociateToCollection = "SpclMC", - userDataPrefix = "el_mcTruthClassifier_", - writeUserData = True - ) - - # Set up a DeltaR association/matching tool - from AssociationComps.AssociationCompsConf import DeltaRAssociationTool - ToolSvc += DeltaRAssociationTool( "ElectronDeltaRTruthAssociationToolInWenuStream", - OutputLevel = INFO, - inputAssociateToCollection = "TruthElectronFromWBosonLinkCollection", - deltaRMax = 0.1, - userDataPrefix = "el_deltaRMatchTruth_", - writeUserData = False - ) - - # Now, do a match to status code 1 electrons - ToolSvc += DeltaRAssociationTool( "ElectronDeltaRTruthSC1AssociationToolInWenuStream", - OutputLevel = INFO, - inputAssociateToCollection = "TruthElectronStatusCode1FromWBosonLinkCollection", - deltaRMax = 0.1, - userDataPrefix = "el_deltaRMatchTruth_sc1_", - writeUserData = False - ) - - # Now, do a match to status code 3 electrons - ToolSvc += DeltaRAssociationTool( "ElectronDeltaRTruthSC3AssociationToolInWenuStream", - OutputLevel = INFO, - inputAssociateToCollection = "TruthElectronStatusCode3FromWBosonLinkCollection", - deltaRMax = 0.1, - userDataPrefix = "el_deltaRMatchTruth_sc3_", - writeUserData = False - ) - - - pass # End: if inputIsSimulation - - - - - - - -#==================================================================== -# Define the individual missing et selection -#==================================================================== -from D2PDMaker.D2PDMakerConf import D2PDMissingEtSelector -# MET_RefFinal selection -topSequence += D2PDMissingEtSelector( "MissingEtRefFinalSelectorInWenuStream", - OutputLevel = DEBUG, - inputCollection = "MET_RefFinal", - outputCollection = "WenuStreamNeutrinoRefFinal", - missingEtMin = 20.0*Units.GeV, - minNumberPassed = 1 - ) -algsToBookkeep.append( "MissingEtRefFinalSelectorInWenuStream" ) - - -# MET_LocHadTopoObj selection -topSequence += D2PDMissingEtSelector( "MissingEtLocHadTopoObjSelectorInWenuStream", - OutputLevel = DEBUG, - inputCollection = "MET_LocHadTopoObj", - outputCollection = "WenuStreamNeutrinoLocHadTopoObj", - missingEtMin = 20.0*Units.GeV, - minNumberPassed = 1 - ) -algsToBookkeep.append( "MissingEtLocHadTopoObjSelectorInWenuStream" ) - - - - -#==================================================================== -# Define the individual central electron selections -#==================================================================== -# Load the actual filter -from D2PDMaker.D2PDMakerConf import D2PDElectronSelector -# Create an instance of this filter and add it to the AlgSequence -# Also, configure the filter to your needs. This are just some examples -topSequence += D2PDElectronSelector( "ElectronLooseSelectorInWenuStream", - OutputLevel = INFO, - inputCollection = 'ElectronAODCollection', - outputLinkCollection = 'WenuStreamCentralLooseElectronLinkCollection', - minNumberPassed = 1, - electronIsEM = egammaPID.ElectronLoose, - electronAuthor = egammaParameters.AuthorElectron, - clusterEtMin = 20.0*Units.GeV - ) -algsToBookkeep.append( "ElectronLooseSelectorInWenuStream" ) - -#-------------------------------------------------------------------- -# If the input is Monte Carlo, also apply truth matching. -# This will be done for ALL electrons in the ElectronAODCollection -# and not only for the ones surviving the selection cuts! -#-------------------------------------------------------------------- -if inputIsSimulation : - # Schedule the associations with the electron selector, i.e., performed for all electrons in the ElectronAODCollection - topSequence.ElectronLooseSelectorInWenuStream.associationToolList = [ ToolSvc.ElectronMCTruthClassifierAssociationToolInWenuStream, - ToolSvc.ElectronDeltaRTruthAssociationToolInWenuStream, - ToolSvc.ElectronDeltaRTruthSC1AssociationToolInWenuStream, - ToolSvc.ElectronDeltaRTruthSC3AssociationToolInWenuStream ] - topSequence.ElectronLooseSelectorInWenuStream.outputAssociationContainerList = [ "WenuStreamElectronMCTruthClassifierMatch", - "WenuStreamElectronDeltaRTruthMatch", - "WenuStreamElectronDeltaRTruthStatusCode1Match", - "WenuStreamElectronDeltaRTruthStatusCode3Match" ] - - pass # End: if inputIsSimulation - - -# Define a medium electron selection -topSequence += D2PDElectronSelector( "ElectronMediumSelectorInWenuStream", - OutputLevel = INFO, - inputCollection = 'ElectronAODCollection', - outputLinkCollection = 'WenuStreamCentralMediumElectronLinkCollection', - minNumberPassed = 1, - electronIsEM = egammaPID.ElectronMedium, - electronAuthor = egammaParameters.AuthorElectron, - clusterEtMin = 15.0*Units.GeV - ) -algsToBookkeep.append( "ElectronMediumSelectorInWenuStream" ) - - - - - - -#-------------------------------------------------------------------- -# Build the W candidates -#-------------------------------------------------------------------- -# Use MET_LocHadTopoObj -# - the W->mu nu Boson -from D2PDMaker.D2PDMakerConf import D2PDLeptonNeutrinoCombiner -topSequence += D2PDLeptonNeutrinoCombiner( "WenuMediumLocHadTopoObjCombinerInWenuStream", - OutputLevel = INFO, - compositeParticlePDG_ID = 24, # This is a W Boson - inputCollection = 'MET_LocHadTopoObj', - inputLeptonCollection = 'WenuStreamCentralMediumElectronLinkCollection', - outputNeutrinoCollection = 'WenuMediumLocHadTopoObjNeutrinoCollection', - outputNeutrinoLinkCollection = 'WenuMediumLocHadTopoObjNeutrinoLinkCollection', - outputCollection = 'WenuMediumLocHadTopoObjWBosonCollection', - minNumberPassed = 1, - missingEtMin = 20.0*Units.GeV - ) -algsToBookkeep.append( "WenuMediumLocHadTopoObjCombinerInWenuStream" ) - - - -# Wenu plus invarian mass cut -from D2PDMaker.D2PDMakerConf import D2PDINavigable4MomentumSelector -topSequence += D2PDINavigable4MomentumSelector( "WenuMediumLocHadTopoObjInvMassCombinerInWenuStream", - OutputLevel = INFO, - inputCollection = 'WenuMediumLocHadTopoObjWBosonCollection', - outputLinkCollection = 'WenuMediumLocHadTopoObjInvMassWBosonCollection', - minNumberPassed = 1, - massMin = 40.0*Units.GeV, - ) -algsToBookkeep.append( "WenuMediumLocHadTopoObjInvMassCombinerInWenuStream" ) - - - -# --------------------------- -# Use MET_RefFinal -# - the W->mu nu Boson -from D2PDMaker.D2PDMakerConf import D2PDLeptonNeutrinoCombiner -topSequence += D2PDLeptonNeutrinoCombiner( "WenuMediumRefFinalCombinerInWenuStream", - OutputLevel = INFO, - compositeParticlePDG_ID = 24, # This is a W Boson - inputCollection = 'MET_RefFinal', - inputLeptonCollection = 'WenuStreamCentralMediumElectronLinkCollection', - outputNeutrinoCollection = 'WenuMediumRefFinalNeutrinoCollection', - outputNeutrinoLinkCollection = 'WenuMediumRefFinalNeutrinoLinkCollection', - outputCollection = 'WenuMediumRefFinalWBosonCollection', - minNumberPassed = 1, - missingEtMin = 20.0*Units.GeV - ) -algsToBookkeep.append( "WenuMediumRefFinalCombinerInWenuStream" ) - - - -# Wenu plus invarian mass cut -from D2PDMaker.D2PDMakerConf import D2PDINavigable4MomentumSelector -topSequence += D2PDINavigable4MomentumSelector( "WenuMediumRefFinalInvMassCombinerInWenuStream", - OutputLevel = INFO, - inputCollection = 'WenuMediumRefFinalWBosonCollection', - outputLinkCollection = 'WenuMediumRefFinalInvMassWBosonCollection', - minNumberPassed = 1, - massMin = 40.0*Units.GeV, - ) -algsToBookkeep.append( "WenuMediumRefFinalInvMassCombinerInWenuStream" ) - - - - - - - - - - -#==================================================================== -# Build logical combination of filter decisions -#==================================================================== -from PrimaryDPDMaker.LogicalFilterCombiner import LogicalFilterCombiner -topSequence += LogicalFilterCombiner( "LooseElectronMetRefFinal_AcceptEvent", - cmdstring = "ElectronLooseSelectorInWenuStream and MissingEtRefFinalSelectorInWenuStream" - ) -algsToBookkeep.append( "LooseElectronMetRefFinal_AcceptEvent" ) - - -topSequence += LogicalFilterCombiner( "LooseElectronLocHadTopoObj_AcceptEvent", - cmdstring = "ElectronLooseSelectorInWenuStream and MissingEtLocHadTopoObjSelectorInWenuStream" - ) -algsToBookkeep.append( "LooseElectronLocHadTopoObj_AcceptEvent" ) - - - - - -#==================================================================== -# Define the test DPD output stream -#==================================================================== -from D2PDMaker.D2PDHelpers import buildFileName -# This stream HAS TO start with "StreamD2AODM_"! If the input was an (D)ESD(M), this should start with "StreamD2ESD(M)_". -# See this twiki for more information: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/DPDNamingConvention -# For this, determine if the input file is of ESD or AOD type: -inputFileStreamType = "AOD" -if inputFileSummary.has_key("stream_names"): - inputFileSummaryStreamNames = inputFileSummary.get("stream_names") - if inputFileSummaryStreamNames.__contains__("ESD") : - inputFileStreamType = "ESD" - pass - pass -streamName = "StreamD2" + inputFileStreamType + "M_WENU" -print "Configuring the output stream with the name =", streamName -fileName = D2PDFlags.OutputDirectoryName() + "MyD2PDWenuStream.pool.root" -WenuStream = MSMgr.NewPoolStream( streamName, fileName ) - -# Only events that pass the filters listed below are written out -# AcceptAlgs = logical OR of filters -# RequireAlgs = logical AND of filters -WenuStream.AcceptAlgs( [ "LooseElectronMetRefFinal_AcceptEvent", - "LooseElectronLocHadTopoObj_AcceptEvent" ] ) - -# Require that the events pass the wanted trigger -#WenuStream.RequireAlgs( [ "TriggerFilterInWenuStream_L1_EM10" ] ) - -# Veto the events selected by the jet/missingEt event cleaning -#WenuStream.VetoAlgs( [ "JetMetCleaningSelectorInWenuStream" ] ) - -# Also record the MetaData for all other algorithms -WenuStream.AddOtherAlgsToBookkeep( algsToBookkeep ) - - -#--------------------------------------------------- -# Add the containers to the output stream -#--------------------------------------------------- -from PrimaryDPDMaker import PrimaryDPD_OutputDefinitions as dpdOutput - -# Take all items from the input, except for the ones listed in the excludeList -# If the excludeList is empty, all containers from the input file (e.g. AOD) -# are copied to the output file. -excludeList = [ "TrigMuonEFContainer#HLT_MuonEF" ] -excludeList = list(set(excludeList)) # This removes dublicates from the list -dpdOutput.addAllItemsFromInputExceptExcludeList( streamName, excludeList ) - -# Just copy a few containers by hand. This way is rather dangerous because -# if you have a typo in the string or if a container name in the AOD changes, -# you will loose this one in the output container! -## WenuStream.AddItem( ['EventInfo#*'] ) -## WenuStream.AddItem( ["egammaContainer#ElectronAODCollection"] ) -## WenuStream.AddItem( ["egammaContainer#PhotonAODCollection"] ) -## WenuStream.AddItem( ["egDetailContainer#egDetailAOD"] ) -## WenuStream.AddItem( ["egDetailContainer#egDetailContainer"] ) -## WenuStream.AddItem( ["egDetailContainer#SofteDetailContainer"] ) -## WenuStream.AddItem( ["CaloCompactCellContainer#AODCellContainer"] ) -## WenuStream.AddItem( ["CaloClusterContainer#egClusterCollection"] ) -## WenuStream.AddItem( ["CaloCellLinkContainer#egClusterCollection_Link"] ) -## WenuStream.AddItem( ["Analysis::MuonContainer#StacoMuonCollection"] ) -## WenuStream.AddItem( ["Analysis::MuonContainer#MuidMuonCollection"] ) -## WenuStream.AddItem( ["Analysis::TauJetContainer#TauRecContainer"] ) -## WenuStream.AddItem( ["JetCollection#Cone4TopoJets"] ) -## WenuStream.AddItem( ["JetCollection#AntiKt4TowerJets"] ) -## WenuStream.AddItem( ["JetCollection#AntiKt4TopoJets"] ) -## WenuStream.AddItem( ["JetCollection#AntiKt6TopoJets"] ) -## WenuStream.AddItem( ["JetCollection#AntiKt6LCTopoJets"] ) -## WenuStream.AddItem( ["JetKeyDescriptor#JetKeyMap"] ) -## WenuStream.AddItem( ["Rec::TrackParticleContainer#TrackParticleCandidate"] ) -## WenuStream.AddItem( ["CaloClusterContainer#CaloCalTopoCluster"] ) -## WenuStream.AddItem( ["VxContainer#VxPrimaryCandidate"] ) -## WenuStream.AddItem( ["MissingET#*"] ) -## WenuStream.AddItem( ["LArNoisyROSummary#LArNoisyROSummary"] ) -## WenuStream.AddItem( ["SkimDecisionCollection#*"] ) - -## # Add the needed trigger containers -## WenuStream.AddItem( ["HLT::HLTResult#HLTResult_L2"] ) -## WenuStream.AddItem( ["HLT::HLTResult#HLTResult_EF"] ) -## WenuStream.AddItem( ["LVL1_ROI#LVL1_ROI"] ) -## WenuStream.AddItem( ["TrigDec::TrigDecision#TrigDecision"] ) -## WenuStream.AddItem( ["CTP_Decision#CTP_Decision"] ) -## WenuStream.AddItem( ["TrigRoiDescriptorCollection#HLT"] ) -## WenuStream.AddItem( ["TrigRoiDescriptorCollection#HLT_TrigT2CaloEgamma"] ) -## WenuStream.AddItem( ["TrigRoiDescriptorCollection#HLT_forID"] ) -## WenuStream.AddItem( ["TrigRoiDescriptorCollection#HLT_initialRoi"] ) -## WenuStream.AddItem( ["TrigRoiDescriptorCollection#HLT_secondaryRoI_L2"] ) -## WenuStream.AddItem( ["TrigRoiDescriptorCollection#HLT_secondaryRoI_EF"] ) -## WenuStream.AddItem( ["CaloCellContainer#HLT_TrigT2CaloEgammaCells"] ) -## WenuStream.AddItem( ["egammaContainer#HLT_egamma"] ) -## WenuStream.AddItem( ["egammaContainer#HLT_egamma_Electrons"] ) -## WenuStream.AddItem( ["egammaContainer#HLT_egamma_Photons"] ) -## WenuStream.AddItem( ["CaloClusterContainer#HLT"] ) -## WenuStream.AddItem( ["CaloClusterContainer#HLT_TrigCaloClusterMaker"] ) -## WenuStream.AddItem( ["CaloClusterContainer#HLT_TrigCaloClusterMaker_slw"] ) -## WenuStream.AddItem( ["TrigElectronContainer#HLT_L2ElectronFex"] ) -## WenuStream.AddItem( ["TrigElectronContainer#HLT_L2IDCaloFex"] ) -## WenuStream.AddItem( ["TrigInDetTrackCollection#HLT"] ) -## WenuStream.AddItem( ["TrigInDetTrackCollection#HLT_TrigIDSCAN_FullScan"] ) -## WenuStream.AddItem( ["TrigInDetTrackCollection#HLT_TrigIDSCAN_eGamma"] ) -## WenuStream.AddItem( ["TrigInDetTrackCollection#HLT_TrigIDSCAN_eGamma_Brem"] ) -## WenuStream.AddItem( ["TrigInDetTrackCollection#HLT_TrigSiTrack_FullScan"] ) -## WenuStream.AddItem( ["TrigInDetTrackCollection#HLT_TrigSiTrack_eGamma"] ) -## WenuStream.AddItem( ["TrigInDetTrackCollection#HLT_TrigSiTrack_eGamma_robust"] ) -## WenuStream.AddItem( ["egDetailContainer#HLT_egamma"] ) -## WenuStream.AddItem( ["egDetailContainer#HLT_egamma_Electrons"] ) -## WenuStream.AddItem( ["egDetailContainer#HLT_egamma_Photons"] ) -## WenuStream.AddItem( ["TrigPhotonContainer#HLT_L2PhotonFex"] ) -## WenuStream.AddItem( ["TrigEMClusterContainer#HLT"] ) -## WenuStream.AddItem( ["TrigEMClusterContainer#HLT_T2CaloSwCluster"] ) -## WenuStream.AddItem( ["TrigEMClusterContainer#HLT_TrigT2CaloEgamma"] ) -## WenuStream.AddItem( ["TrigEMClusterContainer#HLT_TrigcaloSwCluster"] ) -## WenuStream.AddItem( ["Rec::TrackParticleContainer#HLT_InDetTrigParticleCreationCombined_Electron_EFID"] ) -## WenuStream.AddItem( ["Rec::TrackParticleContainer#HLT_InDetTrigParticleCreationTRTOnly_Electron_EFID"] ) -## WenuStream.AddItem( ["Rec::TrackParticleContainer#HLT_InDetTrigParticleCreationTRTOnly_FullScan_EFID"] ) -## WenuStream.AddItem( ["Rec::TrackParticleContainer#HLT_InDetTrigParticleCreation_Electron_EFID"] ) -## WenuStream.AddItem( ["Rec::TrackParticleContainer#HLT_InDetTrigParticleCreation_FullScan_EFID"] ) -## WenuStream.AddItem( ["Rec::TrackParticleContainer#HLT_InDetTrigParticleCreation_Photon_EFID"] ) - -## # Add the Monte Carlo Truth -## WenuStream.AddItem( ["TruthParticleContainer#SpclMC"] ) -## WenuStream.AddItem( ["McEventCollection#GEN_AOD"] ) -## WenuStream.AddItem( ["TrackParticleTruthCollection#TrackParticleTruthCollection"] ) - - -# You need to add your newly created output containers from above to the output stream -WenuStream.AddItem( ['CompositeParticleContainer#*'] ) -WenuStream.AddItem( ['INav4MomLinkContainer#*'] ) -WenuStream.AddItem( ['INav4MomAssocs#*'] ) - - - -# Final message to log -wenuDPD_msg.info( 'Finished configuration of %s' % D2PDFlags.WriteD2AOD_WENUStream.StreamName ) diff --git a/PhysicsAnalysis/D2PDMaker/share/DAOD_ElLoose18.py b/PhysicsAnalysis/D2PDMaker/share/DAOD_ElLoose18.py deleted file mode 100644 index 5846c159febc7fb2f515fc22b63f1273509d07ed..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/share/DAOD_ElLoose18.py +++ /dev/null @@ -1,291 +0,0 @@ -##----------------------------------------------------------------------------- -## Name: D2PD_ElLoose18.py -## -## Author: Karsten Koeneke (DESY) -## Email: karsten.koeneke@desy.de -## -## Description: This defines the content of the DAOD_ELLOOSE18 -## -##----------------------------------------------------------------------------- - -## Include the job property flags for this package and from RecExCommon -from D2PDMaker.D2PDFlags import D2PDFlags - -## This handels multiple output streams -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - -#---- Load the egammaPID and egammaParameters information -# This is needed to always be up-to-date with the egamma -# IsEM selections and also the author selections -import PyUtils.RootUtils as ru -ROOT = ru.import_root() -import cppyy -cppyy.load_library('libegammaEnumsDict') -from ROOT import egammaPID -from ROOT import egammaParameters - -#==================================================================== -# Define the test DPD output stream -#==================================================================== -from D2PDMaker.D2PDHelpers import buildFileName -# This stream HAS TO start with "StreamD2AODM_"! If the input was an (D)ESD(M), this should start with "StreamD2ESD(M)_". -# See this twiki for more information: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/DPDNamingConvention -fileName = buildFileName( D2PDFlags.WriteDAOD_ElLoose18Stream ) -streamName = D2PDFlags.WriteDAOD_ElLoose18Stream.StreamName - - - - -#==================================================================== -# Define an empty list for bookkeeping -#==================================================================== -algsToBookkeep = [] - - -#==================================================================== -# Define the event selection -#==================================================================== -# Import the needed filters -from PrimaryDPDMaker.LogicalFilterCombiner import LogicalFilterCombiner - - -#==================================================================== -# Check if we have Monte Carlo or real data, based on the inputFileSummary -#==================================================================== -inputIsSimulation = False -if inputFileSummary.has_key("evt_type"): - eventTypeList = inputFileSummary.get("evt_type") - if eventTypeList.__contains__("IS_SIMULATION") : - print "Detected that the input file is a simulated dataset" - inputIsSimulation = True - pass - pass - - -#==================================================================== -# Do the good run list (GRL) selection --- only for data -#==================================================================== -cmdString_GRL = "" -if not inputIsSimulation : - # use closest DB replica - from PoolSvc.PoolSvcConf import PoolSvc - svcMgr += PoolSvc(SortReplicas=True) - from DBReplicaSvc.DBReplicaSvcConf import DBReplicaSvc - svcMgr += DBReplicaSvc(UseCOOLSQLite=False) - - ## # Try to copy the GRL locally - ## import socket - ## socket.setdefaulttimeout(180) - ## remoteGRL = D2PDFlags.GRLFile() - ## localGRL = "data10_7TeV.pro05.merged_LBSUMM_WZjets_allchannels.xml" - ## import urllib - ## urllib.urlretrieve( remoteGRL, localGRL ) - - # Create an instance of the GoodRunsListSelectorTool - from GoodRunsLists.GoodRunsListsConf import * - ToolSvc += GoodRunsListSelectorTool( "GoodRunsListSelectorTool", - OutputLevel = INFO, - #GoodRunsListVec = [ 'data10_7TeV.pro05.merged_LBSUMM_WZjets_allchannels.xml' ], ## specify your grl here - GoodRunsListVec = [ '../xml/data10_7TeV.periodAllYear_DetStatus-v03-pro05_WZjets_allchannels.xml' ], - PassThrough = False - ) - - # Use the GRLTriggerSelectorAlg - from GoodRunsListsUser.GoodRunsListsUserConf import * - topSequence += GRLTriggerSelectorAlg( "GRLFilterInElLoose18Stream", - OutputLevel = INFO, - GoodRunsListArray = [ 'WZjets_allchannels' ] ## GRL name from the above xml-file - ) - - #theApp.getHandle().Dlls += ['XMLCoreParser'] ## Hack to avoid library mismatch after importing the GRL stuff - - algsToBookkeep.append( "GRLFilterInElLoose18Stream" ) - #-------------------------------------------------------------------- - # Set up the cumulative cut-flow for the standard pre-selection. - # This will use the Logical Filter Combiners to add individual cuts. - #-------------------------------------------------------------------- - cmdString_GRL += "GRLFilterInElLoose18Stream and " - pass # End: if not inputIsSimulation - - - - - - -#==================================================================== -# Do the PrimaryVertex selection -#==================================================================== -from D2PDMaker.D2PDMakerConf import D2PDVertexSelector -topSequence += D2PDVertexSelector( "VertexSelectorInElLoose18Stream", - OutputLevel = INFO, - inputCollection = 'VxPrimaryCandidate', - minNumberVxTracks = 3 - ) -algsToBookkeep.append( "VertexSelectorInElLoose18Stream" ) - -#-------------------------------------------------------------------- -# Set up the cumulative cut-flow for the standard pre-selection. -# This will use the Logical Filter Combiners to add individual cuts. -#-------------------------------------------------------------------- -cmdString_GRL_PrimVtx = cmdString_GRL + "VertexSelectorInElLoose18Stream" -topSequence += LogicalFilterCombiner( "StreamElLoose18FilterCombiner_GRL_PrimVtx", - cmdstring = cmdString_GRL_PrimVtx ) -algsToBookkeep.append( "StreamElLoose18FilterCombiner_GRL_PrimVtx" ) - - - - - - -#==================================================================== -# Do the trigger selection -#==================================================================== -include("PrimaryDPDMaker/SetupTrigDecisionTool.py") -from PrimaryDPDMaker.TriggerFilter import TriggerFilter -topSequence += TriggerFilter( "TriggerFilterInElLoose18Stream_L1_EM14", - trigger = "L1_EM14" - ) -algsToBookkeep.append( "TriggerFilterInElLoose18Stream_L1_EM14" ) - -#-------------------------------------------------------------------- -# Set up the cumulative cut-flow for the standard pre-selection. -# This will use the Logical Filter Combiners to add individual cuts. -#-------------------------------------------------------------------- -# Create a subsequence: Only when the first algorithm returns isEventAccepted, the rest is executed -from AthenaCommon.AlgSequence import AthSequencer -grlPrimVtxTriggerEM14InElLoose18StreamSeq = AthSequencer("GRLPrimVtxTriggerEM14InElLoose18StreamSeq") -topSequence += grlPrimVtxTriggerEM14InElLoose18StreamSeq - -print "TEST cmdString_GRL_PrimVtx = ", cmdString_GRL_PrimVtx -cmdString_GRL_PrimVtx_Trigger = cmdString_GRL_PrimVtx + " and TriggerFilterInElLoose18Stream_L1_EM14" -print "TEST cmdString_GRL_PrimVtx_Trigger = ", cmdString_GRL_PrimVtx_Trigger -grlPrimVtxTriggerEM14InElLoose18StreamSeq += LogicalFilterCombiner( "StreamElLoose18FilterCombiner_GRL_PrimVtx_Trigger", - cmdstring = cmdString_GRL_PrimVtx_Trigger ) -algsToBookkeep.append( "StreamElLoose18FilterCombiner_GRL_PrimVtx_Trigger" ) - -# Make some control plots -from D2PDMaker.D2PDMakerConf import CreateControlPlots -grlPrimVtxTriggerEM14InElLoose18StreamSeq += CreateControlPlots( "StreamElLoose18ControlPlots_GRL_PrimVtx_TriggerEM14", - OutputLevel = INFO, - outputStreamName = streamName, - THistService = 'THistSvc/ElLoose18StreamTHistSvc', - inputVertexCollection = 'VxPrimaryCandidate', - minNumberVxTracks = 3 - ) - -# Add other triggers -# EF_e15_medium -topSequence += TriggerFilter( "TriggerFilterInElLoose18Stream_EF_e15_medium", - trigger = "EF_e15_medium" - ) -algsToBookkeep.append( "TriggerFilterInElLoose18Stream_EF_e15_medium" ) -# Create a sub-sequence for this trigger filter -grlPrimVtxTriggerE15MedInElLoose18StreamSeq = AthSequencer("GRLPrimVtxTriggerE15MedInElLoose18StreamSeq") -topSequence += grlPrimVtxTriggerE15MedInElLoose18StreamSeq - -grlPrimVtxTriggerE15MedInElLoose18StreamSeq += LogicalFilterCombiner( "StreamElLoose18FilterCombiner_GRL_PrimVtx_TriggerE15Med", - cmdstring = cmdString_GRL_PrimVtx + " and TriggerFilterInElLoose18Stream_EF_e15_medium" ) -algsToBookkeep.append( "StreamElLoose18FilterCombiner_GRL_PrimVtx_TriggerE15Med" ) - -# Make some control plots -from D2PDMaker.D2PDMakerConf import CreateControlPlots -grlPrimVtxTriggerE15MedInElLoose18StreamSeq += CreateControlPlots( "StreamElLoose18ControlPlots_GRL_PrimVtx_TriggerE15Med", - OutputLevel = INFO, - outputStreamName = streamName, - THistService = 'THistSvc/ElLoose18StreamTHistSvc', - inputVertexCollection = 'VxPrimaryCandidate', - minNumberVxTracks = 3 - ) - -# EF_e20_loose -topSequence += TriggerFilter( "TriggerFilterInElLoose18Stream_EF_e20_loose", - trigger = "EF_e20_loose" - ) -algsToBookkeep.append( "TriggerFilterInElLoose18Stream_EF_e20_loose" ) -# Create a sub-sequence for this trigger filter -grlPrimVtxTriggerE20LooseInElLoose18StreamSeq = AthSequencer("GRLPrimVtxTriggerE20LooseInElLoose18StreamSeq") -topSequence += grlPrimVtxTriggerE20LooseInElLoose18StreamSeq - -grlPrimVtxTriggerE20LooseInElLoose18StreamSeq += LogicalFilterCombiner( "StreamElLoose18FilterCombiner_GRL_PrimVtx_TriggerE20Loose", - cmdstring = cmdString_GRL_PrimVtx + " and TriggerFilterInElLoose18Stream_EF_e20_loose" ) -algsToBookkeep.append( "StreamElLoose18FilterCombiner_GRL_PrimVtx_TriggerE20Loose" ) - -# Make some control plots -from D2PDMaker.D2PDMakerConf import CreateControlPlots -grlPrimVtxTriggerE20LooseInElLoose18StreamSeq += CreateControlPlots( "StreamElLoose18ControlPlots_GRL_PrimVtx_TriggerE20Loose", - OutputLevel = INFO, - outputStreamName = streamName, - THistService = 'THistSvc/ElLoose18StreamTHistSvc', - inputVertexCollection = 'VxPrimaryCandidate', - minNumberVxTracks = 3 - ) - - -# Make some control plots for all events -from D2PDMaker.D2PDMakerConf import CreateControlPlots -topSequence += CreateControlPlots( "StreamElLoose18ControlPlots_AllEvents", - OutputLevel = INFO, - outputStreamName = streamName, - THistService = 'THistSvc/ElLoose18StreamTHistSvc', - inputVertexCollection = 'VxPrimaryCandidate', - minNumberVxTracks = 3 - ) -algsToBookkeep.append( "StreamElLoose18ControlPlots_AllEvents" ) - - - -from D2PDMaker.D2PDMakerConf import D2PDElectronSelector -# Create an instance of this filter and add it to the AlgSequence -# Also, configure the filter to your needs. This are just some examples -topSequence += D2PDElectronSelector( "ElectronLooseSelectorInElLoose18Stream", - OutputLevel = INFO, - inputCollection = 'ElectronAODCollection', - outputLinkCollection = 'CentralLooseElectronLinkCollectionInElLoose18Stream', - minNumberPassed = 1, - electronIsEM = egammaPID.ElectronLoose, - electronAuthor = egammaParameters.AuthorElectron, - clusterEtMin = 18.0*Units.GeV - ) -algsToBookkeep.append( "ElectronLooseSelectorInElLoose18Stream" ) - - - - - -#==================================================================== -# Define the test DPD output stream -#==================================================================== -ElLoose18Stream = MSMgr.NewPoolStream( streamName, fileName ) - -# Only events that pass the filters listed below are written out -# AcceptAlgs = logical OR of filters -# RequireAlgs = logical AND of filters -ElLoose18Stream.AcceptAlgs( ["ElectronLooseSelectorInElLoose18Stream"] ) - -ElLoose18Stream.AddOtherAlgsToBookkeep( algsToBookkeep ) - -#--------------------------------------------------- -# Add the containers to the output stream -#--------------------------------------------------- -from PrimaryDPDMaker import PrimaryDPD_OutputDefinitions as dpdOutput - -# Take all items from the input, except for the ones listed in the excludeList -# If the excludeList is empty, all containers from the input file (e.g. AOD) -# are copied to the output file. -excludeList = [ "TrigMuonEFContainer#HLT_MuonEF" ] -dpdOutput.addAllItemsFromInputExceptExcludeList( streamName, excludeList ) - -# You need to add your newly created output containers from above to the output stream -#ElLoose18Stream.AddItem( ['CompositeParticleContainer#*'] ) -#ElLoose18Stream.AddItem( ['INav4MomLinkContainer#*'] ) - - - -#==================================================================== -# Define the THistSvc -#==================================================================== -from GaudiSvc.GaudiSvcConf import THistSvc -ServiceMgr += THistSvc( "ElLoose18StreamTHistSvc", - Output = [ "%s DATAFILE='%s' OPT='SHARE'" % ( streamName, fileName ) ] - ) - diff --git a/PhysicsAnalysis/D2PDMaker/share/DAOD_RNDM.py b/PhysicsAnalysis/D2PDMaker/share/DAOD_RNDM.py deleted file mode 100644 index 3114f2f7a34187f62d970cafc1b71948fd6be9ed..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/share/DAOD_RNDM.py +++ /dev/null @@ -1,49 +0,0 @@ -##Creation: David Cote, September 2010 -##This file defines the RNDM stream, which simply select 1/100 of events - -## Include the job property flags for this package and from RecExCommon -from D2PDMaker.D2PDFlags import D2PDFlags - -## This handels multiple output streams -from OutputStreamAthenaPool.MultipleStreamManager import MSMgr - -#==================================================================== -# Define the event selection -#==================================================================== -from PrimaryDPDMaker.PrimaryDPDMakerConf import PrimaryDPDPrescaler -topSequence += PrimaryDPDPrescaler( "DAOD_RNDM_Filter", Prescale=100 ) - - - -#==================================================================== -# Define the test DPD output stream -#==================================================================== -from D2PDMaker.D2PDHelpers import buildFileName -# This stream HAS TO start with "StreamD2AODM_"! If the input was an (D)ESD(M), this should start with "StreamD2ESD(M)_". -# See this twiki for more information: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/DPDNamingConvention -fileName = buildFileName( D2PDFlags.WriteDAOD_RNDMStream ) -streamName = D2PDFlags.WriteDAOD_RNDMStream.StreamName -RNDMStream = MSMgr.NewPoolStream( streamName, fileName ) - -# Only events that pass the filters listed below are written out -# AcceptAlgs = logical OR of filters -# RequireAlgs = logical AND of filters -RNDMStream.AcceptAlgs( ["DAOD_RNDM_Filter"] ) - - - -#--------------------------------------------------- -# Add the containers to the output stream -#--------------------------------------------------- -from PrimaryDPDMaker import PrimaryDPD_OutputDefinitions as dpdOutput - -# Take all items from the input, except for the ones listed in the excludeList -# If the excludeList is empty, all containers from the input file (e.g. AOD) -# are copied to the output file. -excludeList = [] -dpdOutput.addAllItemsFromInputExceptExcludeList( streamName, excludeList ) - -# You need to add your newly created output containers from above to the output stream -RNDMStream.AddItem( ['CompositeParticleContainer#*'] ) -RNDMStream.AddItem( ['INav4MomLinkContainer#*'] ) - diff --git a/PhysicsAnalysis/D2PDMaker/src/CheckD2PD.cxx b/PhysicsAnalysis/D2PDMaker/src/CheckD2PD.cxx deleted file mode 100644 index 7d2bb7c37a450fcacae613f103097ddd0b9fb6c7..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/src/CheckD2PD.cxx +++ /dev/null @@ -1,604 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -//=========================================================================== -// Name : CheckD2PD.h -// Package : offline/PhysicsAnalysis/D2PDMaker -// Author : Karsten Koeneke -// Created : April 2009 -// -// DESCRIPTION: -// -// Check some properties of the D2PD. -// -//=========================================================================== - -#define XXX std::cout << "I am here: " << __FILE__ << ":" << __LINE__ << std::endl; - -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/IToolSvc.h" - -#include "StoreGate/DataHandle.h" - -#include "GaudiKernel/ITHistSvc.h" -#include "TTree.h" -#include "TMath.h" - -// The composite particle -#include "ParticleEvent/CompositeParticle.h" -#include "ParticleEvent/CompositeParticleContainer.h" - -/// this class' header file -#include "D2PDMaker/CheckD2PD.h" - -#include <stdint.h> -#include <algorithm> -#include <math.h> -#include <functional> - -#include "AthenaKernel/Units.h" - -using namespace Analysis; -using Athena::Units::GeV; - - -//=========================================================================== -// Constructor -//=========================================================================== -CheckD2PD::CheckD2PD(const std::string& name, - ISvcLocator* pSvcLocator) : - AthAlgorithm(name, pSvcLocator), - m_thistSvc(0), - m_dpd_composite1_number(0), - m_dpd_composite1_mass(0), - m_dpd_composite1_pt(0), - m_dpd_composite1_eta(0), - m_dpd_composite1_nDaughter(0), - m_dpd_composite1_daughters_pt(0), - m_dpd_composite1_daughters_eta(0), - m_dpd_composite2_number(0), - m_dpd_composite2_mass(0), - m_dpd_composite2_pt(0), - m_dpd_composite2_eta(0), - m_dpd_composite3_number(0), - m_dpd_composite3_mass(0), - m_dpd_composite3_pt(0), - m_dpd_composite3_eta(0), - m_dpd_composite4_number(0), - m_dpd_composite4_mass(0), - m_dpd_composite4_pt(0), - m_dpd_composite4_eta(0), - m_dpd_composite5_number(0), - m_dpd_composite5_mass(0), - m_dpd_composite5_pt(0), - m_dpd_composite5_eta(0) -{ - /// switches to control the analysis through job options :: these are the default - /// to changed in the job options - - /// The container name & selection cuts - declareProperty( "CompositeParticleContainer1", m_compPartCollName1 = "", - "The name (key) of the first composite particle collection" ); - declareProperty( "CompositeParticleContainer2", m_compPartCollName2 = "", - "The name (key) of the second composite particle collection" ); - declareProperty( "CompositeParticleContainer3", m_compPartCollName3 = "", - "The name (key) of the third composite particle collection" ); - declareProperty( "CompositeParticleContainer4", m_compPartCollName4 = "", - "The name (key) of the fourth composite particle collection" ); - declareProperty( "CompositeParticleContainer5", m_compPartCollName5 = "", - "The name (key) of the fifth composite particle collection" ); -} - - - - -//=========================================================================== -// Destructor - check up memory allocation -// delete any memory allocation on the heap -//=========================================================================== - -CheckD2PD::~CheckD2PD() {} - - - - -//=========================================================================== -// Initialize -// initialize StoreGate -// get a handle on the analysis tools -// book histograms -//=========================================================================== - -StatusCode CheckD2PD::initialize() -{ - msg() << MSG::INFO - << "Initializing CheckD2PD" - << endmsg; - - // The histogramming service - StatusCode sc = service("THistSvc", m_thistSvc); - if (sc.isFailure()) - { - msg() << MSG::ERROR - << "Unable to retrieve pointer to THistSvc" - << endmsg; - return sc; - } - - - - //==================================== - // the histograms - //==================================== - // composite 1 - m_dpd_composite1_number = new TH1F("dpd_composite1_number", "composite1_number", 50, 0.0, 50.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite1_number", m_dpd_composite1_number); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite1_number registration failed" << endmsg; - return sc; - } - - m_dpd_composite1_mass = new TH1F("dpd_composite1_mass", "composite1_mass", 200, 0.0, 200.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite1_mass", m_dpd_composite1_mass); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite1_mass registration failed" << endmsg; - return sc; - } - - m_dpd_composite1_pt = new TH1F("dpd_composite1_pt", "composite1_pt", 200, 0.0, 200.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite1_pt", m_dpd_composite1_pt); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite1_pt registration failed" << endmsg; - return sc; - } - - m_dpd_composite1_eta = new TH1F("dpd_composite1_eta", "composite1_eta", 100, -10.0, 10.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite1_eta", m_dpd_composite1_eta); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite1_eta registration failed" << endmsg; - return sc; - } - - // composite 1 daughters - m_dpd_composite1_nDaughter = new TH1F("dpd_composite1_nDaughter", "composite1_nDaughter", 50, 0.0, 50.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite1_nDaughter", m_dpd_composite1_nDaughter); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite1_nDaughter registration failed" << endmsg; - return sc; - } - - m_dpd_composite1_daughters_pt = new TH1F("dpd_composite1_daughters_pt", "composite1_daughters_pt", 200, 0.0, 200.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite1_daughters_pt", m_dpd_composite1_daughters_pt); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite1_daughters_pt registration failed" << endmsg; - return sc; - } - - m_dpd_composite1_daughters_eta = new TH1F("dpd_composite1_daughters_eta", "composite1_daughters_eta", 100, -10.0, 10.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite1_daughters_eta", m_dpd_composite1_daughters_eta); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite1_daughters_eta registration failed" << endmsg; - return sc; - } - - - - // composite 2 - m_dpd_composite2_number = new TH1F("dpd_composite2_number", "composite2_number", 50, 0.0, 50.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite2_number", m_dpd_composite2_number); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite2_number registration failed" << endmsg; - return sc; - } - - m_dpd_composite2_mass = new TH1F("dpd_composite2_mass", "composite2_mass", 200, 0.0, 200.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite2_mass", m_dpd_composite2_mass); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite2_mass registration failed" << endmsg; - return sc; - } - - m_dpd_composite2_pt = new TH1F("dpd_composite2_pt", "composite2_pt", 200, 0.0, 200.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite2_pt", m_dpd_composite2_pt); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite2_pt registration failed" << endmsg; - return sc; - } - - m_dpd_composite2_eta = new TH1F("dpd_composite2_eta", "composite2_eta", 100, -10.0, 10.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite2_eta", m_dpd_composite2_eta); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite2_eta registration failed" << endmsg; - return sc; - } - - - - // composite 3 - m_dpd_composite3_number = new TH1F("dpd_composite3_number", "composite3_number", 50, 0.0, 50.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite3_number", m_dpd_composite3_number); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite3_number registration failed" << endmsg; - return sc; - } - - m_dpd_composite3_mass = new TH1F("dpd_composite3_mass", "composite3_mass", 200, 0.0, 200.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite3_mass", m_dpd_composite3_mass); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite3_mass registration failed" << endmsg; - return sc; - } - - m_dpd_composite3_pt = new TH1F("dpd_composite3_pt", "composite3_pt", 200, 0.0, 200.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite3_pt", m_dpd_composite3_pt); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite3_pt registration failed" << endmsg; - return sc; - } - - m_dpd_composite3_eta = new TH1F("dpd_composite3_eta", "composite3_eta", 100, -10.0, 10.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite3_eta", m_dpd_composite3_eta); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite3_eta registration failed" << endmsg; - return sc; - } - - - - // composite 4 - m_dpd_composite4_number = new TH1F("dpd_composite4_number", "composite4_number", 50, 0.0, 50.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite4_number", m_dpd_composite4_number); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite4_number registration failed" << endmsg; - return sc; - } - - m_dpd_composite4_mass = new TH1F("dpd_composite4_mass", "composite4_mass", 200, 0.0, 200.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite4_mass", m_dpd_composite4_mass); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite4_mass registration failed" << endmsg; - return sc; - } - - m_dpd_composite4_pt = new TH1F("dpd_composite4_pt", "composite4_pt", 200, 0.0, 200.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite4_pt", m_dpd_composite4_pt); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite4_pt registration failed" << endmsg; - return sc; - } - - m_dpd_composite4_eta = new TH1F("dpd_composite4_eta", "composite4_eta", 100, -10.0, 10.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite4_eta", m_dpd_composite4_eta); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite4_eta registration failed" << endmsg; - return sc; - } - - - - // composite 5 - m_dpd_composite5_number = new TH1F("dpd_composite5_number", "composite5_number", 50, 0.0, 50.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite5_number", m_dpd_composite5_number); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite5_number registration failed" << endmsg; - return sc; - } - - m_dpd_composite5_mass = new TH1F("dpd_composite5_mass", "composite5_mass", 200, 0.0, 200.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite5_mass", m_dpd_composite5_mass); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite5_mass registration failed" << endmsg; - return sc; - } - - m_dpd_composite5_pt = new TH1F("dpd_composite5_pt", "composite5_pt", 200, 0.0, 200.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite5_pt", m_dpd_composite5_pt); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite5_pt registration failed" << endmsg; - return sc; - } - - m_dpd_composite5_eta = new TH1F("dpd_composite5_eta", "composite5_eta", 100, -10.0, 10.0); - sc = m_thistSvc->regHist("/AANT/d2pd/dpd_composite5_eta", m_dpd_composite5_eta); - if (sc.isFailure()) - { - msg() << MSG::ERROR << "ROOT Hist m_dpd_composite5_eta registration failed" << endmsg; - return sc; - } - - - - - return sc; -} - - - - -//=========================================================================== -// Finalize - delete any memory allocation from the heap -//=========================================================================== - -StatusCode CheckD2PD::finalize() -{ - //----------------------------------------- - // Declare the simple StatusCode - //----------------------------------------- - StatusCode sc = StatusCode::SUCCESS ; - - return sc; - -} - - - - -//=========================================================================== -// Execute - called by the event loop on event by event -//=========================================================================== - -StatusCode CheckD2PD::execute() -{ - msg() << MSG::DEBUG << "execute()" << endmsg; - - StatusCode sc = StatusCode::SUCCESS; - - // do the actual checking of the D2PD - sc = checkD2PD(); - if ( sc.isFailure() ) - { - msg() << MSG::ERROR << "The check of the D2PD failed" << endmsg; - sc = StatusCode::SUCCESS; - } - - return sc; - -} - - - - -//=========================================================================== -// zee on esd: called by execute() -//=========================================================================== - -StatusCode CheckD2PD::checkD2PD() -{ - msg() << MSG::DEBUG << "checkD2PD()" << endmsg; - - StatusCode sc = StatusCode::SUCCESS; - - // read the DPD composite particle container from persistecy storage - const CompositeParticleContainer* compPartCont1(0); - const CompositeParticleContainer* compPartCont2(0); - const CompositeParticleContainer* compPartCont3(0); - const CompositeParticleContainer* compPartCont4(0); - const CompositeParticleContainer* compPartCont5(0); - sc=evtStore()->retrieve( compPartCont1, m_compPartCollName1 ); - if( sc.isFailure() || !compPartCont1 ) - { - msg() << MSG::WARNING - << "No DPD Composite Particle Container 1 found" - << endmsg; - return sc; - } - msg() << MSG::DEBUG << "CompositeParticleContainer1 successfully retrieved! It has " << compPartCont1->size() << " entries." << endmsg; - - if ( m_compPartCollName2 != "" ) - { - sc=evtStore()->retrieve( compPartCont2, m_compPartCollName2 ); - if( sc.isFailure() || !compPartCont2 ) - { - msg() << MSG::WARNING - << "No DPD Composite Particle Container 2 found" - << endmsg; - return sc; - } - msg() << MSG::DEBUG << "CompositeParticleContainer2 successfully retrieved! It has " << compPartCont2->size() << " entries." << endmsg; - } - - if ( m_compPartCollName3 != "" ) - { - sc=evtStore()->retrieve( compPartCont3, m_compPartCollName3 ); - if( sc.isFailure() || !compPartCont3 ) - { - msg() << MSG::WARNING - << "No DPD Composite Particle Container 3 found" - << endmsg; - return sc; - } - msg() << MSG::DEBUG << "CompositeParticleContainer3 successfully retrieved! It has " << compPartCont3->size() << " entries." << endmsg; - } - - if ( m_compPartCollName4 != "" ) - { - sc=evtStore()->retrieve( compPartCont4, m_compPartCollName4 ); - if( sc.isFailure() || !compPartCont4 ) - { - msg() << MSG::WARNING - << "No DPD Composite Particle Container 4 found" - << endmsg; - return sc; - } - msg() << MSG::DEBUG << "CompositeParticleContainer4 successfully retrieved! It has " << compPartCont4->size() << " entries." << endmsg; - } - - if ( m_compPartCollName5 != "" ) - { - sc=evtStore()->retrieve( compPartCont5, m_compPartCollName5 ); - if( sc.isFailure() || !compPartCont5 ) - { - msg() << MSG::WARNING - << "No DPD Composite Particle Container 5 found" - << endmsg; - return sc; - } - msg() << MSG::DEBUG << "CompositeParticleContainer5 successfully retrieved! It has " << compPartCont5->size() << " entries." << endmsg; - } - - - - // Get the number of composite particles per event - unsigned int nCompPart1 = compPartCont1->size(); - m_dpd_composite1_number->Fill( nCompPart1, 1.); - - // iterators over the container - CompositeParticleContainer::const_iterator compPart1Itr = compPartCont1->begin(); - CompositeParticleContainer::const_iterator compPart1ItrEnd = compPartCont1->end(); - - // loop over the composite particle container - // and fill the mass, pt, and eta histograms - for (; compPart1Itr != compPart1ItrEnd; ++compPart1Itr ) - { - // Get the current electron - const CompositeParticle* compPart1 = *compPart1Itr; - - // Fill basic electron properties into a histogram - m_dpd_composite1_mass->Fill( compPart1->m()/GeV, 1.0 ); - m_dpd_composite1_pt->Fill( compPart1->pt()/GeV, 1.0 ); - m_dpd_composite1_eta->Fill( compPart1->eta(), 1.0 ); - - // Get the number of daughters - m_dpd_composite1_nDaughter->Fill( compPart1->navigableBase().size(), 1.0 ); - - // Loop over the daughters and fill the daughter histograms - CompositeParticle::ConstituentsIter_t comp1DaughterItr = compPart1->constituents_begin(); - CompositeParticle::ConstituentsIter_t comp1DaughterItrEnd = compPart1->constituents_end(); - for (; comp1DaughterItr != comp1DaughterItrEnd; ++comp1DaughterItr ) - { - // Get the current daughter particle - const INavigable4Momentum* daughterPart = *comp1DaughterItr; - - // Fill the daughter histograms - m_dpd_composite1_daughters_pt->Fill( daughterPart->pt()/GeV, 1.0 ); - m_dpd_composite1_daughters_eta->Fill( daughterPart->eta(), 1.0 ); - } - } - - - if ( m_compPartCollName2 != "" ) - { - // Get the number of composite particles per event - unsigned int nCompPart2 = compPartCont2->size(); - m_dpd_composite2_number->Fill( nCompPart2, 1.); - - // iterators over the container - CompositeParticleContainer::const_iterator compPart2Itr = compPartCont2->begin(); - CompositeParticleContainer::const_iterator compPart2ItrEnd = compPartCont2->end(); - - // loop over the composite particle container - // and fill the mass, pt, and eta histograms - for (; compPart2Itr != compPart2ItrEnd; ++compPart2Itr ) - { - // Get the current electron - const CompositeParticle* compPart2 = *compPart2Itr; - - // Fill basic electron properties into a histogram - m_dpd_composite2_mass->Fill( compPart2->m()/GeV, 1.); - m_dpd_composite2_pt->Fill( compPart2->pt()/GeV, 1.); - m_dpd_composite2_eta->Fill( compPart2->eta(), 1.); - } - } - - if ( m_compPartCollName3 != "" ) - { - // Get the number of composite particles per event - unsigned int nCompPart3 = compPartCont3->size(); - m_dpd_composite3_number->Fill( nCompPart3, 1.); - - // iterators over the container - CompositeParticleContainer::const_iterator compPart3Itr = compPartCont3->begin(); - CompositeParticleContainer::const_iterator compPart3ItrEnd = compPartCont3->end(); - - // loop over the composite particle container - // and fill the mass, pt, and eta histograms - for (; compPart3Itr != compPart3ItrEnd; ++compPart3Itr ) - { - // Get the current electron - const CompositeParticle* compPart3 = *compPart3Itr; - - // Fill basic electron properties into a histogram - m_dpd_composite3_mass->Fill( compPart3->m()/GeV, 1.); - m_dpd_composite3_pt->Fill( compPart3->pt()/GeV, 1.); - m_dpd_composite3_eta->Fill( compPart3->eta(), 1.); - } - } - - - if ( m_compPartCollName4 != "" ) - { - // Get the number of composite particles per event - unsigned int nCompPart4 = compPartCont4->size(); - m_dpd_composite4_number->Fill( nCompPart4, 1.); - - // iterators over the container - CompositeParticleContainer::const_iterator compPart4Itr = compPartCont4->begin(); - CompositeParticleContainer::const_iterator compPart4ItrEnd = compPartCont4->end(); - - // loop over the composite particle container - // and fill the mass, pt, and eta histograms - for (; compPart4Itr != compPart4ItrEnd; ++compPart4Itr ) - { - // Get the current electron - const CompositeParticle* compPart4 = *compPart4Itr; - - // Fill basic electron properties into a histogram - m_dpd_composite4_mass->Fill( compPart4->m()/GeV, 1.); - m_dpd_composite4_pt->Fill( compPart4->pt()/GeV, 1.); - m_dpd_composite4_eta->Fill( compPart4->eta(), 1.); - } - } - - - if ( m_compPartCollName5 != "" ) - { - // Get the number of composite particles per event - unsigned int nCompPart5 = compPartCont5->size(); - m_dpd_composite5_number->Fill( nCompPart5, 1.); - - // iterators over the container - CompositeParticleContainer::const_iterator compPart5Itr = compPartCont5->begin(); - CompositeParticleContainer::const_iterator compPart5ItrEnd = compPartCont5->end(); - - // loop over the composite particle container - // and fill the mass, pt, and eta histograms - for (; compPart5Itr != compPart5ItrEnd; ++compPart5Itr ) - { - // Get the current electron - const CompositeParticle* compPart5 = *compPart5Itr; - - // Fill basic electron properties into a histogram - m_dpd_composite5_mass->Fill( compPart5->m()/GeV, 1.); - m_dpd_composite5_pt->Fill( compPart5->pt()/GeV, 1.); - m_dpd_composite5_eta->Fill( compPart5->eta(), 1.); - } - } - - - - return sc; -} - diff --git a/PhysicsAnalysis/D2PDMaker/src/CreateControlPlots.cxx b/PhysicsAnalysis/D2PDMaker/src/CreateControlPlots.cxx deleted file mode 100644 index 4a5ba9fce80a1bc6fecca087420cdc1baac11bc5..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/src/CreateControlPlots.cxx +++ /dev/null @@ -1,447 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -//=========================================================================== -// Name : CreateControlPlots.h -/** - @class CreateControlPlots - - @author Karsten Koeneke <karsten.koeneke@cernSPAMNOT.ch> - - @date February 2011 - - @brief Make some histograms. -*/ -//=========================================================================== - -// Preprocessor magic for debugging -#define XXX std::cout << "I am here: " << __FILE__ << ":" << __LINE__ << std::endl; - - -// this class' header file -#include "D2PDMaker/CreateControlPlots.h" - -// Gaudi includes -#include "GaudiKernel/ITHistSvc.h" - -// vertex includes -#include "VxVertex/VxContainer.h" -#include "VxVertex/VxCandidate.h" -#include "VxVertex/VxTrackAtVertex.h" -#include "GeoPrimitives/GeoPrimitives.h" - -// STL includes -#include <string> -#include <vector> -#include <cfloat> -#include <climits> -#include <math.h> - -// CLHEP includes -#include "CLHEP/Units/SystemOfUnits.h" - -// ROOT includes -#include "TTree.h" -#include "TMath.h" -#include "TH1.h" -#include "TH2.h" - - - -//=========================================================================== -// Constructor -//=========================================================================== -CreateControlPlots::CreateControlPlots(const std::string& name, - ISvcLocator* pSvcLocator) : - AthAlgorithm(name, pSvcLocator), - m_thistSvc( "THistSvc", name ), - m_nEventsProcessed(0), - m_vxcand(0), - m_trackAtVertex(0), - m_vtx_number(nullptr) -{ - // The container name & selection cuts - declareProperty("inputVertexCollection", m_vtxCollName = "", "The name (key) of the vertex collection" ); - - //declareProperty("THistSvcName", m_thistSvcName = "THistSvc/THistSvc", "Name of the IThistSvc" ); - declareProperty("THistService", m_thistSvc, "The IThistSvc" ); - - declareProperty("outputStreamName", m_outStreamName = "AANT", "Name of the output stream" ); - declareProperty("rootDirectoryName", m_rootDirName = this->name(), "Name of the output directory inside the root file" ); - declareProperty("histogramPrefixName", m_histPreName = "", "Prefix for histogram names" ); - - declareProperty("minNumberVxTracks", m_minNumberVxTracks=0, "Min number of tracks" ); - declareProperty("maxNumberVxTracks", m_maxNumberVxTracks=INT_MAX, "Max number of tracks" ); - - declareProperty("acceptVertexTypeList", m_acceptVertexTypeList, - "VertexType list for accept (logical OR combination)" ); - declareProperty("requireVertexTypeList", m_requireVertexTypeList, - "VertexType list for require (logical AND combination)" ); - declareProperty("vetoVertexTypeList", m_vetoVertexTypeList, - "VertexType list for veto (logical NOT combination)" ); - - declareProperty("vertexXMin", m_minVertexX=-DBL_MAX, "Min x-position of the vertex" ); - declareProperty("vertexXMax", m_maxVertexX=DBL_MAX, "Max x-position of the vertex" ); - - declareProperty("vertexYMin", m_minVertexY=-DBL_MAX, "Min y-position of the vertex" ); - declareProperty("vertexYMax", m_maxVertexY=DBL_MAX, "Max y-position of the vertex" ); - - declareProperty("vertexZMin", m_minVertexZ=-DBL_MAX, "Min z-position of the vertex" ); - declareProperty("vertexZMax", m_maxVertexZ=DBL_MAX, "Max z-position of the vertex" ); - -} - - - - -//=========================================================================== -// Destructor - check up memory allocation -// delete any memory allocation on the heap -//=========================================================================== - -CreateControlPlots::~CreateControlPlots() {} - - - - -//=========================================================================== -// Initialize -// initialize StoreGate -// get a handle on the analysis tools -// book histograms -//=========================================================================== - -StatusCode CreateControlPlots::initialize() -{ - // Simple status message of where we are - if (msgLvl(MSG::INFO)) - { - msg(MSG::INFO) - << "Initializing CreateControlPlots" - << endmsg; - - // Print out the used configuration - msg(MSG::INFO) << " using inputCollection = " << m_vtxCollName << endmsg; - - //msg(MSG::INFO) << " using THistSvcName = " << m_thistSvcName << endmsg; - msg(MSG::INFO) << " using THistService = " << m_thistSvc << endmsg; - - msg(MSG::INFO) << " using outputStreamName = " << m_outStreamName << endmsg; - msg(MSG::INFO) << " using rootDirectoryName = " << m_rootDirName << endmsg; - msg(MSG::INFO) << " using histogramPrefixName = " << m_histPreName << endmsg; - - msg(MSG::INFO) << " using minNumberVxTracks = " << m_minNumberVxTracks << endmsg; - msg(MSG::INFO) << " using maxNumberVxTracks = " << m_maxNumberVxTracks << endmsg; - - msg(MSG::INFO) << " using acceptVertexTypeList = " << m_acceptVertexTypeList << endmsg; - msg(MSG::INFO) << " using requireVertexTypeList = " << m_requireVertexTypeList << endmsg; - msg(MSG::INFO) << " using vetoVertexTypeList = " << m_vetoVertexTypeList << endmsg; - - msg(MSG::INFO) << " using vertexXMin = " << m_minVertexX << endmsg; - msg(MSG::INFO) << " using vertexXMin = " << m_maxVertexX << endmsg; - - msg(MSG::INFO) << " using vertexYMin = " << m_minVertexY << endmsg; - msg(MSG::INFO) << " using vertexYMin = " << m_maxVertexY << endmsg; - - msg(MSG::INFO) << " using vertexZMin = " << m_minVertexZ << endmsg; - msg(MSG::INFO) << " using vertexZMin = " << m_maxVertexZ << endmsg; - } - - - // Create the default status code - StatusCode sc = StatusCode::SUCCESS; - - - // The histogramming service - //sc = service( m_thistSvcName, m_thistSvc); - sc = m_thistSvc.retrieve(); - if ( !sc.isSuccess() ) - { - if (msgLvl(MSG::ERROR)) - { - msg(MSG::ERROR) - << "Unable to retrieve pointer to THistSvc" - << endmsg; - } - return sc; - } - - - // Create the prefix of hostogram names for the THistSvc - std::string tHistName = "/" + m_outStreamName + "/" + m_rootDirName + "/" + m_histPreName; - - //==================================== - // the histograms - //==================================== - // vertex distributions - m_vtx_number = new TH1F("vtx_number", "vtx_number", 50, 0.0, 50.0); - sc = m_thistSvc->regHist( tHistName+"vtx_number", m_vtx_number); - if (sc.isFailure()) - { - if (msgLvl(MSG::ERROR)) - { - msg(MSG::ERROR) - << "ROOT Hist m_vtx_number registration failed" - << endmsg; - } - return sc; - } - - - // Do some sanity checks on the user configuration - if ( m_vtxCollName == "" ) - { - if (msgLvl(MSG::ERROR)) - { - msg(MSG::ERROR) - << "Empty input collection! Please configure it properly!" - << endmsg; - } - sc = StatusCode::FAILURE ; - } - - - // Initialize the counters to zero - m_nEventsProcessed = 0 ; - - - return sc; -} - - - - -//=========================================================================== -// Finalize - delete any memory allocation from the heap -//=========================================================================== - -StatusCode CreateControlPlots::finalize() -{ - //----------------------------------------- - // Declare the simple StatusCode - //----------------------------------------- - StatusCode sc = StatusCode::SUCCESS ; - - // Output message - if (msgLvl(MSG::INFO)) - { - msg(MSG::INFO) - << "FINALIZING AFTER ALL EVENTS ARE PROCESSED" - << endmsg; - } - - return sc; -} - - - - -//=========================================================================== -// Execute - called by the event loop on event by event -//=========================================================================== - -StatusCode CreateControlPlots::execute() -{ - // Output message - if (msgLvl(MSG::DEBUG)) - { - msg(MSG::DEBUG) - << "execute()" - << endmsg; - } - - - // Create the default status code - StatusCode sc = StatusCode::SUCCESS; - - - // read the DPD composite particle container from persistecy storage - const VxContainer* vtxCont(0); - sc = evtStore()->retrieve( vtxCont, m_vtxCollName ); - if( sc.isFailure() || !vtxCont ) - { - if (msgLvl(MSG::WARNING)) - { - msg(MSG::WARNING) - << "No Vertex Container with name " - << m_vtxCollName - << " found" - << endmsg; - } - return sc; - } - if (msgLvl(MSG::DEBUG)) - { - msg(MSG::DEBUG) - << "VertexContainer with name " - << m_vtxCollName - << " successfully retrieved! It has" - << vtxCont->size() - << " entries." - << endmsg; - } - - - // Create the counters for this event - unsigned int nVtx(0); - - - // The Iterator over the VxContainer - VxContainer::const_iterator vtxItr = vtxCont->begin(); - VxContainer::const_iterator vtxItrE = vtxCont->end(); - - // Loop over the event's vertices - for (; vtxItr != vtxItrE; vtxItr++) - { - m_vxcand = (*vtxItr); - if ( m_vxcand == NULL ) - { - if (msgLvl(MSG::ERROR)) - { - msg(MSG::ERROR) - << "Could not cast the vertex iterator to a VxCandidate! Skipping this vertex. " - << endmsg; - } - continue; - } - else - { - if (msgLvl(MSG::DEBUG)) - { - msg(MSG::DEBUG) - << "Successfully casted the vertex iterator to a VxCandidate." - << endmsg ; - } - } - - // Default for this vertex - bool passThisVertex(true); - - // Check the type of the vertex and hand - int vertexType = (int) m_vxcand->vertexType(); - - // VertexType accept list selection - if ( passThisVertex ) - { - // Deal with the logical OR combination from the m_acceptVertexTypeList - bool passAccept(false); - if ( m_acceptVertexTypeList.size() == 0 ) - { - passAccept = true; - } - std::vector<int>::iterator acceptItr = m_acceptVertexTypeList.begin(); - std::vector<int>::iterator acceptItrEnd = m_acceptVertexTypeList.end(); - for ( ; acceptItr != acceptItrEnd; ++acceptItr ) - { - passAccept = passAccept || ( vertexType == (*acceptItr) ); - } // End: loop over acceptVertexTypeList - passThisVertex = passAccept; - } - - // VertexType require list selection - if ( passThisVertex ) - { - // Deal with the logical AND combination from the m_requireVertexTypeList - std::vector<int>::iterator requireItr = m_requireVertexTypeList.begin(); - std::vector<int>::iterator requireItrEnd = m_requireVertexTypeList.end(); - for ( ; requireItr != requireItrEnd; ++requireItr ) - { - passThisVertex = passThisVertex && ( vertexType == (*requireItr) ); - } // End: loop over requireVertexTypeList - } - - // VertexType veto list selection - if ( passThisVertex ) - { - // Deal with the logical NOT combination from the m_vetoVertexTypeList - bool passVeto(false); - std::vector<int>::iterator vetoItr = m_vetoVertexTypeList.begin(); - std::vector<int>::iterator vetoItrEnd = m_vetoVertexTypeList.end(); - for ( ; vetoItr != vetoItrEnd; ++vetoItr ) - { - passVeto = passVeto || ( vertexType == (*vetoItr) ); - } // End: loop over vetoVertexTypeList - passThisVertex = !passVeto; - } - - - - // If the vertex at hand has the correct type, then check the other properties - if ( passThisVertex ) - { - // Get the recVertex for this vertex - const Trk::RecVertex recVertex = m_vxcand->recVertex(); - //Trk::GlobalPosition globPos = Trk::GlobalPosition(recVertex.position()); - const Amg::Vector3D& globPos = recVertex.position(); - - // Check if the vertex position is within our cut limits - if ( globPos.x() <= m_minVertexX || globPos.x() >= m_maxVertexX ) - { - passThisVertex = false; - } - if ( globPos.y() <= m_minVertexY || globPos.y() >= m_maxVertexY ) - { - passThisVertex = false; - } - if ( globPos.z() <= m_minVertexZ || globPos.z() >= m_maxVertexZ ) - { - passThisVertex = false; - } - - } // End: if ( passThisVertex ) - - - - // If the vertex at hand has the correct type, then check the other properties - if ( passThisVertex ) - { - // Get the track at this vertex - m_trackAtVertex = m_vxcand->vxTrackAtVertex(); - if ( m_trackAtVertex == NULL ) - { - if (msgLvl(MSG::ERROR)) - { - msg(MSG::ERROR) - << "Could not cast the vertex candidate to a vxTrackAtVertex vector! Skipping this vertex. " - << endmsg; - continue; - } - } - else - { - if (msgLvl(MSG::DEBUG)) - { - msg(MSG::DEBUG) - << "Successfully casted the vertex candidate to a vxTrackAtVertex vector." - << endmsg ; - } - } - - // Check if the number of tracks at the vertex is within our cut limits - unsigned int nTrk( m_trackAtVertex->size() ); - if ( nTrk >= m_minNumberVxTracks && nTrk <= m_maxNumberVxTracks ) - { - passThisVertex = true; - } - else - { - passThisVertex = false; - } - } // End: if ( passThisVertex ) - - if ( passThisVertex ) - { - // Increment the number of vertex counter - ++nVtx; - } - - } // End: Loop over all vertices - - // Fill the number of vertices per event into a histogram - m_vtx_number->Fill( nVtx, 1.); - - - return sc; -} - diff --git a/PhysicsAnalysis/D2PDMaker/src/components/D2PDMaker_entries.cxx b/PhysicsAnalysis/D2PDMaker/src/components/D2PDMaker_entries.cxx index cbd53e6640dd76e37d5ce9b58c8c2a82fce6e3f9..6629ff4aac05eb13c6fd052ff8930f2cf5e62b70 100644 --- a/PhysicsAnalysis/D2PDMaker/src/components/D2PDMaker_entries.cxx +++ b/PhysicsAnalysis/D2PDMaker/src/components/D2PDMaker_entries.cxx @@ -8,8 +8,6 @@ #include "D2PDMaker/D2PDTrackParticleSelector.h" #include "D2PDMaker/D2PDVertexSelector.h" #include "D2PDMaker/D2PDTruthParticleSelector.h" -#include "D2PDMaker/CheckD2PD.h" -#include "D2PDMaker/CreateControlPlots.h" #include "D2PDMaker/FilterTool.h" DECLARE_COMPONENT( D2PDINavigable4MomentumSelector ) @@ -22,7 +20,4 @@ DECLARE_COMPONENT( D2PDJetSelector ) DECLARE_COMPONENT( D2PDTrackParticleSelector ) DECLARE_COMPONENT( D2PDVertexSelector ) DECLARE_COMPONENT( D2PDTruthParticleSelector ) -DECLARE_COMPONENT( CheckD2PD ) -DECLARE_COMPONENT( CreateControlPlots ) DECLARE_COMPONENT( FilterTool ) - diff --git a/PhysicsAnalysis/D2PDMaker/xml/data10_7TeV.periodAllYear_DetStatus-v03-pro05_WZjets_allchannels.xml b/PhysicsAnalysis/D2PDMaker/xml/data10_7TeV.periodAllYear_DetStatus-v03-pro05_WZjets_allchannels.xml deleted file mode 100644 index 0cfa250c46069a3269583b3bcf1e4670ac4ca3e7..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/D2PDMaker/xml/data10_7TeV.periodAllYear_DetStatus-v03-pro05_WZjets_allchannels.xml +++ /dev/null @@ -1,1001 +0,0 @@ -<?xml version="1.0" ?> -<!DOCTYPE LumiRangeCollection - SYSTEM 'http://atlas-runquery.cern.ch/LumiRangeCollection.dtd'> -<!-- Good-runs-list created by AtlRunQuery.py on 2011-04-05 06:16:52.683473 --> -<LumiRangeCollection> - <NamedLumiRange> - <Name>WZjets_allchannels</Name> - <Version>2.1</Version> - <Metadata Name="Query">find run data10_7TeV.periodAllYear and partition ATLAS and db DATA and dq global_status DEFECTS#DetStatus-v03-pro05 g and dq atlsol DEFECTS#DetStatus-v03-pro05 g and dq atltor DEFECTS#DetStatus-v03-pro05 g and dq trig_muo DEFECTS#DetStatus-v03-pro05 g and dq cp_mu_mmuidcb DEFECTS#DetStatus-v03-pro05 g and dq cp_mu_mstaco DEFECTS#DetStatus-v03-pro05 g and dq trig_ele DEFECTS#DetStatus-v03-pro05 g and dq cp_eg_electron_barrel DEFECTS#DetStatus-v03-pro05 g and dq cp_eg_electron_endcap DEFECTS#DetStatus-v03-pro05 g and dq cp_eg_electron_forward DEFECTS#DetStatus-v03-pro05 g and dq trig_jet DEFECTS#DetStatus-v03-pro05 g and dq cp_jet_jetb DEFECTS#DetStatus-v03-pro05 g and dq cp_jet_jetea DEFECTS#DetStatus-v03-pro05 g and dq cp_jet_jetec DEFECTS#DetStatus-v03-pro05 g and dq cp_jet_jetfa DEFECTS#DetStatus-v03-pro05 g and dq cp_jet_jetfc DEFECTS#DetStatus-v03-pro05 g and dq trig_met_metcalo DEFECTS#DetStatus-v03-pro05 g and dq cp_met DEFECTS#DetStatus-v03-pro05 g and dq cp_btag_life DEFECTS#DetStatus-v03-pro05 g and dq pix0 DEFECTS#DetStatus-v03-pro05 g and dq cp_tracking DEFECTS#DetStatus-v03-pro05 g and dq idvx DEFECTS#DetStatus-v03-pro05 g and dq idbs DEFECTS#DetStatus-v03-pro05 g and dq lumi DEFECTS#DetStatus-v03-pro05 g </Metadata> - <Metadata Name="RunList">167844,167776,167680,167661,167607,167576,167575,166964,166927,166924,166856,166850,166786,166658,166466,166198,166143,166142,166097,165956,165954,165821,165818,165815,165767,165732,165703,165632,165591,162882,162843,162764,162690,162623,162620,162577,162576,162526,162347,161948,161562,161520,161407,161379,161118,160980,160975,160963,160958,160954,160953,160899,160879,160801,160800,160736,160613,160530,160479,160472,160387,159224,159203,159202,159179,159113,159086,159041,158975,158801,158632,158582,158548,158545,158466,158443,158299,158269,156682,155697,155678,155669,155634,155569,155280,155228,155160,155116,155112,155073,153565,153159,153030,152994,152933,152878,152845,152844,152777,152508,152441,152409,152345,152221,152214,152166</Metadata> - <Metadata Name="RQTSVNVersion">CoolRunQuery-unknown</Metadata> - <Metadata Name="StreamListInfo"> - <Stream Name="physics_Background" TotalNumOfEvents="408266" NumOfSelectedEvents="391352"/> - <Stream Name="physics_CosmicCalo" TotalNumOfEvents="35097447" NumOfSelectedEvents="17521019"/> - <Stream Name="physics_CosmicCaloEM" TotalNumOfEvents="508482" NumOfSelectedEvents="252176"/> - <Stream Name="physics_CosmicMuons" TotalNumOfEvents="2805550" NumOfSelectedEvents="2431182"/> - <Stream Name="physics_Egamma" TotalNumOfEvents="113622112" NumOfSelectedEvents="102042688"/> - <Stream Name="physics_EnhancedBias" TotalNumOfEvents="4645356" NumOfSelectedEvents="4016646"/> - <Stream Name="physics_IDCosmic" TotalNumOfEvents="87191" NumOfSelectedEvents="73978"/> - <Stream Name="physics_JetTauEtmiss" TotalNumOfEvents="146836057" NumOfSelectedEvents="131297565"/> - <Stream Name="physics_L1Calo" TotalNumOfEvents="99862724" NumOfSelectedEvents="85324624"/> - <Stream Name="physics_L1CaloEM" TotalNumOfEvents="1828374" NumOfSelectedEvents="1287244"/> - <Stream Name="physics_L1MinBias" TotalNumOfEvents="1616566" NumOfSelectedEvents="0"/> - <Stream Name="physics_L1Muon" TotalNumOfEvents="15605" NumOfSelectedEvents="0"/> - <Stream Name="physics_MinBias" TotalNumOfEvents="132816693" NumOfSelectedEvents="96018119"/> - <Stream Name="physics_Muons" TotalNumOfEvents="153916109" NumOfSelectedEvents="137599208"/> - <Stream Name="physics_MuonswBeam" TotalNumOfEvents="44336588" NumOfSelectedEvents="35744997"/> - <Stream Name="physics_RNDM" TotalNumOfEvents="16377381" NumOfSelectedEvents="7067216"/> - <Stream Name="physics_Standby" TotalNumOfEvents="8364360" NumOfSelectedEvents="0"/> - <Stream Name="physics_ZeroBias" TotalNumOfEvents="2891385" NumOfSelectedEvents="1920985"/> - </Metadata> - <LumiBlockCollection> - <Run>167844</Run> - <LBRange Start="79" End="89"/> - <LBRange Start="91" End="133"/> - <LBRange Start="139" End="190"/> - <LBRange Start="192" End="198"/> - <LBRange Start="201" End="270"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>167776</Run> - <LBRange Start="124" End="125"/> - <LBRange Start="127" End="127"/> - <LBRange Start="132" End="204"/> - <LBRange Start="206" End="242"/> - <LBRange Start="253" End="332"/> - <LBRange Start="334" End="512"/> - <LBRange Start="514" End="546"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>167680</Run> - <LBRange Start="33" End="48"/> - <LBRange Start="53" End="84"/> - <LBRange Start="86" End="129"/> - <LBRange Start="131" End="139"/> - <LBRange Start="142" End="223"/> - <LBRange Start="226" End="249"/> - <LBRange Start="251" End="266"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>167661</Run> - <LBRange Start="372" End="382"/> - <LBRange Start="386" End="439"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>167607</Run> - <LBRange Start="86" End="103"/> - <LBRange Start="105" End="112"/> - <LBRange Start="117" End="134"/> - <LBRange Start="141" End="143"/> - <LBRange Start="146" End="146"/> - <LBRange Start="148" End="183"/> - <LBRange Start="186" End="216"/> - <LBRange Start="218" End="247"/> - <LBRange Start="253" End="327"/> - <LBRange Start="331" End="345"/> - <LBRange Start="347" End="386"/> - <LBRange Start="390" End="391"/> - <LBRange Start="394" End="426"/> - <LBRange Start="430" End="430"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>167576</Run> - <LBRange Start="8" End="14"/> - <LBRange Start="16" End="31"/> - <LBRange Start="33" End="67"/> - <LBRange Start="70" End="70"/> - <LBRange Start="74" End="100"/> - <LBRange Start="106" End="193"/> - <LBRange Start="196" End="222"/> - <LBRange Start="226" End="263"/> - <LBRange Start="265" End="293"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>167575</Run> - <LBRange Start="125" End="132"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>166964</Run> - <LBRange Start="319" End="322"/> - <LBRange Start="326" End="327"/> - <LBRange Start="329" End="333"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>166927</Run> - <LBRange Start="7" End="11"/> - <LBRange Start="13" End="19"/> - <LBRange Start="21" End="63"/> - <LBRange Start="65" End="74"/> - <LBRange Start="76" End="93"/> - <LBRange Start="95" End="102"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>166924</Run> - <LBRange Start="51" End="51"/> - <LBRange Start="53" End="60"/> - <LBRange Start="62" End="86"/> - <LBRange Start="88" End="117"/> - <LBRange Start="119" End="154"/> - <LBRange Start="156" End="176"/> - <LBRange Start="178" End="200"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>166856</Run> - <LBRange Start="142" End="142"/> - <LBRange Start="144" End="145"/> - <LBRange Start="147" End="155"/> - <LBRange Start="157" End="158"/> - <LBRange Start="160" End="164"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>166850</Run> - <LBRange Start="146" End="169"/> - <LBRange Start="226" End="270"/> - <LBRange Start="272" End="310"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>166786</Run> - <LBRange Start="267" End="267"/> - <LBRange Start="269" End="276"/> - <LBRange Start="279" End="279"/> - <LBRange Start="281" End="281"/> - <LBRange Start="283" End="286"/> - <LBRange Start="288" End="288"/> - <LBRange Start="290" End="310"/> - <LBRange Start="316" End="316"/> - <LBRange Start="326" End="334"/> - <LBRange Start="336" End="339"/> - <LBRange Start="341" End="357"/> - <LBRange Start="359" End="371"/> - <LBRange Start="373" End="373"/> - <LBRange Start="375" End="378"/> - <LBRange Start="380" End="430"/> - <LBRange Start="432" End="476"/> - <LBRange Start="478" End="487"/> - <LBRange Start="490" End="516"/> - <LBRange Start="528" End="528"/> - <LBRange Start="530" End="536"/> - <LBRange Start="538" End="540"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>166658</Run> - <LBRange Start="144" End="155"/> - <LBRange Start="162" End="163"/> - <LBRange Start="165" End="176"/> - <LBRange Start="179" End="181"/> - <LBRange Start="183" End="203"/> - <LBRange Start="207" End="207"/> - <LBRange Start="209" End="231"/> - <LBRange Start="233" End="236"/> - <LBRange Start="238" End="256"/> - <LBRange Start="258" End="263"/> - <LBRange Start="267" End="270"/> - <LBRange Start="272" End="275"/> - <LBRange Start="281" End="284"/> - <LBRange Start="286" End="288"/> - <LBRange Start="290" End="304"/> - <LBRange Start="314" End="319"/> - <LBRange Start="321" End="323"/> - <LBRange Start="325" End="334"/> - <LBRange Start="337" End="353"/> - <LBRange Start="355" End="363"/> - <LBRange Start="365" End="383"/> - <LBRange Start="385" End="385"/> - <LBRange Start="387" End="414"/> - <LBRange Start="416" End="429"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>166466</Run> - <LBRange Start="81" End="81"/> - <LBRange Start="83" End="95"/> - <LBRange Start="118" End="138"/> - <LBRange Start="141" End="145"/> - <LBRange Start="147" End="159"/> - <LBRange Start="163" End="163"/> - <LBRange Start="165" End="181"/> - <LBRange Start="184" End="189"/> - <LBRange Start="191" End="213"/> - <LBRange Start="215" End="215"/> - <LBRange Start="217" End="244"/> - <LBRange Start="247" End="247"/> - <LBRange Start="249" End="252"/> - <LBRange Start="256" End="257"/> - <LBRange Start="259" End="269"/> - <LBRange Start="271" End="276"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>166198</Run> - <LBRange Start="93" End="95"/> - <LBRange Start="118" End="129"/> - <LBRange Start="131" End="133"/> - <LBRange Start="135" End="136"/> - <LBRange Start="146" End="157"/> - <LBRange Start="291" End="296"/> - <LBRange Start="298" End="299"/> - <LBRange Start="301" End="309"/> - <LBRange Start="311" End="352"/> - <LBRange Start="363" End="426"/> - <LBRange Start="428" End="429"/> - <LBRange Start="438" End="466"/> - <LBRange Start="468" End="499"/> - <LBRange Start="501" End="510"/> - <LBRange Start="513" End="520"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>166143</Run> - <LBRange Start="4" End="48"/> - <LBRange Start="50" End="52"/> - <LBRange Start="54" End="62"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>166142</Run> - <LBRange Start="136" End="141"/> - <LBRange Start="143" End="146"/> - <LBRange Start="148" End="151"/> - <LBRange Start="153" End="153"/> - <LBRange Start="155" End="162"/> - <LBRange Start="164" End="168"/> - <LBRange Start="170" End="171"/> - <LBRange Start="174" End="176"/> - <LBRange Start="183" End="184"/> - <LBRange Start="186" End="193"/> - <LBRange Start="196" End="219"/> - <LBRange Start="221" End="221"/> - <LBRange Start="223" End="234"/> - <LBRange Start="236" End="262"/> - <LBRange Start="264" End="277"/> - <LBRange Start="279" End="285"/> - <LBRange Start="288" End="295"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>166097</Run> - <LBRange Start="150" End="164"/> - <LBRange Start="166" End="169"/> - <LBRange Start="171" End="173"/> - <LBRange Start="185" End="185"/> - <LBRange Start="187" End="187"/> - <LBRange Start="189" End="196"/> - <LBRange Start="198" End="201"/> - <LBRange Start="203" End="214"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>165956</Run> - <LBRange Start="2" End="6"/> - <LBRange Start="8" End="11"/> - <LBRange Start="13" End="23"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>165954</Run> - <LBRange Start="121" End="124"/> - <LBRange Start="126" End="130"/> - <LBRange Start="132" End="138"/> - <LBRange Start="140" End="142"/> - <LBRange Start="144" End="145"/> - <LBRange Start="147" End="153"/> - <LBRange Start="155" End="155"/> - <LBRange Start="158" End="163"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>165821</Run> - <LBRange Start="2" End="3"/> - <LBRange Start="7" End="21"/> - <LBRange Start="23" End="30"/> - <LBRange Start="42" End="63"/> - <LBRange Start="65" End="76"/> - <LBRange Start="78" End="82"/> - <LBRange Start="84" End="89"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>165818</Run> - <LBRange Start="2" End="3"/> - <LBRange Start="18" End="25"/> - <LBRange Start="27" End="34"/> - <LBRange Start="46" End="65"/> - <LBRange Start="68" End="73"/> - <LBRange Start="75" End="80"/> - <LBRange Start="82" End="94"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>165815</Run> - <LBRange Start="123" End="128"/> - <LBRange Start="130" End="134"/> - <LBRange Start="136" End="139"/> - <LBRange Start="141" End="141"/> - <LBRange Start="143" End="147"/> - <LBRange Start="149" End="150"/> - <LBRange Start="153" End="153"/> - <LBRange Start="155" End="161"/> - <LBRange Start="163" End="165"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>165767</Run> - <LBRange Start="210" End="220"/> - <LBRange Start="222" End="225"/> - <LBRange Start="227" End="233"/> - <LBRange Start="236" End="249"/> - <LBRange Start="251" End="255"/> - <LBRange Start="257" End="269"/> - <LBRange Start="272" End="275"/> - <LBRange Start="280" End="286"/> - <LBRange Start="295" End="303"/> - <LBRange Start="305" End="307"/> - <LBRange Start="309" End="309"/> - <LBRange Start="311" End="316"/> - <LBRange Start="319" End="322"/> - <LBRange Start="324" End="329"/> - <LBRange Start="331" End="340"/> - <LBRange Start="346" End="351"/> - <LBRange Start="353" End="381"/> - <LBRange Start="383" End="422"/> - <LBRange Start="424" End="431"/> - <LBRange Start="433" End="486"/> - <LBRange Start="488" End="489"/> - <LBRange Start="491" End="500"/> - <LBRange Start="502" End="519"/> - <LBRange Start="521" End="533"/> - <LBRange Start="535" End="574"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>165732</Run> - <LBRange Start="91" End="97"/> - <LBRange Start="99" End="100"/> - <LBRange Start="102" End="102"/> - <LBRange Start="116" End="123"/> - <LBRange Start="125" End="125"/> - <LBRange Start="127" End="128"/> - <LBRange Start="130" End="130"/> - <LBRange Start="132" End="134"/> - <LBRange Start="136" End="138"/> - <LBRange Start="140" End="144"/> - <LBRange Start="146" End="146"/> - <LBRange Start="148" End="158"/> - <LBRange Start="160" End="163"/> - <LBRange Start="165" End="187"/> - <LBRange Start="189" End="192"/> - <LBRange Start="194" End="196"/> - <LBRange Start="198" End="205"/> - <LBRange Start="207" End="210"/> - <LBRange Start="212" End="214"/> - <LBRange Start="228" End="265"/> - <LBRange Start="268" End="289"/> - <LBRange Start="297" End="302"/> - <LBRange Start="304" End="336"/> - <LBRange Start="338" End="340"/> - <LBRange Start="342" End="356"/> - <LBRange Start="358" End="391"/> - <LBRange Start="393" End="401"/> - <LBRange Start="408" End="416"/> - <LBRange Start="418" End="422"/> - <LBRange Start="424" End="430"/> - <LBRange Start="432" End="444"/> - <LBRange Start="446" End="499"/> - <LBRange Start="549" End="564"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>165703</Run> - <LBRange Start="106" End="146"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>165632</Run> - <LBRange Start="183" End="187"/> - <LBRange Start="191" End="198"/> - <LBRange Start="200" End="200"/> - <LBRange Start="202" End="213"/> - <LBRange Start="215" End="222"/> - <LBRange Start="224" End="234"/> - <LBRange Start="236" End="251"/> - <LBRange Start="253" End="253"/> - <LBRange Start="255" End="271"/> - <LBRange Start="273" End="278"/> - <LBRange Start="280" End="280"/> - <LBRange Start="282" End="283"/> - <LBRange Start="285" End="289"/> - <LBRange Start="291" End="304"/> - <LBRange Start="306" End="307"/> - <LBRange Start="309" End="321"/> - <LBRange Start="323" End="329"/> - <LBRange Start="331" End="335"/> - <LBRange Start="338" End="372"/> - <LBRange Start="374" End="392"/> - <LBRange Start="394" End="399"/> - <LBRange Start="414" End="436"/> - <LBRange Start="438" End="440"/> - <LBRange Start="442" End="468"/> - <LBRange Start="470" End="471"/> - <LBRange Start="473" End="473"/> - <LBRange Start="476" End="480"/> - <LBRange Start="482" End="532"/> - <LBRange Start="534" End="554"/> - <LBRange Start="556" End="557"/> - <LBRange Start="559" End="563"/> - <LBRange Start="576" End="607"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>165591</Run> - <LBRange Start="73" End="87"/> - <LBRange Start="89" End="135"/> - <LBRange Start="147" End="184"/> - <LBRange Start="187" End="207"/> - <LBRange Start="210" End="210"/> - <LBRange Start="212" End="216"/> - <LBRange Start="219" End="289"/> - <LBRange Start="291" End="383"/> - <LBRange Start="385" End="389"/> - <LBRange Start="391" End="392"/> - <LBRange Start="394" End="401"/> - <LBRange Start="403" End="410"/> - <LBRange Start="412" End="433"/> - <LBRange Start="435" End="466"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>162882</Run> - <LBRange Start="122" End="126"/> - <LBRange Start="128" End="148"/> - <LBRange Start="150" End="172"/> - <LBRange Start="174" End="176"/> - <LBRange Start="178" End="180"/> - <LBRange Start="182" End="230"/> - <LBRange Start="232" End="289"/> - <LBRange Start="291" End="330"/> - <LBRange Start="332" End="392"/> - <LBRange Start="394" End="448"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>162843</Run> - <LBRange Start="114" End="137"/> - <LBRange Start="139" End="161"/> - <LBRange Start="163" End="163"/> - <LBRange Start="165" End="165"/> - <LBRange Start="167" End="210"/> - <LBRange Start="212" End="254"/> - <LBRange Start="256" End="258"/> - <LBRange Start="260" End="263"/> - <LBRange Start="278" End="288"/> - <LBRange Start="290" End="333"/> - <LBRange Start="335" End="409"/> - <LBRange Start="411" End="448"/> - <LBRange Start="450" End="462"/> - <LBRange Start="464" End="517"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>162764</Run> - <LBRange Start="138" End="141"/> - <LBRange Start="143" End="146"/> - <LBRange Start="148" End="163"/> - <LBRange Start="165" End="172"/> - <LBRange Start="194" End="237"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>162690</Run> - <LBRange Start="264" End="273"/> - <LBRange Start="276" End="276"/> - <LBRange Start="278" End="285"/> - <LBRange Start="287" End="288"/> - <LBRange Start="290" End="310"/> - <LBRange Start="313" End="333"/> - <LBRange Start="335" End="344"/> - <LBRange Start="346" End="347"/> - <LBRange Start="349" End="349"/> - <LBRange Start="351" End="399"/> - <LBRange Start="401" End="403"/> - <LBRange Start="405" End="406"/> - <LBRange Start="415" End="425"/> - <LBRange Start="429" End="469"/> - <LBRange Start="471" End="573"/> - <LBRange Start="575" End="617"/> - <LBRange Start="620" End="630"/> - <LBRange Start="632" End="634"/> - <LBRange Start="636" End="642"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>162623</Run> - <LBRange Start="8" End="65"/> - <LBRange Start="67" End="75"/> - <LBRange Start="83" End="113"/> - <LBRange Start="115" End="135"/> - <LBRange Start="137" End="154"/> - <LBRange Start="156" End="191"/> - <LBRange Start="193" End="198"/> - <LBRange Start="200" End="263"/> - <LBRange Start="265" End="273"/> - <LBRange Start="275" End="281"/> - <LBRange Start="283" End="315"/> - <LBRange Start="317" End="338"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>162620</Run> - <LBRange Start="166" End="185"/> - <LBRange Start="187" End="191"/> - <LBRange Start="193" End="215"/> - <LBRange Start="218" End="226"/> - <LBRange Start="228" End="234"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>162577</Run> - <LBRange Start="2" End="12"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>162576</Run> - <LBRange Start="3" End="10"/> - <LBRange Start="12" End="14"/> - <LBRange Start="30" End="44"/> - <LBRange Start="46" End="64"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>162526</Run> - <LBRange Start="118" End="123"/> - <LBRange Start="125" End="128"/> - <LBRange Start="130" End="130"/> - <LBRange Start="143" End="148"/> - <LBRange Start="150" End="189"/> - <LBRange Start="191" End="320"/> - <LBRange Start="322" End="329"/> - <LBRange Start="331" End="366"/> - <LBRange Start="371" End="381"/> - <LBRange Start="383" End="399"/> - <LBRange Start="401" End="403"/> - <LBRange Start="405" End="410"/> - <LBRange Start="412" End="427"/> - <LBRange Start="432" End="439"/> - <LBRange Start="441" End="500"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>162347</Run> - <LBRange Start="119" End="192"/> - <LBRange Start="195" End="199"/> - <LBRange Start="205" End="275"/> - <LBRange Start="277" End="280"/> - <LBRange Start="290" End="295"/> - <LBRange Start="297" End="301"/> - <LBRange Start="303" End="349"/> - <LBRange Start="352" End="488"/> - <LBRange Start="490" End="546"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>161948</Run> - <LBRange Start="349" End="410"/> - <LBRange Start="412" End="513"/> - <LBRange Start="518" End="701"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>161562</Run> - <LBRange Start="41" End="259"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>161520</Run> - <LBRange Start="136" End="289"/> - <LBRange Start="291" End="324"/> - <LBRange Start="326" End="463"/> - <LBRange Start="465" End="467"/> - <LBRange Start="479" End="498"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>161407</Run> - <LBRange Start="75" End="139"/> - <LBRange Start="141" End="164"/> - <LBRange Start="166" End="175"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>161379</Run> - <LBRange Start="118" End="140"/> - <LBRange Start="143" End="147"/> - <LBRange Start="154" End="267"/> - <LBRange Start="269" End="292"/> - <LBRange Start="294" End="306"/> - <LBRange Start="308" End="308"/> - <LBRange Start="324" End="423"/> - <LBRange Start="425" End="500"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>161118</Run> - <LBRange Start="7" End="103"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>160980</Run> - <LBRange Start="10" End="39"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>160975</Run> - <LBRange Start="85" End="98"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>160963</Run> - <LBRange Start="2" End="15"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>160958</Run> - <LBRange Start="2" End="10"/> - <LBRange Start="12" End="12"/> - <LBRange Start="14" End="26"/> - <LBRange Start="28" End="133"/> - <LBRange Start="135" End="177"/> - <LBRange Start="191" End="214"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>160954</Run> - <LBRange Start="111" End="129"/> - <LBRange Start="131" End="133"/> - <LBRange Start="135" End="136"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>160953</Run> - <LBRange Start="202" End="205"/> - <LBRange Start="208" End="210"/> - <LBRange Start="214" End="253"/> - <LBRange Start="255" End="260"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>160899</Run> - <LBRange Start="114" End="128"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>160879</Run> - <LBRange Start="113" End="184"/> - <LBRange Start="194" End="254"/> - <LBRange Start="267" End="563"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>160801</Run> - <LBRange Start="3" End="29"/> - <LBRange Start="31" End="96"/> - <LBRange Start="98" End="105"/> - <LBRange Start="112" End="112"/> - <LBRange Start="115" End="142"/> - <LBRange Start="147" End="155"/> - <LBRange Start="167" End="403"/> - <LBRange Start="413" End="423"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>160800</Run> - <LBRange Start="3" End="24"/> - <LBRange Start="37" End="37"/> - <LBRange Start="40" End="41"/> - <LBRange Start="50" End="53"/> - <LBRange Start="61" End="69"/> - <LBRange Start="71" End="86"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>160736</Run> - <LBRange Start="206" End="263"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>160613</Run> - <LBRange Start="108" End="125"/> - <LBRange Start="127" End="179"/> - <LBRange Start="194" End="226"/> - <LBRange Start="238" End="269"/> - <LBRange Start="272" End="323"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>160530</Run> - <LBRange Start="188" End="201"/> - <LBRange Start="203" End="297"/> - <LBRange Start="301" End="358"/> - <LBRange Start="372" End="625"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>160479</Run> - <LBRange Start="296" End="320"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>160472</Run> - <LBRange Start="140" End="177"/> - <LBRange Start="179" End="186"/> - <LBRange Start="188" End="196"/> - <LBRange Start="198" End="205"/> - <LBRange Start="207" End="254"/> - <LBRange Start="256" End="325"/> - <LBRange Start="337" End="380"/> - <LBRange Start="382" End="521"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>160387</Run> - <LBRange Start="155" End="158"/> - <LBRange Start="160" End="173"/> - <LBRange Start="175" End="293"/> - <LBRange Start="295" End="306"/> - <LBRange Start="308" End="336"/> - <LBRange Start="338" End="381"/> - <LBRange Start="383" End="394"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>159224</Run> - <LBRange Start="249" End="278"/> - <LBRange Start="280" End="282"/> - <LBRange Start="284" End="298"/> - <LBRange Start="300" End="368"/> - <LBRange Start="370" End="385"/> - <LBRange Start="388" End="412"/> - <LBRange Start="416" End="417"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>159203</Run> - <LBRange Start="3" End="58"/> - <LBRange Start="60" End="82"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>159202</Run> - <LBRange Start="187" End="203"/> - <LBRange Start="205" End="225"/> - <LBRange Start="227" End="269"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>159179</Run> - <LBRange Start="222" End="223"/> - <LBRange Start="225" End="251"/> - <LBRange Start="253" End="282"/> - <LBRange Start="284" End="306"/> - <LBRange Start="308" End="312"/> - <LBRange Start="314" End="334"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>159113</Run> - <LBRange Start="261" End="276"/> - <LBRange Start="278" End="384"/> - <LBRange Start="386" End="476"/> - <LBRange Start="478" End="519"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>159086</Run> - <LBRange Start="117" End="140"/> - <LBRange Start="142" End="165"/> - <LBRange Start="167" End="168"/> - <LBRange Start="179" End="207"/> - <LBRange Start="209" End="227"/> - <LBRange Start="235" End="250"/> - <LBRange Start="252" End="252"/> - <LBRange Start="254" End="285"/> - <LBRange Start="287" End="313"/> - <LBRange Start="315" End="324"/> - <LBRange Start="326" End="362"/> - <LBRange Start="364" End="406"/> - <LBRange Start="408" End="421"/> - <LBRange Start="423" End="456"/> - <LBRange Start="458" End="490"/> - <LBRange Start="492" End="515"/> - <LBRange Start="522" End="556"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>159041</Run> - <LBRange Start="106" End="117"/> - <LBRange Start="119" End="143"/> - <LBRange Start="164" End="196"/> - <LBRange Start="198" End="200"/> - <LBRange Start="202" End="207"/> - <LBRange Start="209" End="238"/> - <LBRange Start="240" End="240"/> - <LBRange Start="242" End="244"/> - <LBRange Start="246" End="247"/> - <LBRange Start="249" End="377"/> - <LBRange Start="379" End="379"/> - <LBRange Start="381" End="392"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>158975</Run> - <LBRange Start="87" End="157"/> - <LBRange Start="159" End="161"/> - <LBRange Start="164" End="220"/> - <LBRange Start="222" End="234"/> - <LBRange Start="237" End="244"/> - <LBRange Start="253" End="276"/> - <LBRange Start="278" End="282"/> - <LBRange Start="315" End="335"/> - <LBRange Start="337" End="352"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>158801</Run> - <LBRange Start="135" End="311"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>158632</Run> - <LBRange Start="163" End="166"/> - <LBRange Start="168" End="178"/> - <LBRange Start="182" End="205"/> - <LBRange Start="207" End="210"/> - <LBRange Start="212" End="252"/> - <LBRange Start="254" End="262"/> - <LBRange Start="264" End="268"/> - <LBRange Start="270" End="270"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>158582</Run> - <LBRange Start="56" End="64"/> - <LBRange Start="66" End="74"/> - <LBRange Start="77" End="81"/> - <LBRange Start="83" End="148"/> - <LBRange Start="150" End="203"/> - <LBRange Start="205" End="300"/> - <LBRange Start="303" End="341"/> - <LBRange Start="343" End="355"/> - <LBRange Start="357" End="360"/> - <LBRange Start="362" End="372"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>158548</Run> - <LBRange Start="111" End="111"/> - <LBRange Start="113" End="115"/> - <LBRange Start="117" End="117"/> - <LBRange Start="119" End="126"/> - <LBRange Start="128" End="140"/> - <LBRange Start="142" End="147"/> - <LBRange Start="149" End="163"/> - <LBRange Start="165" End="177"/> - <LBRange Start="179" End="196"/> - <LBRange Start="198" End="228"/> - <LBRange Start="230" End="245"/> - <LBRange Start="247" End="249"/> - <LBRange Start="251" End="257"/> - <LBRange Start="260" End="275"/> - <LBRange Start="277" End="285"/> - <LBRange Start="287" End="294"/> - <LBRange Start="296" End="303"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>158545</Run> - <LBRange Start="237" End="237"/> - <LBRange Start="239" End="255"/> - <LBRange Start="257" End="261"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>158466</Run> - <LBRange Start="265" End="268"/> - <LBRange Start="273" End="277"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>158443</Run> - <LBRange Start="210" End="213"/> - <LBRange Start="219" End="230"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>158299</Run> - <LBRange Start="378" End="434"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>158269</Run> - <LBRange Start="6" End="41"/> - <LBRange Start="43" End="45"/> - <LBRange Start="47" End="59"/> - <LBRange Start="68" End="76"/> - <LBRange Start="78" End="80"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>156682</Run> - <LBRange Start="406" End="475"/> - <LBRange Start="477" End="507"/> - <LBRange Start="509" End="512"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>155697</Run> - <LBRange Start="264" End="266"/> - <LBRange Start="268" End="334"/> - <LBRange Start="336" End="352"/> - <LBRange Start="354" End="506"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>155678</Run> - <LBRange Start="241" End="308"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>155669</Run> - <LBRange Start="264" End="311"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>155634</Run> - <LBRange Start="144" End="147"/> - <LBRange Start="149" End="326"/> - <LBRange Start="328" End="333"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>155569</Run> - <LBRange Start="228" End="467"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>155280</Run> - <LBRange Start="373" End="375"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>155228</Run> - <LBRange Start="133" End="148"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>155160</Run> - <LBRange Start="242" End="503"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>155116</Run> - <LBRange Start="9" End="44"/> - <LBRange Start="46" End="54"/> - <LBRange Start="61" End="93"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>155112</Run> - <LBRange Start="127" End="166"/> - <LBRange Start="186" End="215"/> - <LBRange Start="217" End="322"/> - <LBRange Start="324" End="493"/> - <LBRange Start="495" End="592"/> - <LBRange Start="594" End="609"/> - <LBRange Start="612" End="625"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>155073</Run> - <LBRange Start="89" End="394"/> - <LBRange Start="397" End="407"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>153565</Run> - <LBRange Start="258" End="269"/> - <LBRange Start="281" End="953"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>153159</Run> - <LBRange Start="88" End="104"/> - <LBRange Start="126" End="177"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>153030</Run> - <LBRange Start="120" End="164"/> - <LBRange Start="186" End="203"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>152994</Run> - <LBRange Start="294" End="353"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>152933</Run> - <LBRange Start="46" End="173"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>152878</Run> - <LBRange Start="100" End="159"/> - <LBRange Start="191" End="214"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>152845</Run> - <LBRange Start="111" End="134"/> - <LBRange Start="145" End="169"/> - <LBRange Start="186" End="349"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>152844</Run> - <LBRange Start="195" End="234"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>152777</Run> - <LBRange Start="81" End="299"/> - <LBRange Start="321" End="329"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>152508</Run> - <LBRange Start="196" End="204"/> - <LBRange Start="241" End="261"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>152441</Run> - <LBRange Start="317" End="370"/> - <LBRange Start="372" End="670"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>152409</Run> - <LBRange Start="128" End="209"/> - <LBRange Start="286" End="716"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>152345</Run> - <LBRange Start="128" End="207"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>152221</Run> - <LBRange Start="5" End="167"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>152214</Run> - <LBRange Start="159" End="201"/> - </LumiBlockCollection> - <LumiBlockCollection> - <Run>152166</Run> - <LBRange Start="254" End="300"/> - </LumiBlockCollection> - </NamedLumiRange> -</LumiRangeCollection>