/**@file CbmTbEvent.cxx **@date 26.06.2009 **@author V. Friese **/ #include "CbmTbEvent.h" #include #include #include "CbmMuchDigi.h" #include "CbmStsDigi.h" #include "CbmRichDigi.h" using namespace std; // ----- Constructor ------------------------------------------------------ CbmTbEvent::CbmTbEvent() { Clear(); } // --------------------------------------------------------------------------- // ----- Add STS data to event ------------------------------------------- void CbmTbEvent::AddStsData(CbmStsDigi* digi, Double_t epochTime) { // If event is empty: Set epoch time and start time if ( IsEmpty() ) { fEpochTime = epochTime; fTimeStart = Double_t(digi->GetTDC()); } // Check station and side number Int_t iStation = digi->GetStationNr(); Int_t iSide = digi->GetSide(); if ( iSide < 0 || iSide > 1 ) { cout << "-E- CbmTbEvent::AddStstData: Illegal side number! " << iStation << " " << iSide << endl; return; } // Update event time and counters fTimeStop = Double_t(digi->GetTDC()); fTimeSum += fTimeStop - fEpochTime; fTime = fTimeSum / (++fNofMessages) + fEpochTime; fNofStsDigi++; } // --------------------------------------------------------------------------- // ----- Add MUCH data to event ------------------------------------------ void CbmTbEvent::AddMuchData(CbmMuchDigi* digi, Double_t epochTime) { // If event is empty: Set epoch time and start time if ( IsEmpty() ) { fEpochTime = epochTime; fTimeStart = digi->GetTime(0); } // Update event time and counters fTimeStop = digi->GetTime(0); fTimeSum += fTimeStop - fEpochTime; fTime = fTimeSum / (++fNofMessages) + fEpochTime; fNofMuchDigi++; } // --------------------------------------------------------------------------- // ----- Add RICH data to event ------------------------------------------ void CbmTbEvent::AddRichData(CbmRichDigi* digi, Double_t epochTime) { // If event is empty: Set epoch time and start time if ( IsEmpty() ) { fEpochTime = epochTime; fTimeStart = digi->GetTime(); } // Update event time and counters fTimeStop = digi->GetTime(); fTimeSum += fTimeStop - fEpochTime; fTime = fTimeSum / (++fNofMessages) + fEpochTime; fNofRichDigi++; } // --------------------------------------------------------------------------- // ---- Add Beam signal -------------------------------------------------- void CbmTbEvent::AddBeam(Double_t time, Double_t epochTime) { // If event is empty: Set epoch time and start time if ( IsEmpty() ) { fEpochTime = epochTime; fTimeStart = time; } // Update event time and counters fTimeStop = time; fTimeSum += fTimeStop - fEpochTime; fTime = fTimeSum / (++fNofMessages) + fEpochTime; fTimeBc.push_back(time); } // --------------------------------------------------------------------------- // ----- Reset event ----------------------------------------------------- void CbmTbEvent::Clear() { fTime = 0.; fTimeStart = 0.; fTimeStop = 0.; fEpochTime = 0.; fNofMessages = 0; fNofStsDigi = 0; fNofMuchDigi = 0; fNofRichDigi = 0; fTimeBc.clear(); fTimeSum = 0.; } // --------------------------------------------------------------------------- // ----- Print ----------------------------------------------------------- void CbmTbEvent::Print(Option_t* opt) { cout.precision(9); cout.setf(ios::fixed, ios::floatfield); cout << "-I- Cbm Testbeam Event: " << setprecision(9) << fixed << "Event time " << fTime << " s, duration " << setprecision(0) << GetDuration() * 1e9 << " ns, Beam " << fTimeBc.size() << ", STS " << GetNofStsDigi() << ", MUCH " << fNofMuchDigi << ", RICH " << fNofRichDigi << endl; } // --------------------------------------------------------------------------- ClassImp(CbmTbEvent)