NtupleWriter13/NtupleWriter13-00-01-00/NtupleWriter13/JetTrackSelectorTool.h

00001 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00002 // 17.07.2007, AUTHOR: OLIVER KORTNER
00003 // Modified: 29.07.2007 by O. Kortner, options for a special treatment of
00004 //                                     multivertex events.
00005 //           20.08.2007 by O. Kortner, get vertices from the
00006 //                                     MPIHiggsAnalysis::VertexCollectionSvc.
00007 //           14.09.2007 by S. Kaiser,  added option to ignore isolated leptons  
00008 //
00009 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00010 
00011 #ifndef JetTrackSelectorToolH
00012 #define JetTrackSelectorToolH
00013 
00014 //::::::::::::::::::::::::::::::::
00015 //:: CLASS JetTrackSelectorTool ::
00016 //::::::::::::::::::::::::::::::::
00017 
00038 
00039 //::::::::::::::::::
00040 //:: HEADER FILES ::
00041 //::::::::::::::::::
00042 
00043 // AtlasCore //
00044 #include "StoreGate/StoreGateSvc.h"
00045 
00046 // JetRec //
00047 #include "JetRec/JetAlgToolBase.h"
00048 
00049 // STL //
00050 #include <string>
00051 
00052 // CLHEP //
00053 #include "CLHEP/Vector/ThreeVector.h"
00054 
00055 // NtupleWriter13 //
00056 #include "NtupleWriter13/VertexCollectionSvc.h"
00057 #include "Particle/TrackParticleContainer.h"
00058 
00059 class JetTrackSelectorTool : public JetAlgToolBase {
00060 
00061 public:
00062 // Constructors //
00063         JetTrackSelectorTool(const std::string & name, const std::string & type,
00064                                 const IInterface * parent);
00066 
00067         ~JetTrackSelectorTool(void);
00069 
00070 // Methods //
00071 // methods required by the base class //
00072         virtual StatusCode initialize(void);
00074         virtual StatusCode execute(JetAlgToolBase::jetcollection_t * theJets);
00080 
00081 private:
00082 // job options //
00083         double m_pt_min; // minimum transverse momentum of a track
00084         std::string m_output_collection_name; // name of the output collection
00085         std::string m_track_particle_container_name; // name of the container
00086                                                      // of track particles
00087         bool m_ignore_multivertices; // option how to treat multivertex events
00088         std::string m_primary_vertex_container; // name of the vertex container
00089         std::string m_vert_coll_svc_name; // name of the output vertex collection
00090 
00091 // ATHENA services //
00092         StoreGateSvc *m_storeGate; // pointer to the store gate
00093         MsgStream *m_log; // pointer to the message stream
00094         MPIHiggsAnalysis::VertexCollectionSvc *m_vert_coll;
00095                                 // pointer to the output vertex collection
00096 
00097 // private methods //
00098         Hep3Vector highest_pt_vertex(void) const; // get the primary vertex
00099                                                   // with the highest transverse
00100                                                   // momentum
00101 
00102     double get_energy_in_cone(const double & cone,
00103                               const HepLorentzVector & p, 
00104                               const Hep3Vector & vertex,
00105                               const Rec::TrackParticleContainer *track_particle_container);
00106                                         // get the energy of particle emerging
00107                                         // from the vertex "vertex" in a cone
00108                                         // of "cone" in delta R of p
00109 
00110     std::string m_electron_container;   // name of the electron container
00111     std::string m_muon_container;       // name of the muon container
00112 
00113     bool m_remove_isol_leptons; //flag to remove isolated e,mu from tracks list     
00114     double m_electron_cone;     //cone size for electron isolation
00115     double m_electron_et_cut;   //et cut for electron isolation
00116     double m_muon_cone;         //cone size for muon isolation
00117     double m_muon_et_cut;       //et cut for muon isolation
00118 
00119     double m_inner_cone;        //size of the inner cone 
00120                                 //  -> et_in_cone: inner_cone < dR < m_lepton_cone 
00121 
00122 };
00123 
00124 #endif

Generated on Tue Oct 21 11:50:42 2008 for NtupleAnalysis by  doxygen 1.5.1