EventHeader.h

Go to the documentation of this file.
00001 #ifndef ATLFAST_EVENTHEADER_H
00002 #define ATLFAST_EVENTHEADER_H
00003 
00004 //**************************************************
00005 //
00006 // Atlfast Event Header class
00007 //
00008 // Contains infomation on the whole Event, such as
00009 // event shape variables and missing momentum.
00010 //
00011 // Also summarises the number of various particles
00012 // found in the event, for rapid event selection in
00013 // user analysis code.
00014 //
00015 // At present this class is just a big "bag" of
00016 // possibly useful numbers to be stored on the TES.
00017 //
00018 // 
00019 //
00020 //
00021 // Authors: Hywel Phillips
00022 //          Peter Clarke
00023 //          Peter Sherwood
00024 //          Richard Steward
00025 //          Elzbieta Richter-Was
00026 //
00027 // Created 22/08/2000
00028 //
00029 //**************************************************
00030 
00031 // Gaudi/Athena 
00032 #include "GaudiKernel/DataObject.h"
00033 
00034 #ifndef CLHEP_LORENTZVECTOR_H
00035 #include "CLHEP/Vector/LorentzVector.h"
00036 #define CLHEP_LORENTZVECTOR_H
00037 #endif
00038 
00039 #ifndef ATLFAST_MCWEIGHTCONTAINERCOLLECTION_H
00040 #include "AtlfastEvent/MCweightContainerCollection.h"
00041 #endif
00042 
00043 
00044 class MsgStream;
00045 
00046 
00047 //Class ID for EventHeader class
00048 static const CLID CLID_ATLFAST_EVENT_HEADER=2303 ;
00049 
00050 
00051 
00052 namespace Atlfast {
00053 
00054 
00055   class EventHeader;
00056 
00057   MsgStream& operator<<(MsgStream&, const EventHeader&);
00058   MsgStream& operator<<(MsgStream&, const EventHeader* const );
00067   class EventHeader : public DataObject {
00068   
00069     public:
00070 
00071       //
00072       // constructors, desctructors and operators
00073       //
00075       EventHeader(
00076                   const int nElectrons, 
00077                   const int nIsolatedMuons, 
00078                   const int nNonIsolatedMuons,
00079                   const int nPhotons,   
00080                   const int nJets, 
00081                   const int nBJets, 
00082                   const int nCJets,     
00083                   const int nTauJets, 
00084                   const double jetCircularity,
00085                   const double eventCircularity, 
00086                   const double thrust, 
00087                   const double oblateness,
00088                   const HepLorentzVector pMiss, 
00089                   const double sumET,
00090                   const HepLorentzVector pEscaped,
00091                   const MCweightContainerCollection mcWeightContainers) :
00092         DataObject(),
00093         m_nElectrons(nElectrons), 
00094         m_nIsolatedMuons(nIsolatedMuons),
00095         m_nNonIsolatedMuons(nNonIsolatedMuons), 
00096         m_nPhotons(nPhotons),
00097         m_nJets(nJets), 
00098         m_nBJets(nBJets), 
00099         m_nCJets(nCJets),
00100         m_nTauJets(nTauJets), 
00101         m_jetCircularity(jetCircularity),
00102         m_eventCircularity(eventCircularity), 
00103         m_thrust(thrust), 
00104         m_oblateness(oblateness), 
00105         m_pMiss(pMiss), 
00106         m_sumET(sumET),
00107         m_pEscaped(pEscaped),
00108         m_mcWeightContainers(mcWeightContainers)
00109  { };
00110 
00112       EventHeader() :
00113         DataObject(),
00114         m_nElectrons(0), 
00115         m_nIsolatedMuons(0),
00116         m_nNonIsolatedMuons(0), 
00117         m_nPhotons(0),          
00118         m_nJets(0), 
00119         m_nBJets(0), 
00120         m_nCJets(0),
00121         m_nTauJets(0), 
00122         m_jetCircularity(0.0),
00123         m_eventCircularity(0.0), 
00124         m_thrust(0.0), 
00125         m_oblateness(0.0), 
00126         m_pMiss(0.0,0.0,0.0,0.0),
00127         m_sumET(0.),
00128         m_pEscaped(0.0,0.0,0.0,0.0),
00129         m_mcWeightContainers(MCweightContainerCollection()){};
00131       virtual ~EventHeader() { };
00132       
00133       //
00134       // the default copy constructor and assignment operator should be fine
00135       // so we don't need this...
00136       //EventHeader(const EventHeader &rhs);
00137       //EventHeader& operator=(const EventHeader &rhs);
00138 
00139       //
00140       int nElectrons()     const { return m_nElectrons; }
00141       int nIsolatedMuons() const { return m_nIsolatedMuons; }
00142       int nMuons()         const {return m_nIsolatedMuons+m_nNonIsolatedMuons;}
00143       int nNonIsolatedMuons() const { return m_nNonIsolatedMuons; }
00144       int nPhotons()          const { return m_nPhotons; }
00145 
00146       //Numbers of Jets:
00147       int nJets()    const { return m_nJets; }         // total
00148       int nBJets()   const { return m_nBJets; }       // b-jet candidates
00149       int nCJets()   const { return m_nCJets; }       // c-jet candidates
00150       int nTauJets() const { return m_nTauJets; }   // tau jet candidates
00151 
00152       // Event shapes 
00153       double jetCircularity()     const {return m_jetCircularity;}
00154       double eventCircularity()   const { return m_eventCircularity; }
00155       double thrust()             const { return m_thrust; }
00156       double oblateness()         const { return m_oblateness; }
00157       HepLorentzVector pMiss()    const { return m_pMiss; }
00158       double sumET()              const { return m_sumET; }
00159       HepLorentzVector pEscaped() const { return m_pEscaped; }
00160                                                   // includes neutrinos and LSP
00161 
00162       MCweightContainer firstFewWeights(int n) const;
00163       //.........................
00164       // Athena mandatory methods
00165       // htp FIXME check the const's 
00166       //
00167       static const CLID& classID() { return CLID_ATLFAST_EVENT_HEADER; }
00168       virtual const CLID& clID() const {  return CLID_ATLFAST_EVENT_HEADER; }
00169  
00170 
00171     private:
00172       
00173       int m_nElectrons;
00174       int m_nIsolatedMuons;
00175       int m_nNonIsolatedMuons;
00176       int m_nPhotons;
00177       int m_nJets;
00178       int m_nBJets;
00179       int m_nCJets;
00180       int m_nTauJets;
00181       double m_jetCircularity;
00182       double m_eventCircularity;
00183       double m_thrust;
00184       double m_oblateness;
00185       HepLorentzVector m_pMiss;
00186       double m_sumET;
00187       HepLorentzVector m_pEscaped;
00188       MCweightContainerCollection m_mcWeightContainers;
00189   };
00190   
00191   
00192 }// end of namespace bracket
00193 #endif
00194 
00195 
00196 
00197 
00198 
00199 
00200 
00201 
00202 
00203 
00204 
00205 

Generated on Fri Sep 21 13:00:08 2007 for AtlfastEvent by  doxygen 1.5.1