diff --git a/macro/run/run_reco.C b/macro/run/run_reco.C index 7afd3921cc6dd13b1fb005164b66fa94fc88cf29..b318ab8f944a0b3f9314324162e7d50954b97233 100644 --- a/macro/run/run_reco.C +++ b/macro/run/run_reco.C @@ -218,8 +218,13 @@ void run_reco(TString input = "", // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // /// to use 2018 version, uncomment this section and comment the prev. one + + /* switch between 2019 and 2021 version here, which have the same interface CbmMcbm2019TimeWinEventBuilderTask* evBuildRaw = new CbmMcbm2019TimeWinEventBuilderTask(); +*/ + Cbm2021EventBuilderTask* evBuildRaw = new Cbm2021EventBuilderTask(); + evBuildRaw->SetTsParameters(0.0, 1.e7, 0.0); // Use CbmMuchDigi instead of CbmMuchBeamtimeDigi @@ -260,7 +265,6 @@ void run_reco(TString input = "", } //? event-based reco // ------------------------------------------------------------------------ - // ----- Local reconstruction in MVD ---------------------------------- if (useMvd) { @@ -452,7 +456,6 @@ void run_reco(TString input = "", } //? time-based reco - // ----- Parameter database -------------------------------------------- std::cout << std::endl << std::endl; std::cout << "-I- " << myName << ": Set runtime DB" << std::endl; diff --git a/reco/eventbuilder/CMakeLists.txt b/reco/eventbuilder/CMakeLists.txt index 11025c2ece4220ab4d95ed49d827b8968e4faeac..497cfe31ff6413256cfd962c36b0f820d481cc51 100644 --- a/reco/eventbuilder/CMakeLists.txt +++ b/reco/eventbuilder/CMakeLists.txt @@ -41,6 +41,7 @@ ${CBMROOT_SOURCE_DIR}/rich ${CBMROOT_SOURCE_DIR}/tof/TofMC ${CBMROOT_SOURCE_DIR}/psd ${CBMROOT_SOURCE_DIR}/field +${CBMROOT_SOURCE_DIR}/core/data/raw ) @@ -66,6 +67,8 @@ link_directories( ${LINK_DIRECTORIES}) set(SRCS +digis/Cbm2021EventBuilderAlgo.cxx +digis/Cbm2021EventBuilderTask.cxx digis/CbmBuildEventsIdeal.cxx digis/CbmBuildEventsIdealNew.cxx digis/CbmBuildEventsQA.cxx diff --git a/reco/eventbuilder/CbmEventBuilderLinkDef.h b/reco/eventbuilder/CbmEventBuilderLinkDef.h index a62bc57b8e07f1bd803cabbf4c565f597fe6b9d7..bdbb341089fe66e9bc0f60b15b90ecbf3c86dd56 100644 --- a/reco/eventbuilder/CbmEventBuilderLinkDef.h +++ b/reco/eventbuilder/CbmEventBuilderLinkDef.h @@ -4,7 +4,8 @@ #pragma link off all classes; #pragma link off all functions; - +#pragma link C++ class Cbm2021EventBuilderAlgo + ; +#pragma link C++ class Cbm2021EventBuilderTask + ; #pragma link C++ class CbmBuildEventsFromTracksIdeal + ; #pragma link C++ class CbmBuildEventsFromTracksReal + ; #pragma link C++ class CbmEventBuilderQA + ; diff --git a/reco/eventbuilder/digis/Cbm2021EventBuilderAlgo.cxx b/reco/eventbuilder/digis/Cbm2021EventBuilderAlgo.cxx index 774ea4363ca53f45fdf9a56b153554e730796ac8..7900102945b552c38cb8ef5f83effc8db47a9495 100644 --- a/reco/eventbuilder/digis/Cbm2021EventBuilderAlgo.cxx +++ b/reco/eventbuilder/digis/Cbm2021EventBuilderAlgo.cxx @@ -40,8 +40,7 @@ Cbm2021EventBuilderAlgo::~Cbm2021EventBuilderAlgo() {} // ---- Init ----------------------------------------------------------- Bool_t Cbm2021EventBuilderAlgo::InitAlgo() { - LOG(info) - << "Cbm2021EventBuilderAlgo::InitAlgo => Starting sequence"; + LOG(info) << "Cbm2021EventBuilderAlgo::InitAlgo => Starting sequence"; // Get a handle from the IO manager FairRootManager* ioman = FairRootManager::Instance(); @@ -126,8 +125,7 @@ void Cbm2021EventBuilderAlgo::Finish() { } // --------------------------------------------------------------------- -Bool_t Cbm2021EventBuilderAlgo::CheckDataAvailable( - EventBuilderDetector& det) { +Bool_t Cbm2021EventBuilderAlgo::CheckDataAvailable(EventBuilderDetector& det) { // Get a handle from the IO manager FairRootManager* ioman = FairRootManager::Instance(); @@ -137,39 +135,33 @@ Bool_t Cbm2021EventBuilderAlgo::CheckDataAvailable( if (!fT0DigiVec) { LOG(info) << "No T0 digi input found."; return kFALSE; - } - } - else if (ECbmModuleId::kSts == det.detId) { + } + } else if (ECbmModuleId::kSts == det.detId) { if (!fStsDigis) { LOG(info) << "No " << det.sName << " digi input found."; return kFALSE; } - } - else if (ECbmModuleId::kMuch == det.detId) { - if (!fMuchDigis && !fMuchBeamTimeDigis ) { + } else if (ECbmModuleId::kMuch == det.detId) { + if (!fMuchDigis && !fMuchBeamTimeDigis) { LOG(info) << "No " << det.sName << " digi input found."; return kFALSE; } - } - else if (ECbmModuleId::kTrd == det.detId) { + } else if (ECbmModuleId::kTrd == det.detId) { if (!fTrdDigis) { LOG(info) << "No " << det.sName << " digi input found."; return kFALSE; } - } - else if (ECbmModuleId::kTof == det.detId) { + } else if (ECbmModuleId::kTof == det.detId) { if (!fTofDigis) { LOG(info) << "No " << det.sName << " digi input found."; return kFALSE; } - } - else if (ECbmModuleId::kRich == det.detId) { + } else if (ECbmModuleId::kRich == det.detId) { if (!fRichDigis) { LOG(info) << "No " << det.sName << " digi input found."; return kFALSE; } - } - else if (ECbmModuleId::kPsd == det.detId) { + } else if (ECbmModuleId::kPsd == det.detId) { if (!fPsdDigis) { LOG(info) << "No " << det.sName << " digi input found."; return kFALSE; @@ -237,98 +229,103 @@ void Cbm2021EventBuilderAlgo::BuildEvents() { } // switch( *det ) } -UInt_t Cbm2021EventBuilderAlgo::GetNofDigis( ECbmModuleId detId ) { +UInt_t Cbm2021EventBuilderAlgo::GetNofDigis(ECbmModuleId detId) { switch (detId) { case ECbmModuleId::kSts: { - return fStsDigis->size(); - } + return fStsDigis->size(); + } case ECbmModuleId::kMuch: { if (fbUseMuchBeamtimeDigi) { - return fMuchBeamTimeDigis->size(); - } - else { - return fMuchDigis->size(); - } - } + return fMuchBeamTimeDigis->size(); + } else { + return fMuchDigis->size(); + } + } case ECbmModuleId::kTrd: { return fTrdDigis->size(); - } + } case ECbmModuleId::kTof: { return fTofDigis->size(); - } + } case ECbmModuleId::kRich: { return fRichDigis->size(); - } + } case ECbmModuleId::kPsd: { return fPsdDigis->size(); - } + } case ECbmModuleId::kT0: { - return fT0DigiVec->size(); //what to do here? Not in digi manager. - } + return fT0DigiVec->size(); //what to do here? Not in digi manager. + } default: { LOG(fatal) << "Cbm2021EventBuilderAlgo::GetNofDigis => " << "Trying to get digi number with unsupported detector."; return -1; - } - } + } + } } -bool Cbm2021EventBuilderAlgo::DetIsPresent( ECbmModuleId detId ) { +bool Cbm2021EventBuilderAlgo::DetIsPresent(ECbmModuleId detId) { switch (detId) { case ECbmModuleId::kSts: { - return fStsDigis!=nullptr; - } + return fStsDigis != nullptr; + } case ECbmModuleId::kMuch: { if (fbUseMuchBeamtimeDigi) { - return fMuchBeamTimeDigis!=nullptr; - } - else { - return fMuchDigis!=nullptr; - } - } + return fMuchBeamTimeDigis != nullptr; + } else { + return fMuchDigis != nullptr; + } + } case ECbmModuleId::kTrd: { - return fTrdDigis!=nullptr; - } + return fTrdDigis != nullptr; + } case ECbmModuleId::kTof: { - return fTofDigis!=nullptr; - } + return fTofDigis != nullptr; + } case ECbmModuleId::kRich: { - return fRichDigis!=nullptr; - } + return fRichDigis != nullptr; + } case ECbmModuleId::kPsd: { - return fPsdDigis!=nullptr; - } + return fPsdDigis != nullptr; + } case ECbmModuleId::kT0: { - return fT0DigiVec!=nullptr; //what to do here? Not in digi manager. - } + return fT0DigiVec != nullptr; //what to do here? Not in digi manager. + } default: { LOG(fatal) << "Cbm2021EventBuilderAlgo::GetNofDigis => " << "Trying to get digi number with unsupported detector."; return -1; - } - } + } + } } -template<> const CbmStsDigi* Cbm2021EventBuilderAlgo::GetDigi( UInt_t uDigi ) { - return &((*fStsDigis)[uDigi]); +template<> +const CbmStsDigi* Cbm2021EventBuilderAlgo::GetDigi(UInt_t uDigi) { + return &((*fStsDigis)[uDigi]); } -template<> const CbmMuchBeamTimeDigi* Cbm2021EventBuilderAlgo::GetDigi( UInt_t uDigi ) { - return &((*fMuchBeamTimeDigis)[uDigi]); +template<> +const CbmMuchBeamTimeDigi* Cbm2021EventBuilderAlgo::GetDigi(UInt_t uDigi) { + return &((*fMuchBeamTimeDigis)[uDigi]); } -template<> const CbmMuchDigi* Cbm2021EventBuilderAlgo::GetDigi( UInt_t uDigi ) { - return &((*fMuchDigis)[uDigi]); +template<> +const CbmMuchDigi* Cbm2021EventBuilderAlgo::GetDigi(UInt_t uDigi) { + return &((*fMuchDigis)[uDigi]); } -template<> const CbmTrdDigi* Cbm2021EventBuilderAlgo::GetDigi( UInt_t uDigi ) { - return &((*fTrdDigis)[uDigi]); +template<> +const CbmTrdDigi* Cbm2021EventBuilderAlgo::GetDigi(UInt_t uDigi) { + return &((*fTrdDigis)[uDigi]); } -template<> const CbmTofDigi* Cbm2021EventBuilderAlgo::GetDigi( UInt_t uDigi ) { - return &((*fTofDigis)[uDigi]); +template<> +const CbmTofDigi* Cbm2021EventBuilderAlgo::GetDigi(UInt_t uDigi) { + return &((*fTofDigis)[uDigi]); } -template<> const CbmRichDigi* Cbm2021EventBuilderAlgo::GetDigi( UInt_t uDigi ) { - return &((*fRichDigis)[uDigi]); +template<> +const CbmRichDigi* Cbm2021EventBuilderAlgo::GetDigi(UInt_t uDigi) { + return &((*fRichDigis)[uDigi]); } -template<> const CbmPsdDigi* Cbm2021EventBuilderAlgo::GetDigi( UInt_t uDigi ) { - return &((*fPsdDigis)[uDigi]); +template<> +const CbmPsdDigi* Cbm2021EventBuilderAlgo::GetDigi(UInt_t uDigi) { + return &((*fPsdDigis)[uDigi]); } template<class DigiSeed> @@ -392,9 +389,8 @@ void Cbm2021EventBuilderAlgo::LoopOnSeeds() { << "T0 as reference detector but vector not found!"; } // if (ECbmModuleId::kT0 == fRefDet.detId) else { - UInt_t uNbRefDigis = (0 < GetNofDigis(fRefDet.detId) - ? GetNofDigis(fRefDet.detId) - : 0); + UInt_t uNbRefDigis = + (0 < GetNofDigis(fRefDet.detId) ? GetNofDigis(fRefDet.detId) : 0); /// Loop on size of vector for (UInt_t uDigi = 0; uDigi < uNbRefDigis; ++uDigi) { LOG(debug) << Form("Checking seed %6u / %6u", uDigi, uNbRefDigis); @@ -419,7 +415,7 @@ void Cbm2021EventBuilderAlgo::LoopOnSeeds() { } void Cbm2021EventBuilderAlgo::CheckSeed(Double_t dSeedTime, - UInt_t uSeedDigiIdx) { + UInt_t uSeedDigiIdx) { /// If previous event valid and event overlap not allowed, check if we are in overlap /// and react accordingly if (nullptr != fCurrentEvent @@ -589,9 +585,8 @@ void Cbm2021EventBuilderAlgo::CheckSeed(Double_t dSeedTime, } template<class DigiCheck> -void Cbm2021EventBuilderAlgo::SearchMatches( - Double_t dSeedTime, - EventBuilderDetector& detMatch) { +void Cbm2021EventBuilderAlgo::SearchMatches(Double_t dSeedTime, + EventBuilderDetector& detMatch) { /// This algo relies on time sorted vectors for the selected detectors UInt_t uLocalIndexStart = detMatch.fuStartIndex; UInt_t uLocalIndexEnd = detMatch.fuStartIndex; @@ -632,9 +627,8 @@ void Cbm2021EventBuilderAlgo::SearchMatches( << "T0 as selection detector but vector not found!"; } // if( ECbmModuleId::kT0 == detMatch.detId ) else { - UInt_t uNbSelDigis = (0 < GetNofDigis(detMatch.detId) - ? GetNofDigis(detMatch.detId) - : 0); + UInt_t uNbSelDigis = + (0 < GetNofDigis(detMatch.detId) ? GetNofDigis(detMatch.detId) : 0); /// Loop on size of vector for (UInt_t uDigi = detMatch.fuStartIndex; uDigi < uNbSelDigis; ++uDigi) { const DigiCheck* pDigi = GetDigi<DigiCheck>(uDigi); @@ -676,9 +670,8 @@ void Cbm2021EventBuilderAlgo::SearchMatches( detMatch.fuEndIndex = uLocalIndexEnd; } -void Cbm2021EventBuilderAlgo::AddDigiToEvent( - EventBuilderDetector& det, - Int_t _entry) { +void Cbm2021EventBuilderAlgo::AddDigiToEvent(EventBuilderDetector& det, + Int_t _entry) { fCurrentEvent->AddData(det.dataType, _entry); } @@ -699,9 +692,9 @@ Bool_t Cbm2021EventBuilderAlgo::HasTrigger(CbmEvent* event) { return kTRUE; } -Bool_t Cbm2021EventBuilderAlgo::CheckTriggerConditions( - CbmEvent* event, - EventBuilderDetector& det) { +Bool_t +Cbm2021EventBuilderAlgo::CheckTriggerConditions(CbmEvent* event, + EventBuilderDetector& det) { /// Check if both Trigger conditions disabled for this detector if (0 == det.fuTriggerMinDigis && det.fiTriggerMaxDigis < 0) { return kTRUE; @@ -820,8 +813,7 @@ void Cbm2021EventBuilderAlgo::FillHistos() { dPreEvtTime = evt->GetStartTime(); } // for( CbmEvent * evt: fEventVector ) } -void Cbm2021EventBuilderAlgo::ResetHistograms( - Bool_t /*bResetTime*/) { +void Cbm2021EventBuilderAlgo::ResetHistograms(Bool_t /*bResetTime*/) { fhEventTime->Reset(); fhEventDt->Reset(); fhEventSize->Reset(); @@ -843,14 +835,13 @@ void Cbm2021EventBuilderAlgo::ResetHistograms( */ } //---------------------------------------------------------------------- -void Cbm2021EventBuilderAlgo::SetReferenceDetector( - ECbmModuleId refDet, - ECbmDataType dataTypeIn, - std::string sNameIn, - UInt_t uTriggerMinDigisIn, - Int_t iTriggerMaxDigisIn, - Double_t fdTimeWinBegIn, - Double_t fdTimeWinEndIn) { +void Cbm2021EventBuilderAlgo::SetReferenceDetector(ECbmModuleId refDet, + ECbmDataType dataTypeIn, + std::string sNameIn, + UInt_t uTriggerMinDigisIn, + Int_t iTriggerMaxDigisIn, + Double_t fdTimeWinBegIn, + Double_t fdTimeWinEndIn) { /// FIXME: Deprecated method to be removed later. For now create temp object. SetReferenceDetector(EventBuilderDetector(refDet, @@ -862,12 +853,12 @@ void Cbm2021EventBuilderAlgo::SetReferenceDetector( fdTimeWinEndIn)); } void Cbm2021EventBuilderAlgo::AddDetector(ECbmModuleId selDet, - ECbmDataType dataTypeIn, - std::string sNameIn, - UInt_t uTriggerMinDigisIn, - Int_t iTriggerMaxDigisIn, - Double_t fdTimeWinBegIn, - Double_t fdTimeWinEndIn) { + ECbmDataType dataTypeIn, + std::string sNameIn, + UInt_t uTriggerMinDigisIn, + Int_t iTriggerMaxDigisIn, + Double_t fdTimeWinBegIn, + Double_t fdTimeWinEndIn) { /// FIXME: Deprecated method to be removed later. For now create temp object. AddDetector(EventBuilderDetector(selDet, @@ -887,10 +878,9 @@ void Cbm2021EventBuilderAlgo::SetReferenceDetector( det != fvDets.end(); ++det) { if ((*det) == refDetIn) { - LOG(warning) - << "Cbm2021EventBuilderAlgo::SetReferenceDetector => " - "Reference detector already in selection detector list!" - << refDetIn.sName; + LOG(warning) << "Cbm2021EventBuilderAlgo::SetReferenceDetector => " + "Reference detector already in selection detector list!" + << refDetIn.sName; LOG(warning) << " => " "It will be automatically removed from selection detector list!"; @@ -927,8 +917,7 @@ void Cbm2021EventBuilderAlgo::SetReferenceDetector( /// Update the variable storing the size if widest time window for overlap detection UpdateWidestTimeWinRange(); } -void Cbm2021EventBuilderAlgo::AddDetector( - EventBuilderDetector selDet) { +void Cbm2021EventBuilderAlgo::AddDetector(EventBuilderDetector selDet) { if (fRefDet == selDet) { LOG(fatal) << "Cbm2021EventBuilderAlgo::AddDetector => Cannot " "add the reference detector as selection detector!" @@ -955,8 +944,7 @@ void Cbm2021EventBuilderAlgo::AddDetector( /// Update the variable storing the size if widest time window for overlap detection UpdateWidestTimeWinRange(); } -void Cbm2021EventBuilderAlgo::RemoveDetector( - EventBuilderDetector selDet) { +void Cbm2021EventBuilderAlgo::RemoveDetector(EventBuilderDetector selDet) { /// Loop on selection detectors for (std::vector<EventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); @@ -971,9 +959,8 @@ void Cbm2021EventBuilderAlgo::RemoveDetector( << selDet.sName; } //---------------------------------------------------------------------- -void Cbm2021EventBuilderAlgo::SetTriggerMinNumber( - ECbmModuleId selDet, - UInt_t uVal) { +void Cbm2021EventBuilderAlgo::SetTriggerMinNumber(ECbmModuleId selDet, + UInt_t uVal) { /// Check first if reference detector if (fRefDet.detId == selDet) { fRefDet.fuTriggerMinDigis = uVal; @@ -1003,9 +990,8 @@ void Cbm2021EventBuilderAlgo::SetTriggerMinNumber( "Doing nothing, detector neither reference nor in selection list!" << selDet; } -void Cbm2021EventBuilderAlgo::SetTriggerMaxNumber( - ECbmModuleId selDet, - Int_t iVal) { +void Cbm2021EventBuilderAlgo::SetTriggerMaxNumber(ECbmModuleId selDet, + Int_t iVal) { /// Check first if reference detector if (fRefDet.detId == selDet) { fRefDet.fiTriggerMaxDigis = iVal; @@ -1036,8 +1022,8 @@ void Cbm2021EventBuilderAlgo::SetTriggerMaxNumber( << selDet; } void Cbm2021EventBuilderAlgo::SetTriggerWindow(ECbmModuleId selDet, - Double_t dWinBeg, - Double_t dWinEnd) { + Double_t dWinBeg, + Double_t dWinEnd) { /// Check if valid time window: end strictly after beginning if (dWinEnd <= dWinBeg) LOG(fatal) << "Cbm2021EventBuilderAlgo::SetTriggerWindow => " diff --git a/reco/eventbuilder/digis/Cbm2021EventBuilderAlgo.h b/reco/eventbuilder/digis/Cbm2021EventBuilderAlgo.h index f132b866974b0f667ff9e41940ea5e7030afba75..0ccfd51b39ee4c23bdf53d2d90ec48f92649bc55 100644 --- a/reco/eventbuilder/digis/Cbm2021EventBuilderAlgo.h +++ b/reco/eventbuilder/digis/Cbm2021EventBuilderAlgo.h @@ -9,6 +9,7 @@ #define CBM2021EVENTBUILDERALGO_H /// CBM headers +#include "../../fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.h" // for EOverlapMode and EventBuilderDetector #include "CbmMuchBeamTimeDigi.h" #include "CbmMuchDigi.h" #include "CbmPsdDigi.h" @@ -29,7 +30,7 @@ #include <tuple> #include <vector> -#include <boost/any.hpp> +#include <boost/any.hpp> class TimesliceMetaData; class CbmEvent; @@ -39,6 +40,7 @@ class TH2; class TNamed; class TCanvas; +/* get from CbmMcbm2019TimeWinEventBuilderAlgo.h for now enum class EOverlapMode { NoOverlap, MergeOverlap, AllowOverlap }; class EventBuilderDetector { @@ -110,15 +112,15 @@ static const EventBuilderDetector kEventBuilderDetT0 = static const EventBuilderDetector kEventBuilderDetUndef = EventBuilderDetector(); +*/ + class Cbm2021EventBuilderAlgo { public: /** Default constructor **/ Cbm2021EventBuilderAlgo(); - Cbm2021EventBuilderAlgo( - const Cbm2021EventBuilderAlgo&) = delete; - Cbm2021EventBuilderAlgo - operator=(const Cbm2021EventBuilderAlgo&) = delete; + Cbm2021EventBuilderAlgo(const Cbm2021EventBuilderAlgo&) = delete; + Cbm2021EventBuilderAlgo operator=(const Cbm2021EventBuilderAlgo&) = delete; /** Destructor **/ ~Cbm2021EventBuilderAlgo(); @@ -195,25 +197,18 @@ public: } /// Set digi containers - void SetStsDigis( std::vector<CbmStsDigi>* StsDigis ){ - fStsDigis = StsDigis; - } - void SetMuchDigis( std::vector<CbmMuchDigi>* MuchDigis ){ + void SetStsDigis(std::vector<CbmStsDigi>* StsDigis) { fStsDigis = StsDigis; } + void SetMuchDigis(std::vector<CbmMuchDigi>* MuchDigis) { fMuchDigis = MuchDigis; } - void SetTrdDigis( std::vector<CbmTrdDigi>* TrdDigis ){ - fTrdDigis = TrdDigis; - } - void SetTofDigis( std::vector<CbmTofDigi>* TofDigis ){ - fTofDigis = TofDigis; - } - void SetRichDigis( std::vector<CbmRichDigi>* RichDigis ){ + void SetTrdDigis(std::vector<CbmTrdDigi>* TrdDigis) { fTrdDigis = TrdDigis; } + void SetTofDigis(std::vector<CbmTofDigi>* TofDigis) { fTofDigis = TofDigis; } + void SetRichDigis(std::vector<CbmRichDigi>* RichDigis) { fRichDigis = RichDigis; } - void SetPsdDigis( std::vector<CbmPsdDigi>* PsdDigis ){ - fPsdDigis = PsdDigis; - } - void SetMuchBeamTimeDigis( std::vector<CbmMuchBeamTimeDigi>* MuchBeamTimeDigis ){ + void SetPsdDigis(std::vector<CbmPsdDigi>* PsdDigis) { fPsdDigis = PsdDigis; } + void + SetMuchBeamTimeDigis(std::vector<CbmMuchBeamTimeDigi>* MuchBeamTimeDigis) { fMuchBeamTimeDigis = MuchBeamTimeDigis; } @@ -280,17 +275,18 @@ private: TClonesArray* fTimeSliceMetaDataArray = nullptr; //! const TimesliceMetaData* pTsMetaData = nullptr; - const std::vector<CbmMuchDigi>* fMuchDigis = nullptr; + const std::vector<CbmMuchDigi>* fMuchDigis = nullptr; const std::vector<CbmMuchBeamTimeDigi>* fMuchBeamTimeDigis = nullptr; - const std::vector<CbmStsDigi>* fStsDigis = nullptr; - const std::vector<CbmTrdDigi>* fTrdDigis = nullptr; - const std::vector<CbmTofDigi>* fTofDigis = nullptr; - const std::vector<CbmRichDigi>* fRichDigis = nullptr; - const std::vector<CbmPsdDigi>* fPsdDigis = nullptr; - - bool DetIsPresent( ECbmModuleId detId ); - UInt_t GetNofDigis( ECbmModuleId detId ); - template <class Digi> const Digi* GetDigi( UInt_t uDigi ); + const std::vector<CbmStsDigi>* fStsDigis = nullptr; + const std::vector<CbmTrdDigi>* fTrdDigis = nullptr; + const std::vector<CbmTofDigi>* fTofDigis = nullptr; + const std::vector<CbmRichDigi>* fRichDigis = nullptr; + const std::vector<CbmPsdDigi>* fPsdDigis = nullptr; + + bool DetIsPresent(ECbmModuleId detId); + UInt_t GetNofDigis(ECbmModuleId detId); + template<class Digi> + const Digi* GetDigi(UInt_t uDigi); /// Data ouptut CbmEvent* fCurrentEvent = diff --git a/reco/eventbuilder/digis/Cbm2021EventBuilderTask.cxx b/reco/eventbuilder/digis/Cbm2021EventBuilderTask.cxx index d338f840abdfdc3a0329bc9f26177338f845da0e..ecd723123f5e8dcc9f568605dfc86b9f513ae556 100644 --- a/reco/eventbuilder/digis/Cbm2021EventBuilderTask.cxx +++ b/reco/eventbuilder/digis/Cbm2021EventBuilderTask.cxx @@ -5,11 +5,11 @@ * GNU Lesser General Public Licence (LGPL) version 3, * * copied verbatim in the file "LICENSE" * ********************************************************************************/ -#include "Cbm2021EventBuilderAlgo.h" #include "Cbm2021EventBuilderTask.h" +#include "Cbm2021EventBuilderAlgo.h" -#include "CbmEvent.h" #include "CbmDigiManager.h" +#include "CbmEvent.h" #include "FairLogger.h" #include "FairRootManager.h" @@ -29,8 +29,7 @@ Cbm2021EventBuilderTask::Cbm2021EventBuilderTask() } // ---- Destructor ---------------------------------------------------- -Cbm2021EventBuilderTask::~Cbm2021EventBuilderTask() { -} +Cbm2021EventBuilderTask::~Cbm2021EventBuilderTask() {} // ---- Initialisation ---------------------------------------------- void Cbm2021EventBuilderTask::SetParContainers() { @@ -44,15 +43,13 @@ InitStatus Cbm2021EventBuilderTask::Init() { // Get a pointer to the previous already existing data level fDigiMan = CbmDigiManager::Instance(); - if (fbUseMuchBeamtimeDigi) { - fDigiMan->UseMuchBeamTimeDigi(); - } + if (fbUseMuchBeamtimeDigi) { fDigiMan->UseMuchBeamTimeDigi(); } fDigiMan->Init(); //Init STS digis if (!fDigiMan->IsPresent(ECbmModuleId::kSts)) { LOG(info) << "No STS digi input."; - }else{ + } else { LOG(info) << "STS digi input."; fStsDigis = new std::vector<CbmStsDigi>; fpAlgo->SetStsDigis(fStsDigis); @@ -61,12 +58,12 @@ InitStatus Cbm2021EventBuilderTask::Init() { //Init MUCH digis if (!fDigiMan->IsPresent(ECbmModuleId::kMuch)) { LOG(info) << "No MUCH digi input."; - }else{ + } else { LOG(info) << "MUCH digi input."; - if( fbUseMuchBeamtimeDigi ){ + if (fbUseMuchBeamtimeDigi) { fMuchBeamTimeDigis = new std::vector<CbmMuchBeamTimeDigi>; fpAlgo->SetMuchBeamTimeDigis(fMuchBeamTimeDigis); - }else{ + } else { fMuchDigis = new std::vector<CbmMuchDigi>; fpAlgo->SetMuchDigis(fMuchDigis); } @@ -75,7 +72,7 @@ InitStatus Cbm2021EventBuilderTask::Init() { //Init TRD digis if (!fDigiMan->IsPresent(ECbmModuleId::kTrd)) { LOG(info) << "No TRD digi input."; - }else{ + } else { LOG(info) << "TRD digi input."; fTrdDigis = new std::vector<CbmTrdDigi>; fpAlgo->SetTrdDigis(fTrdDigis); @@ -84,7 +81,7 @@ InitStatus Cbm2021EventBuilderTask::Init() { //Init TOF digis if (!fDigiMan->IsPresent(ECbmModuleId::kTof)) { LOG(info) << "No TOF digi input."; - }else{ + } else { LOG(info) << "TOF digi input."; fTofDigis = new std::vector<CbmTofDigi>; fpAlgo->SetTofDigis(fTofDigis); @@ -93,7 +90,7 @@ InitStatus Cbm2021EventBuilderTask::Init() { //Init RICH digis if (!fDigiMan->IsPresent(ECbmModuleId::kRich)) { LOG(info) << "No RICH digi input."; - }else{ + } else { LOG(info) << "RICH digi input."; fRichDigis = new std::vector<CbmRichDigi>; fpAlgo->SetRichDigis(fRichDigis); @@ -102,7 +99,7 @@ InitStatus Cbm2021EventBuilderTask::Init() { //Init PSD digis if (!fDigiMan->IsPresent(ECbmModuleId::kPsd)) { LOG(info) << "No PSD digi input."; - }else{ + } else { LOG(info) << "PSD digi input."; fPsdDigis = new std::vector<CbmPsdDigi>; fpAlgo->SetPsdDigis(fPsdDigis); @@ -127,83 +124,90 @@ InitStatus Cbm2021EventBuilderTask::ReInit() { return kSUCCESS; } // ---- Exec ---------------------------------------------------------- void Cbm2021EventBuilderTask::Exec(Option_t* /*option*/) { - LOG(debug2) - << "Cbm2021EventBuilderTask::Exec => Starting sequence"; + LOG(debug2) << "Cbm2021EventBuilderTask::Exec => Starting sequence"; //Read STS digis if (fDigiMan->IsPresent(ECbmModuleId::kSts)) { fStsDigis->clear(); - for( Int_t i=0; i<fDigiMan->GetNofDigis(ECbmModuleId::kSts); i++){ - const CbmStsDigi* Digi = fDigiMan->Get<CbmStsDigi>(i); - fStsDigis->insert( fStsDigis->begin()+i, *Digi ); + for (Int_t i = 0; i < fDigiMan->GetNofDigis(ECbmModuleId::kSts); i++) { + const CbmStsDigi* Digi = fDigiMan->Get<CbmStsDigi>(i); + fStsDigis->insert(fStsDigis->begin() + i, *Digi); } - LOG(debug) << "Read: "<< fStsDigis->size() << " STS digis."; - LOG(debug) << "In DigiManager: "<< fDigiMan->GetNofDigis(ECbmModuleId::kSts) << " STS digis."; + LOG(debug) << "Read: " << fStsDigis->size() << " STS digis."; + LOG(debug) << "In DigiManager: " + << fDigiMan->GetNofDigis(ECbmModuleId::kSts) << " STS digis."; } //Read MUCH digis if (fDigiMan->IsPresent(ECbmModuleId::kMuch)) { - if( fbUseMuchBeamtimeDigi ){ + if (fbUseMuchBeamtimeDigi) { fMuchBeamTimeDigis->clear(); - for( Int_t i=0; i<fDigiMan->GetNofDigis(ECbmModuleId::kMuch); i++){ - const CbmMuchBeamTimeDigi* Digi = fDigiMan->Get<CbmMuchBeamTimeDigi>(i); - fMuchBeamTimeDigis->insert( fMuchBeamTimeDigis->begin()+i, *Digi ); + for (Int_t i = 0; i < fDigiMan->GetNofDigis(ECbmModuleId::kMuch); i++) { + const CbmMuchBeamTimeDigi* Digi = fDigiMan->Get<CbmMuchBeamTimeDigi>(i); + fMuchBeamTimeDigis->insert(fMuchBeamTimeDigis->begin() + i, *Digi); } - LOG(debug) << "Read: "<< fDigiMan->GetNofDigis(ECbmModuleId::kMuch) << " MUCH digis."; - LOG(debug) << "In DigiManager: "<< fMuchBeamTimeDigis->size() << " MUCH digis."; - }else{ + LOG(debug) << "Read: " << fDigiMan->GetNofDigis(ECbmModuleId::kMuch) + << " MUCH digis."; + LOG(debug) << "In DigiManager: " << fMuchBeamTimeDigis->size() + << " MUCH digis."; + } else { fMuchDigis->clear(); - for( Int_t i=0; i<fDigiMan->GetNofDigis(ECbmModuleId::kMuch); i++){ - const CbmMuchDigi* Digi = fDigiMan->Get<CbmMuchDigi>(i); - fMuchDigis->insert( fMuchDigis->begin()+i, *Digi ); + for (Int_t i = 0; i < fDigiMan->GetNofDigis(ECbmModuleId::kMuch); i++) { + const CbmMuchDigi* Digi = fDigiMan->Get<CbmMuchDigi>(i); + fMuchDigis->insert(fMuchDigis->begin() + i, *Digi); } - LOG(debug) << "Read: "<< fDigiMan->GetNofDigis(ECbmModuleId::kMuch) << " MUCH digis."; - LOG(debug) << "In DigiManager: "<< fMuchDigis->size() << " MUCH digis."; + LOG(debug) << "Read: " << fDigiMan->GetNofDigis(ECbmModuleId::kMuch) + << " MUCH digis."; + LOG(debug) << "In DigiManager: " << fMuchDigis->size() << " MUCH digis."; } } //Read TRD digis if (fDigiMan->IsPresent(ECbmModuleId::kTrd)) { fTrdDigis->clear(); - for( Int_t i=0; i<fDigiMan->GetNofDigis(ECbmModuleId::kTrd); i++){ - const CbmTrdDigi* Digi = fDigiMan->Get<CbmTrdDigi>(i); - fTrdDigis->insert( fTrdDigis->begin()+i, *Digi ); + for (Int_t i = 0; i < fDigiMan->GetNofDigis(ECbmModuleId::kTrd); i++) { + const CbmTrdDigi* Digi = fDigiMan->Get<CbmTrdDigi>(i); + fTrdDigis->insert(fTrdDigis->begin() + i, *Digi); } - LOG(debug) << "Read: "<< fDigiMan->GetNofDigis(ECbmModuleId::kTrd) << " TRD digis."; - LOG(debug) << "In DigiManager: "<< fTrdDigis->size() << " TRD digis."; + LOG(debug) << "Read: " << fDigiMan->GetNofDigis(ECbmModuleId::kTrd) + << " TRD digis."; + LOG(debug) << "In DigiManager: " << fTrdDigis->size() << " TRD digis."; } //Read TOF digis if (fDigiMan->IsPresent(ECbmModuleId::kTof)) { fTofDigis->clear(); - for( Int_t i=0; i<fDigiMan->GetNofDigis(ECbmModuleId::kTof); i++){ - const CbmTofDigi* Digi = fDigiMan->Get<CbmTofDigi>(i); - fTofDigis->insert( fTofDigis->begin()+i, *Digi ); + for (Int_t i = 0; i < fDigiMan->GetNofDigis(ECbmModuleId::kTof); i++) { + const CbmTofDigi* Digi = fDigiMan->Get<CbmTofDigi>(i); + fTofDigis->insert(fTofDigis->begin() + i, *Digi); } - LOG(debug) << "Read: "<< fDigiMan->GetNofDigis(ECbmModuleId::kTof) << " TOF digis."; - LOG(debug) << "In DigiManager: "<< fTofDigis->size() << " TOF digis."; + LOG(debug) << "Read: " << fDigiMan->GetNofDigis(ECbmModuleId::kTof) + << " TOF digis."; + LOG(debug) << "In DigiManager: " << fTofDigis->size() << " TOF digis."; } //Read RICH digis if (fDigiMan->IsPresent(ECbmModuleId::kRich)) { fRichDigis->clear(); - for( Int_t i=0; i<fDigiMan->GetNofDigis(ECbmModuleId::kRich); i++){ - const CbmRichDigi* Digi = fDigiMan->Get<CbmRichDigi>(i); - fRichDigis->insert( fRichDigis->begin()+i, *Digi ); + for (Int_t i = 0; i < fDigiMan->GetNofDigis(ECbmModuleId::kRich); i++) { + const CbmRichDigi* Digi = fDigiMan->Get<CbmRichDigi>(i); + fRichDigis->insert(fRichDigis->begin() + i, *Digi); } - LOG(debug) << "Read: "<< fDigiMan->GetNofDigis(ECbmModuleId::kRich) << " RICH digis."; - LOG(debug) << "In DigiManager: "<< fRichDigis->size() << " RICH digis."; + LOG(debug) << "Read: " << fDigiMan->GetNofDigis(ECbmModuleId::kRich) + << " RICH digis."; + LOG(debug) << "In DigiManager: " << fRichDigis->size() << " RICH digis."; } //Read PSD digis if (fDigiMan->IsPresent(ECbmModuleId::kPsd)) { fPsdDigis->clear(); - for( Int_t i=0; i<fDigiMan->GetNofDigis(ECbmModuleId::kPsd); i++){ - const CbmPsdDigi* Digi = fDigiMan->Get<CbmPsdDigi>(i); - fPsdDigis->insert( fPsdDigis->begin()+i, *Digi ); + for (Int_t i = 0; i < fDigiMan->GetNofDigis(ECbmModuleId::kPsd); i++) { + const CbmPsdDigi* Digi = fDigiMan->Get<CbmPsdDigi>(i); + fPsdDigis->insert(fPsdDigis->begin() + i, *Digi); } - LOG(debug) << "Read: "<< fDigiMan->GetNofDigis(ECbmModuleId::kPsd) << " PSD digis."; - LOG(debug) << "In DigiManager: "<< fPsdDigis->size() << " PSD digis."; + LOG(debug) << "Read: " << fDigiMan->GetNofDigis(ECbmModuleId::kPsd) + << " PSD digis."; + LOG(debug) << "In DigiManager: " << fPsdDigis->size() << " PSD digis."; } /// Call Algo ProcessTs method @@ -289,50 +293,43 @@ void Cbm2021EventBuilderTask::SetReferenceDetector( EventBuilderDetector refDet) { if (nullptr != fpAlgo) fpAlgo->SetReferenceDetector(refDet); } -void Cbm2021EventBuilderTask::AddDetector( - EventBuilderDetector selDet) { +void Cbm2021EventBuilderTask::AddDetector(EventBuilderDetector selDet) { if (nullptr != fpAlgo) fpAlgo->AddDetector(selDet); } -void Cbm2021EventBuilderTask::RemoveDetector( - EventBuilderDetector selDet) { +void Cbm2021EventBuilderTask::RemoveDetector(EventBuilderDetector selDet) { if (nullptr != fpAlgo) fpAlgo->RemoveDetector(selDet); } -void Cbm2021EventBuilderTask::SetTriggerMinNumber( - ECbmModuleId selDet, - UInt_t uVal) { +void Cbm2021EventBuilderTask::SetTriggerMinNumber(ECbmModuleId selDet, + UInt_t uVal) { if (nullptr != fpAlgo) fpAlgo->SetTriggerMinNumber(selDet, uVal); } -void Cbm2021EventBuilderTask::SetTriggerMaxNumber( - ECbmModuleId selDet, - Int_t iVal) { +void Cbm2021EventBuilderTask::SetTriggerMaxNumber(ECbmModuleId selDet, + Int_t iVal) { if (nullptr != fpAlgo) fpAlgo->SetTriggerMaxNumber(selDet, iVal); } void Cbm2021EventBuilderTask::SetTriggerWindow(ECbmModuleId det, - Double_t dWinBeg, - Double_t dWinEnd) { + Double_t dWinBeg, + Double_t dWinEnd) { if (nullptr != fpAlgo) fpAlgo->SetTriggerWindow(det, dWinBeg, dWinEnd); } -void Cbm2021EventBuilderTask::SetTsParameters( - Double_t dTsStartTime, - Double_t dTsLength, - Double_t dTsOverLength) { +void Cbm2021EventBuilderTask::SetTsParameters(Double_t dTsStartTime, + Double_t dTsLength, + Double_t dTsOverLength) { if (nullptr != fpAlgo) fpAlgo->SetTsParameters(dTsStartTime, dTsLength, dTsOverLength); } -void Cbm2021EventBuilderTask::SetEventOverlapMode( - EOverlapMode mode) { +void Cbm2021EventBuilderTask::SetEventOverlapMode(EOverlapMode mode) { if (nullptr != fpAlgo) fpAlgo->SetEventOverlapMode(mode); } void Cbm2021EventBuilderTask::SetIgnoreTsOverlap(Bool_t bFlagIn) { if (nullptr != fpAlgo) fpAlgo->SetIgnoreTsOverlap(bFlagIn); } -void Cbm2021EventBuilderTask::ChangeMuchBeamtimeDigiFlag( - Bool_t bFlagIn) { +void Cbm2021EventBuilderTask::ChangeMuchBeamtimeDigiFlag(Bool_t bFlagIn) { if (nullptr != fpAlgo) fpAlgo->ChangeMuchBeamtimeDigiFlag(bFlagIn); fbUseMuchBeamtimeDigi = bFlagIn; } diff --git a/reco/eventbuilder/digis/Cbm2021EventBuilderTask.h b/reco/eventbuilder/digis/Cbm2021EventBuilderTask.h index 48c46db8685a3eb46170748c1bf027708c77ce8d..1f5ced7c2b24a189044c07ae448976f971fb6db7 100644 --- a/reco/eventbuilder/digis/Cbm2021EventBuilderTask.h +++ b/reco/eventbuilder/digis/Cbm2021EventBuilderTask.h @@ -6,7 +6,10 @@ * copied verbatim in the file "LICENSE" * ********************************************************************************/ #ifndef CBMM2021EVENTBUILDERTASK_H -#define CBMM2021EVENTBUILDERTASK_H +#define CBMM2021EVENTBUILDERTASK_H + +// CBM headers +#include "../../fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderAlgo.h" // for EOverlapMode and EventBuilderDetector /// FAIRROOT headers #include "FairTask.h" @@ -30,7 +33,6 @@ class CbmDigiManager; class Cbm2021EventBuilderAlgo; -class EventBuilderDetector; class TClonesArray; class Cbm2021EventBuilderTask : public FairTask { @@ -38,10 +40,8 @@ public: /** Default constructor **/ Cbm2021EventBuilderTask(); - Cbm2021EventBuilderTask( - const Cbm2021EventBuilderTask&) = delete; - Cbm2021EventBuilderTask - operator=(const Cbm2021EventBuilderTask&) = delete; + Cbm2021EventBuilderTask(const Cbm2021EventBuilderTask&) = delete; + Cbm2021EventBuilderTask operator=(const Cbm2021EventBuilderTask&) = delete; /** Constructor with parameters (Optional) **/ // Cbm2021EventBuilderTask(Int_t verbose); @@ -92,14 +92,14 @@ private: void FillOutput(); void SaveHistos(); - CbmDigiManager* fDigiMan = nullptr; - std::vector<CbmMuchDigi>* fMuchDigis = nullptr; + CbmDigiManager* fDigiMan = nullptr; + std::vector<CbmMuchDigi>* fMuchDigis = nullptr; std::vector<CbmMuchBeamTimeDigi>* fMuchBeamTimeDigis = nullptr; - std::vector<CbmStsDigi>* fStsDigis = nullptr; - std::vector<CbmTrdDigi>* fTrdDigis = nullptr; - std::vector<CbmTofDigi>* fTofDigis = nullptr; - std::vector<CbmRichDigi>* fRichDigis = nullptr; - std::vector<CbmPsdDigi>* fPsdDigis = nullptr; + std::vector<CbmStsDigi>* fStsDigis = nullptr; + std::vector<CbmTrdDigi>* fTrdDigis = nullptr; + std::vector<CbmTofDigi>* fTofDigis = nullptr; + std::vector<CbmRichDigi>* fRichDigis = nullptr; + std::vector<CbmPsdDigi>* fPsdDigis = nullptr; Bool_t fbUseMuchBeamtimeDigi = kTRUE; //! Switch between MUCH digi classes @@ -115,4 +115,4 @@ private: ClassDef(Cbm2021EventBuilderTask, 1); }; -#endif // CBMM2021EVENTBUILDERTASK_H +#endif // CBMM2021EVENTBUILDERTASK_H