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

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 
00040 #include "CLHEP/Vector/LorentzVector.h"
00041 class MsgStream;
00042 
00043 
00044 //Class ID for EventHeader class
00045 static const CLID CLID_ATLFAST_EVENT_HEADER=2303 ;
00046 
00047 
00048 
00049 namespace Atlfast {
00050 
00051 
00052   class EventHeader;
00053 
00054   MsgStream& operator<<(MsgStream&, const EventHeader&);
00055   MsgStream& operator<<(MsgStream&, const EventHeader* const );
00064   class EventHeader : public DataObject {
00065   
00066     public:
00067 
00068       //
00069       // constructors, desctructors and operators
00070       //
00072       EventHeader(
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_nElectrons(nElectrons), 
00089         m_nIsolatedMuons(nIsolatedMuons),
00090         m_nNonIsolatedMuons(nNonIsolatedMuons), 
00091         m_nPhotons(nPhotons),
00092         m_nJets(nJets), 
00093         m_nBJets(nBJets), 
00094         m_nCJets(nCJets),
00095         m_nTauJets(nTauJets), 
00096         m_jetCircularity(jetCircularity),
00097         m_eventCircularity(eventCircularity), 
00098         m_thrust(thrust), 
00099         m_oblateness(oblateness), 
00100         m_pMiss(pMiss), 
00101         m_pEscaped(pEscaped) { };
00102 
00104       EventHeader() :
00105         DataObject(),
00106         m_nElectrons(0), 
00107         m_nIsolatedMuons(0),
00108         m_nNonIsolatedMuons(0), 
00109         m_nPhotons(0),          
00110         m_nJets(0), 
00111         m_nBJets(0), 
00112         m_nCJets(0),
00113         m_nTauJets(0), 
00114         m_jetCircularity(0.0),
00115         m_eventCircularity(0.0), 
00116         m_thrust(0.0), 
00117         m_oblateness(0.0), 
00118         m_pMiss(0.0,0.0,0.0,0.0), 
00119         m_pEscaped(0.0,0.0,0.0,0.0) { };
00121       virtual ~EventHeader() { };
00122       
00123       //
00124       // the default copy constructor and assignment operator should be fine
00125       // so we don't need this...
00126       //EventHeader(const EventHeader &rhs);
00127       //EventHeader& operator=(const EventHeader &rhs);
00128 
00129       //
00130       int nElectrons()     const { return m_nElectrons; }
00131       int nIsolatedMuons() const { return m_nIsolatedMuons; }
00132       int nMuons()         const {return m_nIsolatedMuons+m_nNonIsolatedMuons;}
00133       int nNonIsolatedMuons() const { return m_nNonIsolatedMuons; }
00134       int nPhotons()          const { return m_nPhotons; }
00135 
00136       //Numbers of Jets:
00137       int nJets()    const { return m_nJets; }         // total
00138       int nBJets()   const { return m_nBJets; }       // b-jet candidates
00139       int nCJets()   const { return m_nCJets; }       // c-jet candidates
00140       int nTauJets() const { return m_nTauJets; }   // tau jet candidates
00141 
00142       // Event shapes 
00143       double jetCircularity()     const {return m_jetCircularity;}
00144       double eventCircularity()   const { return m_eventCircularity; }
00145       double thrust()             const { return m_thrust; }
00146       double oblateness()         const { return m_oblateness; }
00147       HepLorentzVector pMiss()    const { return m_pMiss; }
00148       HepLorentzVector pEscaped() const { return m_pEscaped; }
00149                                                   // includes neutrinos and LSP
00150       //.........................
00151       // Athena mandatory methods
00152       // htp FIXME check the const's 
00153       //
00154       static const CLID& classID() { return CLID_ATLFAST_EVENT_HEADER; }
00155       virtual const CLID& clID() const {  return CLID_ATLFAST_EVENT_HEADER; }
00156  
00157 
00158     private:
00159       
00160       int m_nElectrons;
00161       int m_nIsolatedMuons;
00162       int m_nNonIsolatedMuons;
00163       int m_nPhotons;
00164       int m_nJets;
00165       int m_nBJets;
00166       int m_nCJets;
00167       int m_nTauJets;
00168       double m_jetCircularity;
00169       double m_eventCircularity;
00170       double m_thrust;
00171       double m_oblateness;
00172       HepLorentzVector m_pMiss;
00173       HepLorentzVector m_pEscaped;
00174 
00175   };
00176   
00177   
00178 }// end of namespace bracket
00179 #endif
00180 
00181 
00182 
00183 
00184 
00185 
00186 
00187 
00188 
00189 
00190 
00191 

Generated on Fri Nov 29 12:55:11 2002 by doxygen1.3-rc1