00001
00002 #ifndef LHCBEVENT_RUN_H
00003 #define LHCBEVENT_RUN_H 1
00004
00005
00006
00007 #include <iostream>
00008 #include "GaudiKernel/Kernel.h"
00009 #include "GaudiKernel/StreamBuffer.h"
00010 #include "GaudiKernel/DataObject.h"
00011 #include "GlastEvent/Utilities/TriggerPattern.h"
00012 #include "GlastEvent/Utilities/RandomNumberSeed.h"
00013 #include "GlastEvent/TopLevel/Definitions.h"
00014
00015
00016
00017 extern const CLID& CLID_Run;
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 class Run : public DataObject {
00044
00045 public:
00047 Run(const char* name = "Event")
00048 : DataObject(name),
00049 m_runType(0),
00050 m_triggerType(0),
00051 m_enabledDetectorMask(0),
00052 m_luminosity(0.),
00053 m_fillNumber(0),
00054 m_generatorType(0) { }
00056 virtual ~Run() { }
00057
00059 virtual const CLID& clID() const { return Run::classID(); }
00060 static const CLID& classID() { return CLID_Run; }
00061
00063 long runNumber () const {
00064 return m_run;
00065 }
00067 void setRunNumber (long value) {
00068 m_run = value;
00069 }
00070
00072 long runType () const {
00073 return m_runType;
00074 }
00076 void setRunType (long value) {
00077 m_runType = value;
00078 }
00079
00081 long triggerType () const {
00082 return m_triggerType;
00083 }
00085 void setTriggerType (long value) {
00086 m_triggerType = value;
00087 }
00088
00090 const TriggerPattern& enabledTriggerPattern () const {
00091 return m_enabledTriggerMask;
00092 }
00094 void setEnabledTriggerPattern (const TriggerPattern& value) {
00095 m_enabledTriggerMask=value;
00096 }
00097
00099 long enabledDetectorMask () const {
00100 return m_enabledDetectorMask;
00101 }
00103 void setEnabledDetectorMask (long value) {
00104 m_enabledDetectorMask = value;
00105 }
00106
00108 double luminosity () const {
00109 return m_luminosity;
00110 }
00112 void setLuminosity (double value) {
00113 m_luminosity = value;
00114 }
00115
00117 long fillNumber () const {
00118 return m_fillNumber;
00119 }
00121 void setFillNumber (long value) {
00122 m_fillNumber = value;
00123 }
00124
00126 long generatorType () const {
00127 return m_generatorType;
00128 }
00130 void setGeneratorType (long value) {
00131 m_generatorType = value;
00132 }
00133
00135 const RandomNumberSeed randomNumberSeed () const {
00136 return m_randomNumberSeed;
00137 }
00139 void setRandomNumberSeed (RandomNumberSeed value) {
00140 m_randomNumberSeed = value;
00141 }
00142
00144 virtual StreamBuffer& serialize( StreamBuffer& s ) const;
00146 virtual StreamBuffer& serialize( StreamBuffer& s );
00147
00149 friend std::ostream& operator<< ( std::ostream& s, const Run& obj ) {
00150 return obj.fillStream(s);
00151 }
00153 virtual std::ostream& fillStream( std::ostream& s ) const;
00154
00155 private:
00157 long m_run;
00159 long m_runType;
00161 long m_triggerType;
00163 TriggerPattern m_enabledTriggerMask;
00165 long m_enabledDetectorMask;
00167 double m_luminosity;
00169 long m_fillNumber;
00171 long m_generatorType;
00173 RandomNumberSeed m_randomNumberSeed;
00174
00175 };
00176
00177
00178
00179
00180
00181
00182
00184 inline StreamBuffer& Run::serialize( StreamBuffer& s ) const {
00185 DataObject::serialize(s);
00186 return s
00187 << m_run
00188 << m_runType
00189 << m_triggerType
00190 << m_enabledTriggerMask
00191 << m_enabledDetectorMask
00192 << m_luminosity
00193 << m_fillNumber
00194 << m_generatorType
00195 << m_randomNumberSeed;
00196 }
00197
00198
00200 inline StreamBuffer& Run::serialize( StreamBuffer& s ) {
00201 DataObject::serialize(s);
00202 return s
00203 >> m_run
00204 >> m_runType
00205 >> m_triggerType
00206 >> m_enabledTriggerMask
00207 >> m_enabledDetectorMask
00208 >> m_luminosity
00209 >> m_fillNumber
00210 >> m_generatorType
00211 >> m_randomNumberSeed;
00212 }
00213
00214
00216 inline std::ostream& Run::fillStream( std::ostream& s ) const {
00217 return s
00218 << "class Run :\n"
00219 << "\n Run number = "
00220 << GlastEventField( GlastEvent::field12 )
00221 << m_run
00222 << "\n Run type = "
00223 << GlastEventField( GlastEvent::field12 )
00224 << m_runType
00225 << "\n Trigger type = "
00226 << GlastEventField( GlastEvent::field12 )
00227 << m_triggerType
00228 << "\n Present triggers = " << m_enabledTriggerMask
00229 << "\n Detector enable mask = "
00230 << GlastEventField( GlastEvent::field12 )
00231 << m_enabledDetectorMask
00232 << "\n Luminosity = "
00233 << GlastEventFloatFormat( GlastEvent::width, GlastEvent::precision )
00234 << m_luminosity
00235 << "\n Fill number = "
00236 << GlastEventField( GlastEvent::field12 )
00237 << m_fillNumber
00238 << "\n MC generator type = "
00239 << GlastEventField( GlastEvent::field12 )
00240 << m_generatorType
00241 << "\n Random number seed = " << m_randomNumberSeed;
00242 }
00243
00244
00245 #endif // LHCBEVENT_RUN_H