/////////////////////////////////////////////////////////////////////////////// // STNTUPLE run summary table to be stored in the STNTUPLE DB subdirectory // // Author: P.Murat (CDF/FNAL) // Date: Nov 03 2001 /////////////////////////////////////////////////////////////////////////////// #include "Stntuple/obj/TStnRunSummary.hh" ClassImp(TStnRunSummary) //_____________________________________________________________________________ void TStnRunSummary::ReadV1(TBuffer& R__b, UInt_t R__s, UInt_t R__c) { TObject::Streamer(R__b); R__b >> fRunNumber; R__b >> fMyronMode; R__b >> fL1Early; R__b >> fLumiTev; R__b >> fLumiTape; R__b >> fLivetime; fDate.Streamer(R__b); fTime.Streamer(R__b); fTriggerTableName.Streamer(R__b); R__b.CheckByteCount(R__s, R__c, TStnRunSummary::IsA()); //----------------------------------------------------------------------------- // added in v2 //----------------------------------------------------------------------------- fTriggerTableTag = -1; fL1Accepts = -1; fL1Accepts = -1; fL1Accepts = -1; //----------------------------------------------------------------------------- // added in v3 //----------------------------------------------------------------------------- fBeamStatus = 0; fGoodRunStatus = 0; fOfflineStatus = 0; //----------------------------------------------------------------------------- // added in v4, all runs are good by default //----------------------------------------------------------------------------- fStatusWord = 1; fOnlineLumiRS = 0; fOfflineLumiRS = 0; //----------------------------------------------------------------------------- // added in v5 //----------------------------------------------------------------------------- fB0InitLumi = 0.; fB0TermLumi = 0.; } //_____________________________________________________________________________ void TStnRunSummary::ReadV2(TBuffer& R__b, UInt_t R__s, UInt_t R__c) { TObject::Streamer(R__b); R__b >> fRunNumber; R__b >> fMyronMode; R__b >> fL1Early; R__b >> fLumiTev; R__b >> fLumiTape; R__b >> fLivetime; fDate.Streamer(R__b); fTime.Streamer(R__b); fTriggerTableName.Streamer(R__b); R__b >> fTriggerTableTag; R__b >> fL1Accepts; R__b >> fL2Accepts; R__b >> fL3Accepts; R__b.CheckByteCount(R__s, R__c, TStnRunSummary::IsA()); //----------------------------------------------------------------------------- // added in v3 //----------------------------------------------------------------------------- fBeamStatus = 0; fGoodRunStatus = 0; fOfflineStatus = 0; //----------------------------------------------------------------------------- // added in v4 //----------------------------------------------------------------------------- fStatusWord = 1; fOnlineLumiRS = 0; fOfflineLumiRS = 0; //----------------------------------------------------------------------------- // added in v5 //----------------------------------------------------------------------------- fB0InitLumi = 0.; fB0TermLumi = 0.; } //_____________________________________________________________________________ void TStnRunSummary::ReadV3(TBuffer& R__b, UInt_t R__s, UInt_t R__c) { TObject::Streamer(R__b); R__b >> fRunNumber; R__b >> fMyronMode; R__b >> fL1Early; R__b >> fLumiTev; R__b >> fLumiTape; R__b >> fLivetime; fDate.Streamer(R__b); fTime.Streamer(R__b); fTriggerTableName.Streamer(R__b); R__b >> fTriggerTableTag; R__b >> fL1Accepts; R__b >> fL2Accepts; R__b >> fL3Accepts; R__b >> fBeamStatus; R__b >> fGoodRunStatus; R__b >> fOfflineStatus; R__b.CheckByteCount(R__s, R__c, TStnRunSummary::IsA()); //----------------------------------------------------------------------------- // added in v4 //----------------------------------------------------------------------------- fStatusWord = 1; fOnlineLumiRS = 0; fOfflineLumiRS = 0; //----------------------------------------------------------------------------- // added in v5 //----------------------------------------------------------------------------- fB0InitLumi = 0.; fB0TermLumi = 0.; } //_____________________________________________________________________________ void TStnRunSummary::ReadV4(TBuffer& R__b, UInt_t R__s, UInt_t R__c) { TObject::Streamer(R__b); R__b >> fRunNumber; R__b >> fMyronMode; R__b >> fL1Early; R__b >> fLumiTev; R__b >> fLumiTape; R__b >> fOnlineLumiRS; R__b >> fOfflineLumiRS; R__b >> fLivetime; fDate.Streamer(R__b); fTime.Streamer(R__b); fTriggerTableName.Streamer(R__b); R__b >> fTriggerTableTag; R__b >> fL1Accepts; R__b >> fL2Accepts; R__b >> fL3Accepts; R__b >> fBeamStatus; R__b >> fGoodRunStatus; R__b >> fOfflineStatus; R__b >> fStatusWord; R__b.CheckByteCount(R__s, R__c, TStnRunSummary::IsA()); //----------------------------------------------------------------------------- // added in v4 //----------------------------------------------------------------------------- fStatusWord = 1; fOnlineLumiRS = 0; fOfflineLumiRS = 0; //----------------------------------------------------------------------------- // added in v5 //----------------------------------------------------------------------------- fB0InitLumi = 0.; fB0TermLumi = 0.; } //______________________________________________________________________________ void TStnRunSummary::Streamer(TBuffer &R__b) { // Stream an object of class TStnRunSummary. UInt_t R__s, R__c; if (R__b.IsReading()) { //----------------------------------------------------------------------------- // write branch, check version //----------------------------------------------------------------------------- Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v == 1) { ReadV1(R__b,R__s,R__c); } else if (R__v == 2) { ReadV2(R__b,R__s,R__c); } else if (R__v == 3) { ReadV3(R__b,R__s,R__c); } else if (R__v == 4) { ReadV4(R__b,R__s,R__c); } else { TObject::Streamer(R__b); R__b >> fRunNumber; R__b >> fMyronMode; R__b >> fL1Early; R__b >> fLumiTev; R__b >> fLumiTape; R__b >> fOnlineLumiRS; R__b >> fOfflineLumiRS; R__b >> fLivetime; fDate.Streamer(R__b); fTime.Streamer(R__b); fTriggerTableName.Streamer(R__b); R__b >> fTriggerTableTag; R__b >> fL1Accepts; R__b >> fL2Accepts; R__b >> fL3Accepts; R__b >> fBeamStatus; R__b >> fGoodRunStatus; R__b >> fOfflineStatus; R__b >> fStatusWord; R__b >> fB0InitLumi; R__b >> fB0TermLumi; R__b.CheckByteCount(R__s, R__c, TStnRunSummary::IsA()); } } else { //----------------------------------------------------------------------------- // write branch, current version: 4 //----------------------------------------------------------------------------- R__c = R__b.WriteVersion(TStnRunSummary::IsA(), kTRUE); TObject::Streamer(R__b); R__b << fRunNumber; R__b << fMyronMode; R__b << fL1Early; R__b << fLumiTev; R__b << fLumiTape; R__b << fOnlineLumiRS; R__b << fOfflineLumiRS; R__b << fLivetime; fDate.Streamer(R__b); fTime.Streamer(R__b); fTriggerTableName.Streamer(R__b); R__b << fTriggerTableTag; R__b << fL1Accepts; R__b << fL2Accepts; R__b << fL3Accepts; R__b << fBeamStatus; R__b << fGoodRunStatus; R__b << fOfflineStatus; R__b << fStatusWord; R__b << fB0InitLumi; R__b << fB0TermLumi; R__b.SetByteCount(R__c, kTRUE); } } //_____________________________________________________________________________ TStnRunSummary::TStnRunSummary(): fObjName("TStnRunSummary"), fDate(""), fTime(""), fTriggerTableName("") { fRunNumber = -1; fMyronMode = 0; fL1Early = 0; fLumiTev = -1; fLumiTape = -1; fOnlineLumiRS = -1; fOfflineLumiRS = -1; fLivetime = -1; fTriggerTableTag = -1; fL1Accepts = 0; fL2Accepts = 0; fL3Accepts = 0; fBeamStatus = 0; fGoodRunStatus = 0; fOfflineStatus = 0; fStatusWord = 0; fB0InitLumi = -1; fB0TermLumi = -1; } //_____________________________________________________________________________ TStnRunSummary::TStnRunSummary(const TStnRunSummary& Rs) :fObjName("RunSummary") { fRunNumber = Rs.fRunNumber; fMyronMode = Rs.fMyronMode; fL1Early = Rs.fL1Early; fLumiTev = Rs.fLumiTev; fLumiTape = Rs.fLumiTape; fOnlineLumiRS = Rs.fOnlineLumiRS; fOfflineLumiRS = Rs.fOfflineLumiRS; fLivetime = Rs.fLivetime; fDate = Rs.fDate; fTime = Rs.fTime; fTriggerTableName = Rs.fTriggerTableName; fTriggerTableTag = Rs.fTriggerTableTag; fL1Accepts = Rs.fL1Accepts; fL2Accepts = Rs.fL2Accepts; fL3Accepts = Rs.fL3Accepts; fBeamStatus = Rs.fBeamStatus; fGoodRunStatus = Rs.fGoodRunStatus; fOfflineStatus = Rs.fOfflineStatus; fStatusWord = Rs.fStatusWord; fB0InitLumi = -1; fB0TermLumi = -1; } //_____________________________________________________________________________ TStnRunSummary::~TStnRunSummary() { } //_____________________________________________________________________________ void TStnRunSummary::Clear(Option_t* Opt) { } //_____________________________________________________________________________ void TStnRunSummary::Print(Option_t* Opt) const { int n; char buffer[200]; char* tail; if (strstr(Opt,"banner") || (Opt[0] == 0)) { printf("------------------------------------------------------------------------"); printf("----------------------------------------------------------------------\n"); printf(" Run.GR.M.L Trigger Table "); printf(" B0InitLumi L(TeV) L(tape) Lonl(RS) Loffl(RS) "); printf(" Livetime Date Time L1A L2A L3A StatusWord \n"); printf("------------------------------------------------------------------------"); printf("----------------------------------------------------------------------\n"); } tail = (char*) fTriggerTableName.Data(); if (strstr(Opt,"data") || (Opt[0] == 0)) { n = strlen(tail); if (n > 22) n = 22; strncpy(buffer,tail,n); buffer[n] = 0; tail = tail+n; printf("%7i.%2i.%1i.%1i %-22s %7.1f %9.3f %9.3f %9.3f %9.3f %9.3f %10s %8s %10i %8i %7i ", fRunNumber, fStatusWord&0x1, fMyronMode, fL1Early, buffer, fB0InitLumi, fLumiTev, fLumiTape, fOnlineLumiRS, fOfflineLumiRS, fLivetime, fDate.Data(), fTime.Data(), fL1Accepts, fL2Accepts, fL3Accepts); printf(" 0x%08x\n",fStatusWord); while (*tail) { n = strlen(tail); if (n > 22) n = 22; strncpy(buffer,tail,n); buffer[n] = 0; tail = tail+n; printf(" %-22s\n",buffer); } } }