diff --git a/core/base/CbmMatchRecoToMC.cxx b/core/base/CbmMatchRecoToMC.cxx index 5eb6c6d6cbbd9fcb34825f44628f294fd026acae..168d43c8379827cca8a1fb0782d62d0e3208b951 100644 --- a/core/base/CbmMatchRecoToMC.cxx +++ b/core/base/CbmMatchRecoToMC.cxx @@ -34,10 +34,11 @@ #include <TClonesArray.h> // for TClonesArray -#include <algorithm> // for find #include <boost/exception/exception.hpp> // for clone_impl #include <boost/type_index/type_index_facade.hpp> // for operator== +#include <algorithm> // for find + using std::pair; using std::vector; @@ -427,27 +428,23 @@ void CbmMatchRecoToMC::ReadAndCreateDataBranches() { } /// FIXME: temporary hacks due to Digi array resizing and resorting in TOF clusterizer - fTofDigis = ioman->InitObjectAs<std::vector<CbmTofDigi> const *>("TofCalDigi"); + fTofDigis = ioman->InitObjectAs<std::vector<CbmTofDigi> const*>("TofCalDigi"); if (nullptr == fTofDigis) { - LOG(info) << "No calibrated tof digi vector in the input files => trying original vector"; - fTofDigis = ioman->InitObjectAs<std::vector<CbmTofDigi> const *>("TofDigi"); - if (nullptr == fTofDigis) { - LOG(fatal) << "No original tof digi vector in the input files!"; - } + LOG(info) << "No calibrated tof digi vector in the input files => trying original vector"; + fTofDigis = ioman->InitObjectAs<std::vector<CbmTofDigi> const*>("TofDigi"); + if (nullptr == fTofDigis) { LOG(fatal) << "No original tof digi vector in the input files!"; } } else - LOG(info) << "Found calibrated tof digi vector in one of the input files"; + LOG(info) << "Found calibrated tof digi vector in one of the input files"; - fTofDigiMatch = ioman->InitObjectAs<std::vector<CbmMatch> const *>("TofCalDigiMatch"); + fTofDigiMatch = ioman->InitObjectAs<std::vector<CbmMatch> const*>("TofCalDigiMatch"); if (nullptr == fTofDigiMatch) { - LOG(info) << "No calibrated tof digi to point match vector in the input files => trying original vector"; - fTofDigiMatch = ioman->InitObjectAs<std::vector<CbmMatch> const *>("TofDigiMatch"); - if (nullptr == fTofDigiMatch) { - LOG(fatal) << "No original tof digi to point match vector in the input files!"; - } + LOG(info) << "No calibrated tof digi to point match vector in the input files => trying original vector"; + fTofDigiMatch = ioman->InitObjectAs<std::vector<CbmMatch> const*>("TofDigiMatch"); + if (nullptr == fTofDigiMatch) { LOG(fatal) << "No original tof digi to point match vector in the input files!"; } } else - LOG(info) << "Found calibrated tof digi to point match vector in one of the input files"; + LOG(info) << "Found calibrated tof digi to point match vector in one of the input files"; } @@ -535,9 +532,9 @@ void CbmMatchRecoToMC::MatchHitsTof(const TClonesArray* HitDigiMatches, TClonesArray* hitMatches) { if (!(HitDigiMatches && hits && hitMatches)) return; - Int_t iNbTofDigis = fTofDigis->size(); + Int_t iNbTofDigis = fTofDigis->size(); Int_t iNbTofDigiMatches = fTofDigiMatch->size(); - if( iNbTofDigis != iNbTofDigiMatches ) + if (iNbTofDigis != iNbTofDigiMatches) LOG(fatal) << "CbmMatchRecoToMC::MatchHitsTof => Nb digis in vector not matching nb matches in vector: " << iNbTofDigis << " VS " << iNbTofDigiMatches; @@ -555,39 +552,35 @@ void CbmMatchRecoToMC::MatchHitsTof(const TClonesArray* HitDigiMatches, Int_t iDigiIdx = lDigi.GetIndex(); if (iNbTofDigis <= iDigiIdx) { - LOG(error) << "CbmMatchRecoToMC::MatchHitsTof => Digi index from Hit #" << iHit << "/" << nofHits - << " Digi " << iDigi << "/" << iNbDigisHit << " is bigger than nb entries in Digis arrays: " - << iDigiIdx << " VS " << iNbTofDigis << " => ignore it!!!"; + LOG(error) << "CbmMatchRecoToMC::MatchHitsTof => Digi index from Hit #" << iHit << "/" << nofHits << " Digi " + << iDigi << "/" << iNbDigisHit << " is bigger than nb entries in Digis arrays: " << iDigiIdx + << " VS " << iNbTofDigis << " => ignore it!!!"; const CbmTofHit* pTofHit = static_cast<CbmTofHit*>(hits->At(iHit)); LOG(error) << " Hit position: ( " << pTofHit->GetX() << " , " << pTofHit->GetY() << " , " << pTofHit->GetZ() << " ) "; continue; } // if( iNbTofDigis <= iDigiIdx ) - pTofDigi = fTofDigis->at(iDigiIdx); - pMatchDigiPnt = fTofDigiMatch->at(iDigiIdx); + pTofDigi = fTofDigis->at(iDigiIdx); + pMatchDigiPnt = fTofDigiMatch->at(iDigiIdx); Int_t iNbPointsDigi = pMatchDigiPnt.GetNofLinks(); if (iNbPointsDigi <= 0) { LOG(error) << "CbmMatchRecoToMC::MatchHitsTof => No entries in Digi to point match for Hit #" << iHit << "/" - << nofHits << " Digi " << iDigi << "/" << iNbDigisHit << ": " << iNbPointsDigi - << " (digi index is " << iDigiIdx << "/" << iNbTofDigis << ") => ignore it!!!"; + << nofHits << " Digi " << iDigi << "/" << iNbDigisHit << ": " << iNbPointsDigi << " (digi index is " + << iDigiIdx << "/" << iNbTofDigis << ") => ignore it!!!"; LOG(error) << " Digi address: 0x" << std::setw(8) << std::hex << pTofDigi.GetAddress() << std::dec; continue; - } // if( iNbTofDigis <= iDigiIdx ) - CbmLink lTruePoint = - pMatchDigiPnt.GetMatchedLink(); // Point generating the Digi + } // if( iNbTofDigis <= iDigiIdx ) + CbmLink lTruePoint = pMatchDigiPnt.GetMatchedLink(); // Point generating the Digi Int_t iTruePointIdx = lTruePoint.GetIndex(); for (Int_t iPoint = 0; iPoint < iNbPointsDigi; iPoint++) { CbmLink lPoint = pMatchDigiPnt.GetLink(iPoint); Int_t iPointIdx = lPoint.GetIndex(); if (iPointIdx == iTruePointIdx) - hitMatch->AddLink( - CbmLink(pTofDigi.GetTot(), - iPointIdx, - lPoint.GetEntry(), - lPoint.GetFile())); // Point generating the Digi + hitMatch->AddLink(CbmLink(pTofDigi.GetTot(), iPointIdx, lPoint.GetEntry(), + lPoint.GetFile())); // Point generating the Digi else hitMatch->AddLink(CbmLink( 0, diff --git a/core/base/CbmMatchRecoToMC.h b/core/base/CbmMatchRecoToMC.h index 27cd9d0c206ca95eb7d510d87b64be83119bba22..551251469343df122e8c90213275f6b902860617 100644 --- a/core/base/CbmMatchRecoToMC.h +++ b/core/base/CbmMatchRecoToMC.h @@ -8,18 +8,18 @@ #ifndef CBMMATCHRECOTOMC_H_ #define CBMMATCHRECOTOMC_H_ -#include <Rtypes.h> // for THashConsistencyHolder, ClassDef -#include <RtypesCore.h> // for Int_t, Bool_t, Option_t, kFALSE, kTRUE +#include "CbmDefs.h" // for ECbmModuleId +#include "CbmMatch.h" +#include "CbmTofDigi.h" #include <FairTask.h> // for FairTask, InitStatus +#include <Rtypes.h> // for THashConsistencyHolder, ClassDef +#include <RtypesCore.h> // for Int_t, Bool_t, Option_t, kFALSE, kTRUE + #include <utility> // for pair #include <vector> // for vector -#include "CbmDefs.h" // for ECbmModuleId -#include "CbmMatch.h" -#include "CbmTofDigi.h" - class CbmDigiManager; class CbmMCDataArray; class CbmRichHit; @@ -201,8 +201,8 @@ private: // TOF CbmMCDataArray* fTofPoints = nullptr; //! CbmTofPoint array - const std::vector<CbmTofDigi>* fTofDigis = nullptr; // TOF MC point matches - const std::vector<CbmMatch>* fTofDigiMatch = nullptr; // TOF MC point matches + const std::vector<CbmTofDigi>* fTofDigis = nullptr; // TOF MC point matches + const std::vector<CbmMatch>* fTofDigiMatch = nullptr; // TOF MC point matches TClonesArray* fTofHits = nullptr; //! CbmTofHit array TClonesArray* fTofHitDigiMatches = nullptr; //! Match Hit -> Digi [out] TClonesArray* fTofHitMatches = nullptr; //! Match Hit -> MC point [out] diff --git a/reco/detectors/tof/CbmTofEventClusterizer.cxx b/reco/detectors/tof/CbmTofEventClusterizer.cxx index fdae60d85fff3a1baac39b1539a005dffb6ace7d..f2ac5be4eb3d4d65eb5acfdbed160494d84ce8f2 100644 --- a/reco/detectors/tof/CbmTofEventClusterizer.cxx +++ b/reco/detectors/tof/CbmTofEventClusterizer.cxx @@ -92,9 +92,7 @@ CbmTofEventClusterizer::CbmTofEventClusterizer() // if ( !fInstance ) fInstance = this; } -CbmTofEventClusterizer::CbmTofEventClusterizer(const char* name, - Int_t verbose, - Bool_t writeDataInOut) +CbmTofEventClusterizer::CbmTofEventClusterizer(const char* name, Int_t verbose, Bool_t writeDataInOut) : FairTask(TString(name), verbose) , fGeoHandler(new CbmTofGeoHandler()) , fTofId(NULL) @@ -271,7 +269,8 @@ CbmTofEventClusterizer::CbmTofEventClusterizer(const char* name, , fbSwapChannelSides(kFALSE) , fiOutputTreeEntry(0) , fiFileIndex(0) - , fbAlternativeBranchNames(kFALSE) { + , fbAlternativeBranchNames(kFALSE) +{ if (!fInstance) fInstance = this; } @@ -511,11 +510,10 @@ Bool_t CbmTofEventClusterizer::RegisterInputs() { return kFALSE; } // if( NULL == fTofDigisColl) - fTofDigiPointMatches = fManager->InitObjectAs<std::vector<CbmMatch> const *>("TofDigiMatch"); - if (NULL == fTofDigiPointMatches) - LOG(info) << "No tof digi to point matches in the input file"; + fTofDigiPointMatches = fManager->InitObjectAs<std::vector<CbmMatch> const*>("TofDigiMatch"); + if (NULL == fTofDigiPointMatches) LOG(info) << "No tof digi to point matches in the input file"; else - LOG(info) << "Found tof digi to point matches in the input file"; + LOG(info) << "Found tof digi to point matches in the input file"; fEventsColl = dynamic_cast<TClonesArray*>(fManager->GetObject("Event")); if (NULL == fEventsColl) @@ -589,11 +587,10 @@ Bool_t CbmTofEventClusterizer::RegisterOutputs() { rootMgr->Register( tHitDigiMatchBranchName, "Tof", fTofDigiMatchColl, fbWriteHitsInOut); - if(NULL != fTofDigiPointMatches) { + if (NULL != fTofDigiPointMatches) { fTofDigiPointMatchesOut = new std::vector<CbmMatch>(); rootMgr->RegisterAny("TofCalDigiMatch", fTofDigiPointMatchesOut, fbWriteDigisInOut); } - } else { // CbmEvent - mode //fTofCalDigisCollOut = new TClonesArray("CbmTofDigi"); fTofCalDigiVecOut = new std::vector<CbmTofDigi>(); @@ -606,7 +603,7 @@ Bool_t CbmTofEventClusterizer::RegisterOutputs() { rootMgr->Register( tHitDigiMatchBranchName, "Tof", fTofDigiMatchCollOut, fbWriteHitsInOut); - if(NULL != fTofDigiPointMatches) { + if (NULL != fTofDigiPointMatches) { fTofDigiPointMatchesOut = new std::vector<CbmMatch>(); rootMgr->RegisterAny("TofCalDigiMatch", fTofDigiPointMatchesOut, fbWriteDigisInOut); } @@ -1408,19 +1405,12 @@ Bool_t CbmTofEventClusterizer::CreateHistos() { 0, fDigiBdfPar->GetNbChan(iSmType, iRpcId)); - fhRpcDigiMul[iDetIndx] = new TH2F( - Form("cl_SmT%01d_sm%03d_rpc%03d_DigiMul", iSmType, iSmId, iRpcId), - Form("Digi Multiplicity of Rpc #%03d in Sm %03d of type %d; strip #; " - "digi mul", - iRpcId, - iSmId, - iSmType), - fDigiBdfPar->GetNbChan(iSmType, iRpcId), - 0, - fDigiBdfPar->GetNbChan(iSmType, iRpcId), - 20, - 0, - 20.); + fhRpcDigiMul[iDetIndx] = + new TH2F(Form("cl_SmT%01d_sm%03d_rpc%03d_DigiMul", iSmType, iSmId, iRpcId), + Form("Digi Multiplicity of Rpc #%03d in Sm %03d of type %d; strip #; " + "digi mul", + iRpcId, iSmId, iSmType), + fDigiBdfPar->GetNbChan(iSmType, iRpcId), 0, fDigiBdfPar->GetNbChan(iSmType, iRpcId), 20, 0, 20.); fhRpcDigiStatus[iDetIndx] = new TH2F( Form("cl_SmT%01d_sm%03d_rpc%03d_DigiStatus", iSmType, iSmId, iRpcId), @@ -1436,20 +1426,16 @@ Bool_t CbmTofEventClusterizer::CreateHistos() { 0, 10.); - const Int_t NLogbin=40; - Double_t edge[NLogbin+1]; - for (Int_t i=0; i<NLogbin+1; i++) edge[i]=TMath::Power(2,i); - fhRpcDigiDTLD[iDetIndx] = new TH2F( - Form("cl_SmT%01d_sm%03d_rpc%03d_DigiDTLD", iSmType, iSmId, iRpcId), - Form("Time distance to last digi of Rpc #%03d in Sm %03d of type %d; " - "channel; t_{digi} - t_{previous digi} (ns)", - iRpcId, - iSmId, - iSmType), - fDigiBdfPar->GetNbChan(iSmType, iRpcId) * 2, - 0, - fDigiBdfPar->GetNbChan(iSmType, iRpcId) * 2, - NLogbin, edge); + const Int_t NLogbin = 40; + Double_t edge[NLogbin + 1]; + for (Int_t i = 0; i < NLogbin + 1; i++) + edge[i] = TMath::Power(2, i); + fhRpcDigiDTLD[iDetIndx] = new TH2F(Form("cl_SmT%01d_sm%03d_rpc%03d_DigiDTLD", iSmType, iSmId, iRpcId), + Form("Time distance to last digi of Rpc #%03d in Sm %03d of type %d; " + "channel; t_{digi} - t_{previous digi} (ns)", + iRpcId, iSmId, iSmType), + fDigiBdfPar->GetNbChan(iSmType, iRpcId) * 2, 0, + fDigiBdfPar->GetNbChan(iSmType, iRpcId) * 2, NLogbin, edge); fhRpcDigiDTFD[iDetIndx] = new TH2F( Form("cl_SmT%01d_sm%03d_rpc%03d_DigiDTFD", iSmType, iSmId, iRpcId), @@ -1499,16 +1485,11 @@ Bool_t CbmTofEventClusterizer::CreateHistos() { 0., 3600.); - fhRpcCluRate10s[iDetIndx] = new TH1D( - Form("cl_SmT%01d_sm%03d_rpc%03d_rate10s", iSmType, iSmId, iRpcId), - Form(" Clu rate of Rpc #%03d in Sm %03d of type %d in last " - "10s; Time (s); Counts per 100 #mus", - iRpcId, - iSmId, - iSmType), - 100000, - 0., - 10.); + fhRpcCluRate10s[iDetIndx] = new TH1D(Form("cl_SmT%01d_sm%03d_rpc%03d_rate10s", iSmType, iSmId, iRpcId), + Form(" Clu rate of Rpc #%03d in Sm %03d of type %d in last " + "10s; Time (s); Counts per 100 #mus", + iRpcId, iSmId, iSmType), + 100000, 0., 10.); fhRpcDTLastHits[iDetIndx] = new TH1F( Form("cl_SmT%01d_sm%03d_rpc%03d_DTLastHits", iSmType, iSmId, iRpcId), @@ -2463,7 +2444,7 @@ Bool_t CbmTofEventClusterizer::FillHistos() { StartAnalysisTime = pHit->GetTime(); LOG(info) << "StartAnalysisTime set to " << StartAnalysisTime / 1.E9 << " s. "; - fdStartAna10s=StartAnalysisTime; + fdStartAna10s = StartAnalysisTime; } Int_t iDetId = (pHit->GetAddress() & DetMask); @@ -5540,9 +5521,9 @@ Bool_t CbmTofEventClusterizer::BuildClusters() { LOG(debug) << "Duplicated digi " << fTofDigiVec.size() << " with address 0x" << std::hex << pDigiN->GetAddress(); - if( NULL != fTofDigiPointMatches ) { // copy MC Match Object + if (NULL != fTofDigiPointMatches) { // copy MC Match Object const CbmMatch digiMatch = (CbmMatch) fTofDigiPointMatches->at(iDigInd); - ((std::vector<CbmMatch>*) fTofDigiPointMatches)->push_back((CbmMatch)digiMatch); + ((std::vector<CbmMatch>*) fTofDigiPointMatches)->push_back((CbmMatch) digiMatch); } } } @@ -5596,12 +5577,10 @@ Bool_t CbmTofEventClusterizer::BuildClusters() { size_t iDigiCh = pDigi->GetChannel() * 2 + pDigi->GetSide(); if (iDigiCh < fvTimeLastDigi[iDetIndx].size()) { if (fvTimeLastDigi[iDetIndx][iDigiCh] > 0) { - if (kTRUE) { // fdStartAna10s > 0.) { - //Double_t dTimeAna10s = (pDigi->GetTime() - fdStartAna10s) / 1.E9; - //if (dTimeAna10s < fdSpillDuration) - fhRpcDigiDTLD[iDetIndx]->Fill( - iDigiCh, - (pDigi->GetTime() - fvTimeLastDigi[iDetIndx][iDigiCh]) ); + if (kTRUE) { // fdStartAna10s > 0.) { + //Double_t dTimeAna10s = (pDigi->GetTime() - fdStartAna10s) / 1.E9; + //if (dTimeAna10s < fdSpillDuration) + fhRpcDigiDTLD[iDetIndx]->Fill(iDigiCh, (pDigi->GetTime() - fvTimeLastDigi[iDetIndx][iDigiCh])); } } fvTimeLastDigi[iDetIndx][iDigiCh] = pDigi->GetTime(); @@ -7720,10 +7699,10 @@ Bool_t CbmTofEventClusterizer::CalibRawDigis() { LOG(debug) << "CbmTofEventClusterizer::BuildClusters: Sort " << fTofCalDigiVec->size() << " calibrated digis "; if (iNbTofDigi > 1) { - std::vector<CbmTofDigi>* tTofCalDigiVec=nullptr; - if(NULL != fTofDigiPointMatches) { // temporary copy - tTofCalDigiVec=new std::vector<CbmTofDigi>(*fTofCalDigiVec); - } + std::vector<CbmTofDigi>* tTofCalDigiVec = nullptr; + if (NULL != fTofDigiPointMatches) { // temporary copy + tTofCalDigiVec = new std::vector<CbmTofDigi>(*fTofCalDigiVec); + } // fTofCalDigisColl->Sort(iNbTofDigi); // Time order again, in case modified by the calibration /// Sort the buffers of hits due to the time offsets applied @@ -7743,29 +7722,29 @@ Bool_t CbmTofEventClusterizer::CalibRawDigis() { LOG(warning) << "CbmTofEventClusterizer::BuildClusters: Sorting not successful "; - if(NULL != fTofDigiPointMatches) { // generate updated MC point Match Collection - UInt_t iDigiOrg=0; - LOG(info)<<Form("Fill MC Point Matches for %3lu, %3lu digis ",fTofCalDigiVec->size(),tTofCalDigiVec->size()); - for (UInt_t iDigi=0; iDigi<fTofCalDigiVec->size(); iDigi++){ + if (NULL != fTofDigiPointMatches) { // generate updated MC point Match Collection + UInt_t iDigiOrg = 0; + LOG(info) << Form("Fill MC Point Matches for %3lu, %3lu digis ", fTofCalDigiVec->size(), tTofCalDigiVec->size()); + for (UInt_t iDigi = 0; iDigi < fTofCalDigiVec->size(); iDigi++) { // find original Digi CbmTofDigi* outDigi = &(fTofCalDigiVec->at(iDigi)); - Bool_t bFound=kFALSE; - while ( !bFound ) { - for( ; iDigiOrg<tTofCalDigiVec->size(); iDigiOrg++) { + Bool_t bFound = kFALSE; + while (!bFound) { + for (; iDigiOrg < tTofCalDigiVec->size(); iDigiOrg++) { CbmTofDigi* orgDigi = &(tTofCalDigiVec->at(iDigiOrg)); - if ( outDigi->GetAddress() == orgDigi->GetAddress() ) { + if (outDigi->GetAddress() == orgDigi->GetAddress()) { CbmMatch digiMatch = (CbmMatch) fTofDigiPointMatches->at(iDigiOrg); - ((std::vector<CbmMatch>*) fTofDigiPointMatchesOut)->push_back((CbmMatch)digiMatch); - LOG(DEBUG)<<Form("Copy MC Point Match for 0x%08x, time %8.2f from %3d to %3d ", - orgDigi->GetAddress(),outDigi->GetTime(),iDigiOrg,iDigi); - bFound=kTRUE; + ((std::vector<CbmMatch>*) fTofDigiPointMatchesOut)->push_back((CbmMatch) digiMatch); + LOG(DEBUG) << Form("Copy MC Point Match for 0x%08x, time %8.2f from %3d to %3d ", orgDigi->GetAddress(), + outDigi->GetTime(), iDigiOrg, iDigi); + bFound = kTRUE; break; - } - if ( iDigiOrg == tTofCalDigiVec->size()-1 ) iDigiOrg=0; + } + if (iDigiOrg == tTofCalDigiVec->size() - 1) iDigiOrg = 0; } } } - delete tTofCalDigiVec; // cleanup temporary vector + delete tTofCalDigiVec; // cleanup temporary vector } } diff --git a/reco/detectors/tof/CbmTofEventClusterizer.h b/reco/detectors/tof/CbmTofEventClusterizer.h index be2361f6ce4dd100d4f198820f7817b81b8b241f..d91206f5e38bd1830f78e37fbfd29860c7501269 100644 --- a/reco/detectors/tof/CbmTofEventClusterizer.h +++ b/reco/detectors/tof/CbmTofEventClusterizer.h @@ -25,9 +25,9 @@ class CbmTofDigiBdfPar; class CbmTofCell; class CbmTofFindTracks; class CbmDigiManager; +#include "CbmMatch.h" #include "CbmTofAddress.h" // in cbmdata/tof #include "CbmTofDigi.h" -#include "CbmMatch.h" class TTofCalibData; class TTrbHeader; @@ -254,7 +254,7 @@ private: TTrbHeader* fTrbHeader; // Input variables - const std::vector<CbmMatch>* fTofDigiPointMatches=nullptr; // TOF MC point matches + const std::vector<CbmMatch>* fTofDigiPointMatches = nullptr; // TOF MC point matches //TClonesArray * fTofDigisColl; // TOF Digis std::vector<CbmTofDigi> fTofDigiVec {}; //! TOF Digis const std::vector<CbmTofDigi>* fT0DigiVec = nullptr; //! T0 Digis @@ -264,7 +264,7 @@ private: // Output variables Bool_t fbWriteHitsInOut; Bool_t fbWriteDigisInOut; - std::vector<CbmTofDigi>* fTofCalDigiVec = nullptr; //! // Calibrated TOF Digis + std::vector<CbmTofDigi>* fTofCalDigiVec = nullptr; //! // Calibrated TOF Digis TClonesArray* fTofHitsColl; // TOF hits TClonesArray* fTofDigiMatchColl; // TOF Digi Links //TClonesArray * fTofCalDigisCollOut; // Calibrated TOF Digis @@ -272,7 +272,7 @@ private: nullptr; //! // Calibrated TOF Digis TClonesArray* fTofHitsCollOut; // TOF hits TClonesArray* fTofDigiMatchCollOut; // TOF Digi Links - std::vector<CbmMatch>* fTofDigiPointMatchesOut = nullptr; // TOF Digi MC Point Matches + std::vector<CbmMatch>* fTofDigiPointMatchesOut = nullptr; // TOF Digi MC Point Matches Int_t fiNbHits; // Index of the CbmTofHit TClonesArray // Generic