#ifndef STNTUPLE_TStnRunSummary #define STNTUPLE_TStnRunSummary //----------------------------------------------------------------------------- // description of the run summary information to be stored in DB section // of the STNTUPLE // // Author: P. Murat (CDF/FNAL) // Date: Nov 3 2001 //----------------------------------------------------------------------------- #include "TObject.h" #include "TString.h" class TStnRunSummary: public TObject { public: protected: TString fObjName; // name of this for list searching protected: Int_t fRunNumber; Int_t fMyronMode; Int_t fL1Early; Float_t fLumiTev; Float_t fLumiTape; Float_t fOnlineLumiRS; Float_t fOfflineLumiRS; Float_t fLivetime; TString fDate; TString fTime; TString fTriggerTableName; Int_t fTriggerTableTag; Int_t fL1Accepts; Int_t fL2Accepts; Int_t fL3Accepts; Int_t fBeamStatus; Int_t fGoodRunStatus; Int_t fOfflineStatus; Int_t fStatusWord; Float_t fB0InitLumi; // initial inst lumi (in 1e30), added in v5 Float_t fB0TermLumi; // added in v5 Int_t fLowRunSection; Int_t fHighRunSection; //----------------------------------------------------------------------------- // methods //----------------------------------------------------------------------------- public: TStnRunSummary(); TStnRunSummary(const TStnRunSummary& Rs); ~TStnRunSummary(); //----------------------------------------------------------------------------- // accessors //----------------------------------------------------------------------------- Int_t RunNumber () { return fRunNumber ; } Int_t MyronMode () { return fMyronMode ; } Int_t L1Early () { return fL1Early ; } Float_t LumiTev () { return fLumiTev ; } Float_t LumiTape () { return fLumiTape ; } Int_t L1Accepts () { return fL1Accepts ; } Int_t L2Accepts () { return fL2Accepts ; } Int_t L3Accepts () { return fL3Accepts ; } Float_t Livetime () { return fLivetime ; } Int_t BeamStatusWord () { return fBeamStatus ; } Int_t GoodRunStatus () { return fGoodRunStatus ; } Int_t OfflineStatusWord() { return fOfflineStatus ; } Float_t OnlineLumiRS () { return fOnlineLumiRS ; } Float_t OfflineLumiRS () { return fOfflineLumiRS ; } Float_t B0InitLumi () { return fB0InitLumi ; } Float_t B0TermLumi () { return fB0TermLumi ; } Int_t LowRunSection () { return fLowRunSection ; } Int_t HighRunSection () { return fHighRunSection ; } TString& TriggerTableName () { return fTriggerTableName; } Int_t TriggerTableTag () { return fTriggerTableTag ; } TString& Date () { return fDate ; } TString& Time () { return fTime ; } //----------------------------------------------------------------------------- // various general, detector, trigger and offline status bits (0=BAD, 1=OK) // list is not complete... //----------------------------------------------------------------------------- Int_t StatusWord () { return fStatusWord ; } Int_t IsGood () { return ((fStatusWord ) & 0x1); } Int_t IsChecked () { return ((fStatusWord >> 2) & 0x1); } Int_t BeamStatusBit () { return ((fStatusWord >> 3) & 0x1); } Int_t OfflineStatusBit () { return ((fStatusWord >> 4) & 0x1); } Int_t ClcStatusBit () { return ((fStatusWord >> 5) & 0x1); } Int_t CalStatusBit () { return ((fStatusWord >> 6) & 0x1); } Int_t SmxStatusBit () { return ((fStatusWord >> 7) & 0x1); } Int_t CotStatusBit () { return ((fStatusWord >> 8) & 0x1); } Int_t SvxStatusBit () { return ((fStatusWord >> 9) & 0x1); } Int_t IslStatusBit () { return ((fStatusWord >> 10) & 0x1); } Int_t L00StatusBit () { return ((fStatusWord >> 11) & 0x1); } Int_t CmuStatusBit () { return ((fStatusWord >> 12) & 0x1); } Int_t CmpStatusBit () { return ((fStatusWord >> 13) & 0x1); } Int_t CmxStatusBit () { return ((fStatusWord >> 14) & 0x1); } Int_t ImuStatusBit () { return ((fStatusWord >> 15) & 0x1); } Int_t TofStatusBit () { return ((fStatusWord >> 16) & 0x1); } Int_t L1tStatusBit () { return ((fStatusWord >> 17) & 0x1); } Int_t L2tStatusBit () { return ((fStatusWord >> 18) & 0x1); } Int_t L3tStatusBit () { return ((fStatusWord >> 19) & 0x1); } Int_t SvtStatusBit () { return ((fStatusWord >> 20) & 0x1); } Int_t MplStatusBit () { return ((fStatusWord >> 21) & 0x1); } Int_t BscStatusBit () { return ((fStatusWord >> 22) & 0x1); } Int_t CesStatusBit () { return ((fStatusWord >> 23) & 0x1); } Int_t PesStatusBit () { return ((fStatusWord >> 24) & 0x1); } //----------------------------------------------------------------------------- // offline status bits //----------------------------------------------------------------------------- Int_t ClcOfflineBit () { return ((fOfflineStatus >> 5) & 0x1); } Int_t CalOfflineBit () { return ((fOfflineStatus >> 6) & 0x1); } Int_t SmxOfflineBit () { return ((fOfflineStatus >> 7) & 0x1); } Int_t CotOfflineBit () { return ((fOfflineStatus >> 8) & 0x1); } Int_t SvxOfflineBit () { return ((fOfflineStatus >> 9) & 0x1); } Int_t IslOfflineBit () { return ((fOfflineStatus >> 10) & 0x1); } Int_t L00OfflineBit () { return ((fOfflineStatus >> 11) & 0x1); } Int_t CmuOfflineBit () { return ((fOfflineStatus >> 12) & 0x1); } Int_t CmpOfflineBit () { return ((fOfflineStatus >> 13) & 0x1); } Int_t CmxOfflineBit () { return ((fOfflineStatus >> 14) & 0x1); } Int_t ImuOfflineBit () { return ((fOfflineStatus >> 15) & 0x1); } Int_t TofOfflineBit () { return ((fOfflineStatus >> 16) & 0x1); } Int_t L1tOfflineBit () { return ((fOfflineStatus >> 17) & 0x1); } Int_t L2tOfflineBit () { return ((fOfflineStatus >> 18) & 0x1); } Int_t L3tOfflineBit () { return ((fOfflineStatus >> 19) & 0x1); } Int_t SvtOfflineBit () { return ((fOfflineStatus >> 20) & 0x1); } Int_t MplOfflineBit () { return ((fOfflineStatus >> 21) & 0x1); } Int_t BscOfflineBit () { return ((fOfflineStatus >> 22) & 0x1); } Int_t CesOfflineBit () { return ((fOfflineStatus >> 23) & 0x1); } Int_t PesOfflineBit () { return ((fOfflineStatus >> 24) & 0x1); } //----------------------------------------------------------------------------- // average instantaneous luminosity: integrated luminosity / livetime // number of buckets in the Tevatron ring: 159, number of filled ones: 36 // so in reality average bunch spacing 132ns*159/36 = 583ns is 47% larger // than "conventional" number of 396ns //----------------------------------------------------------------------------- Float_t AverageInstLumi() { return 1.0e33*fOfflineLumiRS/(fLivetime*132.0E-09*159.0/36.0); } //----------------------------------------------------------------------------- // modifiers //----------------------------------------------------------------------------- void SetRunNumber (Int_t Run ) { fRunNumber = Run; } void SetMyronMode (Int_t Mode) { fMyronMode = Mode; } void SetL1Early (Int_t L1 ) { fL1Early = L1; } void SetLumiTev (Float_t Lumi) { fLumiTev = Lumi; } void SetLumiTape (Float_t Lumi) { fLumiTape = Lumi; } void SetB0InitLumi (Float_t Lumi) { fB0InitLumi = Lumi; } void SetB0TermLumi (Float_t Lumi) { fB0TermLumi = Lumi; } void SetLivetime (Float_t Time) { fLivetime = Time; } void SetDate (const char* Date) { fDate = Date; } void SetTime (const char* Time) { fTime = Time; } void SetL1Accepts (Int_t N ) { fL1Accepts = N ; } void SetL2Accepts (Int_t N ) { fL2Accepts = N ; } void SetL3Accepts (Int_t N ) { fL3Accepts = N ; } void SetBeamStatus (Int_t Word) { fBeamStatus = Word; } void SetGoodRunStatus (Int_t Word) { fGoodRunStatus = Word; } void SetOnlineLumiRS (Float_t Lumi) { fOnlineLumiRS = Lumi; } void SetOfflineLumiRS (Float_t Lumi) { fOfflineLumiRS = Lumi; } void SetStatusWord (Int_t Word) { fStatusWord = Word; } void SetOfflineStatusWord(Int_t Word) { fOfflineStatus = Word; } void SetTriggerTableName (const char* Name) { fTriggerTableName = Name; } void SetTriggerTableTag (Int_t Tag) { fTriggerTableTag = Tag; } //----------------------------------------------------------------------------- // overloaded methods of TObject //----------------------------------------------------------------------------- const char* GetName() const { return fObjName.Data(); } void Clear(Option_t* option = ""); void Print(Option_t* option = "") const; // *MENU* //----------------------------------------------------------------------------- // schema evolution // v6: adds low and high runsections //----------------------------------------------------------------------------- void ReadV1(TBuffer& R__b, UInt_t R__s, UInt_t R__c); void ReadV2(TBuffer& R__b, UInt_t R__s, UInt_t R__c); void ReadV3(TBuffer& R__b, UInt_t R__s, UInt_t R__c); void ReadV4(TBuffer& R__b, UInt_t R__s, UInt_t R__c); void ReadV5(TBuffer& R__b, UInt_t R__s, UInt_t R__c); ClassDef(TStnRunSummary,6) }; #endif