Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

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 // Some more thought and development of the header will
00019 // come in the future - eg should it summarise the
00020 // Atlfast final output lists? Should it have
00021 // SmartRef's to them? This may become important for
00022 // Persistency later on...
00023 //
00024 // 
00025 //
00026 //
00027 // Authors: Hywel Phillips
00028 //          Peter Clarke
00029 //          Peter Sherwood
00030 //          Richard Steward
00031 //          Elzbieta Richter-Was
00032 //
00033 // Created 22/08/2000
00034 //
00035 //**************************************************
00036 
00037 // Gaudi/Athena 
00038 #include "GaudiKernel/DataObject.h"
00039 #include "GaudiKernel/MsgStream.h"
00040 
00041 // Other
00042 #include "CLHEP/Vector/LorentzVector.h"
00043 
00044 
00045 
00046 
00047 //Class ID for EventHeader class
00048 static const CLID CLID_ATLFAST_EVENT_HEADER=2303 ;
00049 
00050 
00051 
00052 namespace Atlfast {
00053 
00062   class EventHeader : public DataObject {
00063   
00064     public:
00065 
00066       //
00067       // constructors, desctructors and operators
00068       //
00070       EventHeader(
00071                   const int runNumber,
00072                   const int evtNumber,
00073                   const int nElectrons, 
00074                   const int nIsolatedMuons, 
00075                   const int nNonIsolatedMuons,
00076                   const int nPhotons,   
00077                   const int nJets, 
00078                   const int nBJets, 
00079                   const int nCJets,     
00080                   const int nTauJets, 
00081                   const double jetCircularity,
00082                   const double eventCircularity, 
00083                   const double thrust, 
00084                   const double oblateness,
00085                   const HepLorentzVector pMiss, 
00086                   const HepLorentzVector pEscaped) :
00087         DataObject(),
00088         m_runNumber(runNumber),
00089         m_evtNumber(evtNumber),
00090         m_nElectrons(nElectrons), 
00091         m_nIsolatedMuons(nIsolatedMuons),
00092         m_nNonIsolatedMuons(nNonIsolatedMuons), 
00093         m_nPhotons(nPhotons),
00094         m_nJets(nJets), 
00095         m_nBJets(nBJets), 
00096         m_nCJets(nCJets),
00097         m_nTauJets(nTauJets), 
00098         m_jetCircularity(jetCircularity),
00099         m_eventCircularity(eventCircularity), 
00100         m_thrust(thrust), 
00101         m_oblateness(oblateness), 
00102         m_pMiss(pMiss), 
00103         m_pEscaped(pEscaped) { };
00104 
00106       EventHeader() :
00107         DataObject(),
00108         m_runNumber(0), 
00109         m_evtNumber(0), 
00110         m_nElectrons(0), 
00111         m_nIsolatedMuons(0),
00112         m_nNonIsolatedMuons(0), 
00113         m_nPhotons(0),          
00114         m_nJets(0), 
00115         m_nBJets(0), 
00116         m_nCJets(0),
00117         m_nTauJets(0), 
00118         m_jetCircularity(0.0),
00119         m_eventCircularity(0.0), 
00120         m_thrust(0.0), 
00121         m_oblateness(0.0), 
00122         m_pMiss(0.0,0.0,0.0,0.0), 
00123         m_pEscaped(0.0,0.0,0.0,0.0) { };
00125       virtual ~EventHeader() { };
00126       
00127       //
00128       // the default copy constructor and assignment operator should be fine
00129       // so we don't need this...
00130       //EventHeader(const EventHeader &rhs);
00131       //EventHeader& operator=(const EventHeader &rhs);
00132 
00133       //
00134       int runNumber()      const { return m_runNumber; }
00135       int evtNumber()      const { return m_evtNumber; }
00136       int nElectrons()     const { return m_nElectrons; }
00137       int nIsolatedMuons() const { return m_nIsolatedMuons; }
00138       int nMuons()         const {return m_nIsolatedMuons+m_nNonIsolatedMuons;}
00139       int nNonIsolatedMuons() const { return m_nNonIsolatedMuons; }
00140       int nPhotons()          const { return m_nPhotons; }
00141 
00142       //Numbers of Jets:
00143       int nJets()    const { return m_nJets; }         // total
00144       int nBJets()   const { return m_nBJets; }       // b-jet candidates
00145       int nCJets()   const { return m_nCJets; }       // c-jet candidates
00146       int nTauJets() const { return m_nTauJets; }   // tau jet candidates
00147 
00148       // Event shapes 
00149       double jetCircularity()     const {return m_jetCircularity;}
00150       double eventCircularity()   const { return m_eventCircularity; }
00151       double thrust()             const { return m_thrust; }
00152       double oblateness()         const { return m_oblateness; }
00153       HepLorentzVector pMiss()    const { return m_pMiss; }
00154       HepLorentzVector pEscaped() const { return m_pEscaped; }
00155                                                   // includes neutrinos and LSP
00157       virtual StreamBuffer& serialize(StreamBuffer& s);
00158 
00160       virtual StreamBuffer& serialize(StreamBuffer& s) const;
00161 
00162       //.........................
00163       // Athena mandatory methods
00164       // htp FIXME check the const's 
00165       //
00166       static const CLID& classID() { return CLID_ATLFAST_EVENT_HEADER; }
00167       virtual const CLID& clID() const {  return CLID_ATLFAST_EVENT_HEADER; }
00168  
00169 
00170     private:
00171       
00172       int m_runNumber;
00173       int m_evtNumber;
00174       int m_nElectrons;
00175       int m_nIsolatedMuons;
00176       int m_nNonIsolatedMuons;
00177       int m_nPhotons;
00178       int m_nJets;
00179       int m_nBJets;
00180       int m_nCJets;
00181       int m_nTauJets;
00182       double m_jetCircularity;
00183       double m_eventCircularity;
00184       double m_thrust;
00185       double m_oblateness;
00186       HepLorentzVector m_pMiss;
00187       HepLorentzVector m_pEscaped;
00188 
00189   };
00190   //  MsgStream& operator<<(MsgStream&, const EventHeader&);
00191   //  MsgStream& operator<<(MsgStream&, const EventHeader*);
00192   
00193   
00194 }// end of namespace bracket
00195 #endif
00196 
00197 
00198 
00199 
00200 
00201 
00202 
00203 
00204 
00205 
00206 
00207 

Generated on Wed Jan 23 12:58:31 2002 for Atlfast by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001