diff --git a/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.cxx b/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.cxx index 314bc38086bd804d424e3ff62ee540be15290fd1..a6f9be06b7e6610d4a9035ecdb07154d34d41b2c 100644 --- a/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.cxx +++ b/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.cxx @@ -8,13 +8,13 @@ #include "CbmMcbmCheckTimingAlgo.h" #include "CbmDigiManager.h" -#include "CbmStsDigi.h" +#include "CbmFlesHistosTools.h" #include "CbmMuchBeamTimeDigi.h" +#include "CbmPsdDigi.h" #include "CbmRichDigi.h" -#include "CbmTrdDigi.h" +#include "CbmStsDigi.h" #include "CbmTofDigi.h" -#include "CbmPsdDigi.h" -#include "CbmFlesHistosTools.h" +#include "CbmTrdDigi.h" #include "FairLogger.h" #include "FairRootManager.h" @@ -31,18 +31,13 @@ using std::fixed; using std::setprecision; // ---- Default constructor ------------------------------------------- -CbmMcbmCheckTimingAlgo::CbmMcbmCheckTimingAlgo() -{ -} +CbmMcbmCheckTimingAlgo::CbmMcbmCheckTimingAlgo() {} // ---- Destructor ---------------------------------------------------- -CbmMcbmCheckTimingAlgo::~CbmMcbmCheckTimingAlgo() -{ -} +CbmMcbmCheckTimingAlgo::~CbmMcbmCheckTimingAlgo() {} // ---- Initialisation ---------------------------------------------- -void CbmMcbmCheckTimingAlgo::SetParContainers() -{ +void CbmMcbmCheckTimingAlgo::SetParContainers() { // Load all necessary parameter containers from the runtime data base /* FairRunAna* ana = FairRunAna::Instance(); @@ -54,48 +49,48 @@ void CbmMcbmCheckTimingAlgo::SetParContainers() } // ---- Init ---------------------------------------------------------- -Bool_t CbmMcbmCheckTimingAlgo::Init() -{ +Bool_t CbmMcbmCheckTimingAlgo::Init() { /// Check if all required data input storage are present - /// Reference detector - CheckDataPresence( fRefDet ); - /// Checked detectors - for( std::vector< CheckTimingDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) - { - CheckDataPresence( *det ); - } // for( std::vector< CheckTimingDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) + /// Reference detector + CheckDataPresence(fRefDet); + /// Checked detectors + for (std::vector<CheckTimingDetector>::iterator det = fvDets.begin(); + det != fvDets.end(); + ++det) { + CheckDataPresence(*det); + } // for( std::vector< CheckTimingDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) CreateHistos(); return kTRUE; } -void CbmMcbmCheckTimingAlgo::CheckDataPresence( CheckTimingDetector detToCheck ) -{ +void CbmMcbmCheckTimingAlgo::CheckDataPresence(CheckTimingDetector detToCheck) { // Get a handle from the IO manager FairRootManager* ioman = FairRootManager::Instance(); - fDigiMan = CbmDigiManager::Instance(); + fDigiMan = CbmDigiManager::Instance(); fDigiMan->UseMuchBeamTimeDigi(); fDigiMan->Init(); /// Handle special case for T0 as not yet supported in DigiManager - if( ECbmModuleId::kT0 == detToCheck.detId ) - { + if (ECbmModuleId::kT0 == detToCheck.detId) { // Get a pointer to the previous already existing data level - fpT0DigiVec = ioman->InitObjectAs< std::vector< CbmTofDigi > const * >( "T0Digi" ); - if ( ! fpT0DigiVec ) - { - LOG( fatal ) << "No storage with T0 digis found while it should be used. Stopping there!"; - } // if ( ! fpT0DigiVec ) - } // if( ECbmModuleId::kT0 == detToCheck.detId ) - else if ( ! fDigiMan->IsPresent( detToCheck.detId ) ) - { - LOG( fatal ) << "No " << detToCheck.sName << " digis found while it should be used. Stopping there!"; - } // else if ( ! fDigiMan->IsPresent( detToCheck.detId ) ) of if( ECbmModuleId::kT0 == detToCheck.detId ) + fpT0DigiVec = ioman->InitObjectAs<std::vector<CbmTofDigi> const*>("T0Digi"); + if (!fpT0DigiVec) { + LOG(fatal) << "No storage with T0 digis found while it should be used. " + "Stopping there!"; + } // if ( ! fpT0DigiVec ) + } // if( ECbmModuleId::kT0 == detToCheck.detId ) + else if (!fDigiMan->IsPresent(detToCheck.detId)) { + LOG(fatal) << "No " << detToCheck.sName + << " digis found while it should be used. Stopping there!"; + } // else if ( ! fDigiMan->IsPresent( detToCheck.detId ) ) of if( ECbmModuleId::kT0 == detToCheck.detId ) } -void CbmMcbmCheckTimingAlgo::CreateHistos() -{ +void CbmMcbmCheckTimingAlgo::CreateHistos() { + /// FIXME: Disable clang formatting for histograms declaration for now + /* clang-format off */ + /// Logarithmic bining for self time comparison uint32_t iNbBinsLog = 0; /// Parameters are NbDecadesLog, NbStepsDecade, NbSubStepsInStep @@ -172,313 +167,270 @@ void CbmMcbmCheckTimingAlgo::CreateHistos() server->Register("/CheckTiming/SelfDiff", fvhDetSelfDiff[ fvDets.size() ] ); } // if( nullptr != server ) } // if( run ) + + /// FIXME: Re-enable clang formatting after histograms declaration + /* clang-format on */ } // ---- ReInit ------------------------------------------------------- -Bool_t CbmMcbmCheckTimingAlgo::ReInit() -{ - return kTRUE; -} +Bool_t CbmMcbmCheckTimingAlgo::ReInit() { return kTRUE; } // ---- Exec ---------------------------------------------------------- -void CbmMcbmCheckTimingAlgo::ProcessTs() -{ +void CbmMcbmCheckTimingAlgo::ProcessTs() { LOG(debug) << "executing TS " << fuNbTs; - switch( fRefDet.detId ) - { - case ECbmModuleId::kSts: - { - CheckInterSystemOffset< CbmStsDigi >(); + switch (fRefDet.detId) { + case ECbmModuleId::kSts: { + CheckInterSystemOffset<CbmStsDigi>(); break; - } // case ECbmModuleId::kSts: - case ECbmModuleId::kMuch: - { - CheckInterSystemOffset< CbmMuchBeamTimeDigi >(); + } // case ECbmModuleId::kSts: + case ECbmModuleId::kMuch: { + CheckInterSystemOffset<CbmMuchBeamTimeDigi>(); break; - } // case ECbmModuleId::kMuch: - case ECbmModuleId::kTrd: - { - CheckInterSystemOffset< CbmTrdDigi >(); + } // case ECbmModuleId::kMuch: + case ECbmModuleId::kTrd: { + CheckInterSystemOffset<CbmTrdDigi>(); break; - } // case ECbmModuleId::kTrd: - case ECbmModuleId::kTof: - { - CheckInterSystemOffset< CbmTofDigi >(); + } // case ECbmModuleId::kTrd: + case ECbmModuleId::kTof: { + CheckInterSystemOffset<CbmTofDigi>(); break; - } // case ECbmModuleId::kTof: - case ECbmModuleId::kRich: - { - CheckInterSystemOffset< CbmRichDigi >(); + } // case ECbmModuleId::kTof: + case ECbmModuleId::kRich: { + CheckInterSystemOffset<CbmRichDigi>(); break; - } // case ECbmModuleId::kRich: - case ECbmModuleId::kPsd: - { - CheckInterSystemOffset< CbmPsdDigi >(); + } // case ECbmModuleId::kRich: + case ECbmModuleId::kPsd: { + CheckInterSystemOffset<CbmPsdDigi>(); break; - } // case ECbmModuleId::kPsd: - case ECbmModuleId::kT0: - { - CheckInterSystemOffset< CbmTofDigi >(); + } // case ECbmModuleId::kPsd: + case ECbmModuleId::kT0: { + CheckInterSystemOffset<CbmTofDigi>(); break; - } // case ECbmModuleId::kT0: - default: - { - LOG( fatal ) << "CbmMcbm2019TimeWinEventBuilderAlgo::LoopOnSeeds => " - << "Trying to search matches with unsupported det: " - << fRefDet.sName; + } // case ECbmModuleId::kT0: + default: { + LOG(fatal) << "CbmMcbm2019TimeWinEventBuilderAlgo::LoopOnSeeds => " + << "Trying to search matches with unsupported det: " + << fRefDet.sName; break; - } // default: - } // switch( fRefDet ) + } // default: + } // switch( fRefDet ) fuNbTs++; } -template <class DigiRef > -void CbmMcbmCheckTimingAlgo::CheckInterSystemOffset() -{ +template<class DigiRef> +void CbmMcbmCheckTimingAlgo::CheckInterSystemOffset() { UInt_t uNbRefDigis = 0; - switch( fRefDet.detId ) - { - case ECbmModuleId::kNotExist: - { - LOG( fatal ) << "CbmMcbmCheckTimingAlgo::Exec => Unknow reference detector enum! " - << fRefDet.sName; + switch (fRefDet.detId) { + case ECbmModuleId::kNotExist: { + LOG(fatal) + << "CbmMcbmCheckTimingAlgo::Exec => Unknow reference detector enum! " + << fRefDet.sName; break; - } // Digi containers controlled by DigiManager - case ECbmModuleId::kT0: - { + } // Digi containers controlled by DigiManager + case ECbmModuleId::kT0: { uNbRefDigis = fpT0DigiVec->size(); break; - } // case ECbmModuleId::kT0 - default: - { - uNbRefDigis = fDigiMan->GetNofDigis( fRefDet.detId ); + } // case ECbmModuleId::kT0 + default: { + uNbRefDigis = fDigiMan->GetNofDigis(fRefDet.detId); break; - } // default: - } // switch( fRefDet.detId ) + } // default: + } // switch( fRefDet.detId ) /// Re-initialize array references - for( std::vector< CheckTimingDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) - { + for (std::vector<CheckTimingDetector>::iterator det = fvDets.begin(); + det != fvDets.end(); + ++det) { (*det).iPrevRefFirstDigi = 0; - } // for( std::vector< CheckTimingDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) + } // for( std::vector< CheckTimingDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) - for( UInt_t uDigi = 0; uDigi < uNbRefDigis; ++uDigi ) - { - LOG( debug ) << Form( "Checking seed %6u / %6u", uDigi, uNbRefDigis ); + for (UInt_t uDigi = 0; uDigi < uNbRefDigis; ++uDigi) { + LOG(debug) << Form("Checking seed %6u / %6u", uDigi, uNbRefDigis); Double_t dRefTime = 0; Double_t dRefCharge = 0; - if( ECbmModuleId::kT0 == fRefDet.detId ) - { - dRefTime = fpT0DigiVec->at( uDigi ).GetTime(); - dRefCharge = fpT0DigiVec->at( uDigi ).GetCharge(); - } // if( ECbmModuleId::kT0 == fRefDet.detId ) - else - { - dRefTime = fDigiMan->Get< DigiRef >( uDigi )->GetTime(); - dRefCharge = fDigiMan->Get< DigiRef >( uDigi )->GetCharge(); - } // else of if( ECbmModuleId::kT0 == fRefDet.detId ) + if (ECbmModuleId::kT0 == fRefDet.detId) { + dRefTime = fpT0DigiVec->at(uDigi).GetTime(); + dRefCharge = fpT0DigiVec->at(uDigi).GetCharge(); + } // if( ECbmModuleId::kT0 == fRefDet.detId ) + else { + dRefTime = fDigiMan->Get<DigiRef>(uDigi)->GetTime(); + dRefCharge = fDigiMan->Get<DigiRef>(uDigi)->GetCharge(); + } // else of if( ECbmModuleId::kT0 == fRefDet.detId ) /// Fill self time difference histo - fvhDetSelfDiff[ fvDets.size() ]->Fill( dRefTime - fRefDet.dPrevTime ); + fvhDetSelfDiff[fvDets.size()]->Fill(dRefTime - fRefDet.dPrevTime); fRefDet.dPrevTime = dRefTime; /// Charge cut if defined! - if( fRefDet.uChargeCutMin != fRefDet.uChargeCutMax ) - { - if( fRefDet.uChargeCutMin < fRefDet.uChargeCutMax ) - { + if (fRefDet.uChargeCutMin != fRefDet.uChargeCutMax) { + if (fRefDet.uChargeCutMin < fRefDet.uChargeCutMax) { /// Cut charges between Min and Max to reject pulser - if( fRefDet.uChargeCutMin < dRefCharge && dRefCharge < fRefDet.uChargeCutMax ) - { + if (fRefDet.uChargeCutMin < dRefCharge + && dRefCharge < fRefDet.uChargeCutMax) { continue; - } // if( fRefDet.uChargeCutMin < dRefCharge && dRefCharge < fRefDet.uChargeCutMax ) - } // if( fRefDet.uChargeCutMin < fRefDet.uChargeCutMax ) - else - { - /// Select charges between Max and Min to select pulser (Min and Max swapped!!) - if( fRefDet.uChargeCutMin < dRefCharge || dRefCharge < fRefDet.uChargeCutMax ) - { - continue; - } // if( fRefDet.uChargeCutMin < dRefCharge || dRefCharge < fRefDet.uChargeCutMax ) - } // else of if( fRefDet.uChargeCutMin < fRefDet.uChargeCutMax ) - } // if( fRefDet.uChargeCutMin =! fRefDet.uChargeCutMax ) + } // if( fRefDet.uChargeCutMin < dRefCharge && dRefCharge < fRefDet.uChargeCutMax ) + } // if( fRefDet.uChargeCutMin < fRefDet.uChargeCutMax ) + else { + /// Select charges between Max and Min to select pulser (Min and Max swapped!!) + if (fRefDet.uChargeCutMin < dRefCharge + || dRefCharge < fRefDet.uChargeCutMax) { + continue; + } // if( fRefDet.uChargeCutMin < dRefCharge || dRefCharge < fRefDet.uChargeCutMax ) + } // else of if( fRefDet.uChargeCutMin < fRefDet.uChargeCutMax ) + } // if( fRefDet.uChargeCutMin =! fRefDet.uChargeCutMax ) /// Fill time difference for each check detector defined in list - for( UInt_t uDetIdx = 0; uDetIdx < fvDets.size(); ++uDetIdx ) - { - switch( fvDets[ uDetIdx ].detId ) - { - case ECbmModuleId::kSts: - { - FillTimeOffsetHistos< CbmStsDigi >( dRefTime, dRefCharge, uDetIdx ); + for (UInt_t uDetIdx = 0; uDetIdx < fvDets.size(); ++uDetIdx) { + switch (fvDets[uDetIdx].detId) { + case ECbmModuleId::kSts: { + FillTimeOffsetHistos<CbmStsDigi>(dRefTime, dRefCharge, uDetIdx); break; - } // case ECbmModuleId::kSts: - case ECbmModuleId::kMuch: - { - FillTimeOffsetHistos< CbmMuchBeamTimeDigi >( dRefTime, dRefCharge, uDetIdx ); + } // case ECbmModuleId::kSts: + case ECbmModuleId::kMuch: { + FillTimeOffsetHistos<CbmMuchBeamTimeDigi>( + dRefTime, dRefCharge, uDetIdx); break; - } // case ECbmModuleId::kMuch: - case ECbmModuleId::kTrd: - { - FillTimeOffsetHistos< CbmTrdDigi >( dRefTime, dRefCharge, uDetIdx ); + } // case ECbmModuleId::kMuch: + case ECbmModuleId::kTrd: { + FillTimeOffsetHistos<CbmTrdDigi>(dRefTime, dRefCharge, uDetIdx); break; - } // case ECbmModuleId::kTrd: - case ECbmModuleId::kTof: - { - FillTimeOffsetHistos< CbmTofDigi >( dRefTime, dRefCharge, uDetIdx ); + } // case ECbmModuleId::kTrd: + case ECbmModuleId::kTof: { + FillTimeOffsetHistos<CbmTofDigi>(dRefTime, dRefCharge, uDetIdx); break; - } // case ECbmModuleId::kTof: - case ECbmModuleId::kRich: - { - FillTimeOffsetHistos< CbmRichDigi >( dRefTime, dRefCharge, uDetIdx ); + } // case ECbmModuleId::kTof: + case ECbmModuleId::kRich: { + FillTimeOffsetHistos<CbmRichDigi>(dRefTime, dRefCharge, uDetIdx); break; - } // case ECbmModuleId::kRich: - case ECbmModuleId::kPsd: - { - FillTimeOffsetHistos< CbmPsdDigi >( dRefTime, dRefCharge, uDetIdx ); + } // case ECbmModuleId::kRich: + case ECbmModuleId::kPsd: { + FillTimeOffsetHistos<CbmPsdDigi>(dRefTime, dRefCharge, uDetIdx); break; - } // case ECbmModuleId::kPsd: - case ECbmModuleId::kT0: - { - FillTimeOffsetHistos< CbmTofDigi >( dRefTime, dRefCharge, uDetIdx ); + } // case ECbmModuleId::kPsd: + case ECbmModuleId::kT0: { + FillTimeOffsetHistos<CbmTofDigi>(dRefTime, dRefCharge, uDetIdx); break; - } // case ECbmModuleId::kT0: - default: - { - LOG( fatal ) << "CbmMcbmCheckTimingAlgo::CheckInterSystemOffset => " - << "Trying to search matches with unsupported det: " - << fvDets[ uDetIdx ].sName; + } // case ECbmModuleId::kT0: + default: { + LOG(fatal) << "CbmMcbmCheckTimingAlgo::CheckInterSystemOffset => " + << "Trying to search matches with unsupported det: " + << fvDets[uDetIdx].sName; break; - } // default: - } // switch( fvDets[ uDetIdx ].detId ) - } // for( UInt_t uDetIdx = 0; uDetIdx < fvDets.size(); ++uDetIdx ) - } // for( UInt_t uDigi = 0; uDigi < uNbRefDigis; ++uDigi ) + } // default: + } // switch( fvDets[ uDetIdx ].detId ) + } // for( UInt_t uDetIdx = 0; uDetIdx < fvDets.size(); ++uDetIdx ) + } // for( UInt_t uDigi = 0; uDigi < uNbRefDigis; ++uDigi ) } -template <class Digi> -void CbmMcbmCheckTimingAlgo::FillTimeOffsetHistos( const Double_t dRefTime, - const Double_t dRefCharge, - UInt_t uDetIdx ) -{ +template<class Digi> +void CbmMcbmCheckTimingAlgo::FillTimeOffsetHistos(const Double_t dRefTime, + const Double_t dRefCharge, + UInt_t uDetIdx) { UInt_t uNbDigis = 0; - switch( fvDets[ uDetIdx ].detId ) - { - case ECbmModuleId::kNotExist: - { - LOG( fatal ) << "CbmMcbmCheckTimingAlgo::FillTimeOffsetHistos => Unknow detector enum! " - << fRefDet.sName; + switch (fvDets[uDetIdx].detId) { + case ECbmModuleId::kNotExist: { + LOG(fatal) << "CbmMcbmCheckTimingAlgo::FillTimeOffsetHistos => Unknow " + "detector enum! " + << fRefDet.sName; break; - } // Digi containers controlled by DigiManager - case ECbmModuleId::kT0: - { + } // Digi containers controlled by DigiManager + case ECbmModuleId::kT0: { uNbDigis = fpT0DigiVec->size(); break; - } // case ECbmModuleId::kT0 - default: - { - uNbDigis = fDigiMan->GetNofDigis( fvDets[ uDetIdx ].detId ); + } // case ECbmModuleId::kT0 + default: { + uNbDigis = fDigiMan->GetNofDigis(fvDets[uDetIdx].detId); break; - } // default: - } // switch( fRefDet.detId ) + } // default: + } // switch( fRefDet.detId ) - UInt_t uFirstDigiInWin = fvDets[ uDetIdx ].iPrevRefFirstDigi; + UInt_t uFirstDigiInWin = fvDets[uDetIdx].iPrevRefFirstDigi; - for( UInt_t uDigiIdx = fvDets[ uDetIdx ].iPrevRefFirstDigi; uDigiIdx < uNbDigis; ++uDigiIdx ) - { + for (UInt_t uDigiIdx = fvDets[uDetIdx].iPrevRefFirstDigi; uDigiIdx < uNbDigis; + ++uDigiIdx) { Double_t dTime = 0; Double_t dCharge = 0; - if( ECbmModuleId::kT0 == fvDets[ uDetIdx ].detId ) - { - dTime = fpT0DigiVec->at( uDigiIdx ).GetTime(); - dCharge = fpT0DigiVec->at( uDigiIdx ).GetCharge(); - } // if( ECbmModuleId::kT0 == fRefDet.detId ) - else - { - dTime = fDigiMan->Get< Digi >( uDigiIdx )->GetTime() ; - dCharge = fDigiMan->Get< Digi >( uDigiIdx )->GetCharge(); - } // else of if( ECbmModuleId::kT0 == fRefDet.detId ) + if (ECbmModuleId::kT0 == fvDets[uDetIdx].detId) { + dTime = fpT0DigiVec->at(uDigiIdx).GetTime(); + dCharge = fpT0DigiVec->at(uDigiIdx).GetCharge(); + } // if( ECbmModuleId::kT0 == fRefDet.detId ) + else { + dTime = fDigiMan->Get<Digi>(uDigiIdx)->GetTime(); + dCharge = fDigiMan->Get<Digi>(uDigiIdx)->GetCharge(); + } // else of if( ECbmModuleId::kT0 == fRefDet.detId ) /// Fill self correlation histo while avoiding double counting due to /// the "smart looping" - if( fvDets[ uDetIdx ].dPrevTime <= dTime ) - { - fvhDetSelfDiff[ uDetIdx ]->Fill( dTime - fvDets[ uDetIdx ].dPrevTime ); - fvDets[ uDetIdx ].dPrevTime = dTime; - } // if( fvDets[ uDetIdx ].dPrevTime < dTime ) + if (fvDets[uDetIdx].dPrevTime <= dTime) { + fvhDetSelfDiff[uDetIdx]->Fill(dTime - fvDets[uDetIdx].dPrevTime); + fvDets[uDetIdx].dPrevTime = dTime; + } // if( fvDets[ uDetIdx ].dPrevTime < dTime ) Double_t dDiffTime = dTime - dRefTime; - if( dDiffTime < fvDets[ uDetIdx ].dTimeRangeBeg ) - { - ++ uFirstDigiInWin; // Update Index of first digi in Win to next digi - continue; // not yet in interesting range - } // if (diffTime > offsetRange) - if( fvDets[ uDetIdx ].dTimeRangeEnd < dDiffTime ) - { + if (dDiffTime < fvDets[uDetIdx].dTimeRangeBeg) { + ++uFirstDigiInWin; // Update Index of first digi in Win to next digi + continue; // not yet in interesting range + } // if (diffTime > offsetRange) + if (fvDets[uDetIdx].dTimeRangeEnd < dDiffTime) { /// already past interesting range break; - } // if( fvDets[ uDetIdx ].dTimeRangeEnd < dDiffTime ) + } // if( fvDets[ uDetIdx ].dTimeRangeEnd < dDiffTime ) /// Charge cut if defined! - if( fvDets[ uDetIdx ].uChargeCutMin != fvDets[ uDetIdx ].uChargeCutMax ) - { - if( fvDets[ uDetIdx ].uChargeCutMin < fvDets[ uDetIdx ].uChargeCutMax ) - { + if (fvDets[uDetIdx].uChargeCutMin != fvDets[uDetIdx].uChargeCutMax) { + if (fvDets[uDetIdx].uChargeCutMin < fvDets[uDetIdx].uChargeCutMax) { /// Cut charges between Min and Max to reject pulser - if( fvDets[ uDetIdx ].uChargeCutMin < dCharge && dCharge < fvDets[ uDetIdx ].uChargeCutMax ) - { + if (fvDets[uDetIdx].uChargeCutMin < dCharge + && dCharge < fvDets[uDetIdx].uChargeCutMax) { + continue; + } // if( fvDets[ uDetIdx ].uChargeCutMin < dCharge && dCharge < fvDets[ uDetIdx ].uChargeCutMax ) + } // if( fvDets[ uDetIdx ].uChargeCutMin < fvDets[ uDetIdx ].uChargeCutMax ) + else { + /// Select charges between Max and Min to select pulser (Min and Max swapped!!) + if (fvDets[uDetIdx].uChargeCutMin < dCharge + || dCharge < fvDets[uDetIdx].uChargeCutMax) { continue; - } // if( fvDets[ uDetIdx ].uChargeCutMin < dCharge && dCharge < fvDets[ uDetIdx ].uChargeCutMax ) - } // if( fvDets[ uDetIdx ].uChargeCutMin < fvDets[ uDetIdx ].uChargeCutMax ) - else - { - /// Select charges between Max and Min to select pulser (Min and Max swapped!!) - if( fvDets[ uDetIdx ].uChargeCutMin < dCharge || dCharge < fvDets[ uDetIdx ].uChargeCutMax ) - { - continue; - } // if( fvDets[ uDetIdx ].uChargeCutMin < dCharge || dCharge < fvDets[ uDetIdx ].uChargeCutMax ) - } // else of if( fvDets[ uDetIdx ].uChargeCutMin < fvDets[ uDetIdx ].uChargeCutMax ) - } // if( fvDets[ uDetIdx ].uChargeCutMin != fvDets[ uDetIdx ].uChargeCutMax ) + } // if( fvDets[ uDetIdx ].uChargeCutMin < dCharge || dCharge < fvDets[ uDetIdx ].uChargeCutMax ) + } // else of if( fvDets[ uDetIdx ].uChargeCutMin < fvDets[ uDetIdx ].uChargeCutMax ) + } // if( fvDets[ uDetIdx ].uChargeCutMin != fvDets[ uDetIdx ].uChargeCutMax ) /// Fill histos - fvhDetToRefDiff[ uDetIdx ]->Fill( dDiffTime ); - fvhDetToRefDiffRefCharge[ uDetIdx ]->Fill( dRefCharge, dDiffTime ); - fvhDetToRefDiffDetCharge[ uDetIdx ]->Fill( dCharge, dDiffTime ); - fvhDetToRefDiffEvo[ uDetIdx ]->Fill( fuNbTs, dDiffTime ); - fvhDetToRefDiffEvoLong[ uDetIdx ]->Fill( fuNbTs, dDiffTime ); - } // for( UInt_t uDigiIdx = fvDets[ uDetIdx ].iPrevRefFirstDigi; uDigiIdx < uNbDigis; ++uDigiIdx ) + fvhDetToRefDiff[uDetIdx]->Fill(dDiffTime); + fvhDetToRefDiffRefCharge[uDetIdx]->Fill(dRefCharge, dDiffTime); + fvhDetToRefDiffDetCharge[uDetIdx]->Fill(dCharge, dDiffTime); + fvhDetToRefDiffEvo[uDetIdx]->Fill(fuNbTs, dDiffTime); + fvhDetToRefDiffEvoLong[uDetIdx]->Fill(fuNbTs, dDiffTime); + } // for( UInt_t uDigiIdx = fvDets[ uDetIdx ].iPrevRefFirstDigi; uDigiIdx < uNbDigis; ++uDigiIdx ) /// Store earliest possible starting index for next reference digi (time sorted!) - fvDets[ uDetIdx ].iPrevRefFirstDigi = uFirstDigiInWin; + fvDets[uDetIdx].iPrevRefFirstDigi = uFirstDigiInWin; } // ---- Finish -------------------------------------------------------- -void CbmMcbmCheckTimingAlgo::Finish() -{ - LOG(info) << Form( "Checked %6d Timeslices", fuNbTs); +void CbmMcbmCheckTimingAlgo::Finish() { + LOG(info) << Form("Checked %6d Timeslices", fuNbTs); } -void CbmMcbmCheckTimingAlgo::WriteHistos() -{ - TFile* old = gFile; - TFile* outfile = TFile::Open(fOutFileName,"RECREATE"); - - for( UInt_t uDetIdx = 0; uDetIdx < fvDets.size(); ++uDetIdx ) - { - LOG( info ) << "Saving histos for " << fvDets[ uDetIdx ].sName; - fvhDetSelfDiff[ uDetIdx ]->Write(); - fvhDetToRefDiff[ uDetIdx ]->Write(); - fvhDetToRefDiffRefCharge[ uDetIdx ]->Write(); - fvhDetToRefDiffDetCharge[ uDetIdx ]->Write(); - fvhDetToRefDiffEvo[ uDetIdx ]->Write(); - fvhDetToRefDiffEvoLong[ uDetIdx ]->Write(); - LOG( info ) << "Saved histos for " << fvDets[ uDetIdx ].sName; - } // for( std::vector< CheckTimingDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) +void CbmMcbmCheckTimingAlgo::WriteHistos() { + TFile* old = gFile; + TFile* outfile = TFile::Open(fOutFileName, "RECREATE"); + + for (UInt_t uDetIdx = 0; uDetIdx < fvDets.size(); ++uDetIdx) { + LOG(info) << "Saving histos for " << fvDets[uDetIdx].sName; + fvhDetSelfDiff[uDetIdx]->Write(); + fvhDetToRefDiff[uDetIdx]->Write(); + fvhDetToRefDiffRefCharge[uDetIdx]->Write(); + fvhDetToRefDiffDetCharge[uDetIdx]->Write(); + fvhDetToRefDiffEvo[uDetIdx]->Write(); + fvhDetToRefDiffEvoLong[uDetIdx]->Write(); + LOG(info) << "Saved histos for " << fvDets[uDetIdx].sName; + } // for( std::vector< CheckTimingDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) /// Register the histo for reference detector digi to digi time difference - fvhDetSelfDiff[ fvDets.size() ]->Write(); + fvhDetSelfDiff[fvDets.size()]->Write(); outfile->Close(); delete outfile; @@ -487,11 +439,13 @@ void CbmMcbmCheckTimingAlgo::WriteHistos() } // ---- Finish -------------------------------------------------------- -void CbmMcbmCheckTimingAlgo::SetReferenceDetector( ECbmModuleId refDetIn, std::string sNameIn, - Double_t dTimeRangeBegIn, Double_t dTimeRangeEndIn, - UInt_t uRangeNbBinsIn, - UInt_t uChargeCutMinIn, UInt_t uChargeCutMaxIn ) -{ +void CbmMcbmCheckTimingAlgo::SetReferenceDetector(ECbmModuleId refDetIn, + std::string sNameIn, + Double_t dTimeRangeBegIn, + Double_t dTimeRangeEndIn, + UInt_t uRangeNbBinsIn, + UInt_t uChargeCutMinIn, + UInt_t uChargeCutMaxIn) { fRefDet.detId = refDetIn; fRefDet.sName = sNameIn; fRefDet.dTimeRangeBeg = dTimeRangeBegIn; @@ -500,17 +454,19 @@ void CbmMcbmCheckTimingAlgo::SetReferenceDetector( ECbmModuleId refDetIn, std::s fRefDet.uChargeCutMin = uChargeCutMinIn; fRefDet.uChargeCutMax = uChargeCutMaxIn; } -void CbmMcbmCheckTimingAlgo::AddCheckDetector( ECbmModuleId detIn, std::string sNameIn, - Double_t dTimeRangeBegIn, Double_t dTimeRangeEndIn, - UInt_t uRangeNbBinsIn, - UInt_t uChargeCutMinIn, UInt_t uChargeCutMaxIn ) -{ - std::vector< CheckTimingDetector >::iterator det; - for( det = fvDets.begin(); det != fvDets.end(); ++det ) - { - if( (*det).detId == detIn ) - { - LOG( warning ) << "CbmMcbmCheckTimingAlgo::AddCheckDetector => Detector already in list, this call will only update the parameters!"; +void CbmMcbmCheckTimingAlgo::AddCheckDetector(ECbmModuleId detIn, + std::string sNameIn, + Double_t dTimeRangeBegIn, + Double_t dTimeRangeEndIn, + UInt_t uRangeNbBinsIn, + UInt_t uChargeCutMinIn, + UInt_t uChargeCutMaxIn) { + std::vector<CheckTimingDetector>::iterator det; + for (det = fvDets.begin(); det != fvDets.end(); ++det) { + if ((*det).detId == detIn) { + LOG(warning) + << "CbmMcbmCheckTimingAlgo::AddCheckDetector => Detector already in " + "list, this call will only update the parameters!"; (*det).dTimeRangeBeg = dTimeRangeBegIn; (*det).dTimeRangeEnd = dTimeRangeEndIn; @@ -519,12 +475,11 @@ void CbmMcbmCheckTimingAlgo::AddCheckDetector( ECbmModuleId detIn, std::string s (*det).uChargeCutMax = uChargeCutMaxIn; break; - } // if( (*det).detId == detIn ) - } // for( det = fvDets.begin(); det != fvDets.end(); ++det ) + } // if( (*det).detId == detIn ) + } // for( det = fvDets.begin(); det != fvDets.end(); ++det ) - if( fvDets.end() == det ) - { - fvDets.push_back( CheckTimingDetector( detIn, sNameIn ) ); + if (fvDets.end() == det) { + fvDets.push_back(CheckTimingDetector(detIn, sNameIn)); det = fvDets.end(); det--; (*det).dTimeRangeBeg = dTimeRangeBegIn; @@ -532,19 +487,18 @@ void CbmMcbmCheckTimingAlgo::AddCheckDetector( ECbmModuleId detIn, std::string s (*det).uRangeNbBins = uRangeNbBinsIn; (*det).uChargeCutMin = uChargeCutMinIn; (*det).uChargeCutMax = uChargeCutMaxIn; - } // if( fvDets.end() == det ) + } // if( fvDets.end() == det ) } -void CbmMcbmCheckTimingAlgo::RemoveCheckDetector( ECbmModuleId detIn ) -{ - for( std::vector< CheckTimingDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) - { - if( (*det).detId == detIn ) - { - fvDets.erase( det ); +void CbmMcbmCheckTimingAlgo::RemoveCheckDetector(ECbmModuleId detIn) { + for (std::vector<CheckTimingDetector>::iterator det = fvDets.begin(); + det != fvDets.end(); + ++det) { + if ((*det).detId == detIn) { + fvDets.erase(det); break; - } // if( (*det).detId == detIn ) - } // for( std::vector< CheckTimingDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) + } // if( (*det).detId == detIn ) + } // for( std::vector< CheckTimingDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det ) } ClassImp(CbmMcbmCheckTimingAlgo) diff --git a/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.h b/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.h index 3b970766b5965ff229edafe5ea188f6c6a890366..07f6b5f0f155ba680f398d2b3ab0a891f90d9ded 100644 --- a/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.h +++ b/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.h @@ -8,120 +8,131 @@ #ifndef CBMMCBMCHECKTIMINGALGO_H #define CBMMCBMCHECKTIMINGALGO_H -#include "TString.h" #include "CbmModuleList.h" -#include <vector> #include "CbmTofDigi.h" +#include "TString.h" +#include <vector> class TH1; class TH2; class CbmDigiManager; -class CheckTimingDetector -{ - public: - CheckTimingDetector() {;} - CheckTimingDetector( ECbmModuleId detIdIn, std::string sNameIn ) { detId = detIdIn; sName = sNameIn; } - - /// Settings - ECbmModuleId detId = ECbmModuleId::kNotExist; - std::string sName = "Invalid"; - Double_t dTimeRangeBeg = -1000.0; - Double_t dTimeRangeEnd = 1000.0; - UInt_t uRangeNbBins = 320; - UInt_t uChargeCutMin = 0; /// Charge cut used for example to reject/select pulser, no effect if equal, select if min < max, reject if max < min - UInt_t uChargeCutMax = 0; /// Charge cut used for example to reject/select pulser, no effect if equal, select if min < max, reject if max < min - - /// Book-keeping variables - Double_t dPrevTime = 0.; - Int_t iPrevRefFirstDigi = 0; +class CheckTimingDetector { +public: + CheckTimingDetector() { ; } + CheckTimingDetector(ECbmModuleId detIdIn, std::string sNameIn) { + detId = detIdIn; + sName = sNameIn; + } + + /// Settings + ECbmModuleId detId = ECbmModuleId::kNotExist; + std::string sName = "Invalid"; + Double_t dTimeRangeBeg = -1000.0; + Double_t dTimeRangeEnd = 1000.0; + UInt_t uRangeNbBins = 320; + UInt_t uChargeCutMin = + 0; /// Charge cut used for example to reject/select pulser, no effect if equal, select if min < max, reject if max < min + UInt_t uChargeCutMax = + 0; /// Charge cut used for example to reject/select pulser, no effect if equal, select if min < max, reject if max < min + + /// Book-keeping variables + Double_t dPrevTime = 0.; + Int_t iPrevRefFirstDigi = 0; }; -class CbmMcbmCheckTimingAlgo -{ - public: - - CbmMcbmCheckTimingAlgo(); +class CbmMcbmCheckTimingAlgo { +public: + CbmMcbmCheckTimingAlgo(); - CbmMcbmCheckTimingAlgo(const CbmMcbmCheckTimingAlgo&) = delete; - CbmMcbmCheckTimingAlgo operator=(const CbmMcbmCheckTimingAlgo&) = delete; + CbmMcbmCheckTimingAlgo(const CbmMcbmCheckTimingAlgo&) = delete; + CbmMcbmCheckTimingAlgo operator=(const CbmMcbmCheckTimingAlgo&) = delete; - /** Constructor with parameters (Optional) **/ - // CbmMcbmCheckTimingAlgo(Int_t verbose); + /** Constructor with parameters (Optional) **/ + // CbmMcbmCheckTimingAlgo(Int_t verbose); - /** Destructor **/ - ~CbmMcbmCheckTimingAlgo(); + /** Destructor **/ + ~CbmMcbmCheckTimingAlgo(); - /** Initiliazation of task at the beginning of a run **/ - Bool_t Init(); + /** Initiliazation of task at the beginning of a run **/ + Bool_t Init(); - /** ReInitiliazation of task when the runID changes **/ - Bool_t ReInit(); + /** ReInitiliazation of task when the runID changes **/ + Bool_t ReInit(); - /** Executed for each event. **/ - void ProcessTs(); + /** Executed for each event. **/ + void ProcessTs(); - /** Load the parameter container from the runtime database **/ - void SetParContainers(); + /** Load the parameter container from the runtime database **/ + void SetParContainers(); - /** Finish task called at the end of the run **/ - void Finish(); + /** Finish task called at the end of the run **/ + void Finish(); - inline void SetOutFilename( TString sNameIn ) { fOutFileName = sNameIn; } - void WriteHistos(); + inline void SetOutFilename(TString sNameIn) { fOutFileName = sNameIn; } + void WriteHistos(); - void SetReferenceDetector( ECbmModuleId refDetIn, std::string sNameIn, - Double_t dTimeRangeBegIn = -1000.0, Double_t dTimeRangeEndIn = 1000.0, - UInt_t uRangeNbBinsIn = 320, - UInt_t uChargeCutMinIn = 0, UInt_t uChargeCutMaxIn = 0 ); - void AddCheckDetector( ECbmModuleId detIn, std::string sNameIn, - Double_t dTimeRangeBegIn = -1000.0, Double_t dTimeRangeEndIn = 1000.0, - UInt_t uRangeNbBinsIn = 320, - UInt_t uChargeCutMinIn = 0, UInt_t uChargeCutMaxIn = 0 ); - void RemoveCheckDetector( ECbmModuleId detIn ); + void SetReferenceDetector(ECbmModuleId refDetIn, + std::string sNameIn, + Double_t dTimeRangeBegIn = -1000.0, + Double_t dTimeRangeEndIn = 1000.0, + UInt_t uRangeNbBinsIn = 320, + UInt_t uChargeCutMinIn = 0, + UInt_t uChargeCutMaxIn = 0); + void AddCheckDetector(ECbmModuleId detIn, + std::string sNameIn, + Double_t dTimeRangeBegIn = -1000.0, + Double_t dTimeRangeEndIn = 1000.0, + UInt_t uRangeNbBinsIn = 320, + UInt_t uChargeCutMinIn = 0, + UInt_t uChargeCutMaxIn = 0); + void RemoveCheckDetector(ECbmModuleId detIn); - private: - void CheckDataPresence( CheckTimingDetector detToCheck ); - void CreateHistos(); +private: + void CheckDataPresence(CheckTimingDetector detToCheck); + void CreateHistos(); - template <class DigiRef> void CheckInterSystemOffset(); - template <class Digi> void FillTimeOffsetHistos( const Double_t dRefTime, - const Double_t dRefCharge, - UInt_t uDetIdx ); + template<class DigiRef> + void CheckInterSystemOffset(); + template<class Digi> + void FillTimeOffsetHistos(const Double_t dRefTime, + const Double_t dRefCharge, + UInt_t uDetIdx); - /** Input array from previous already existing data level **/ - CbmDigiManager* fDigiMan = nullptr; //! + /** Input array from previous already existing data level **/ + CbmDigiManager* fDigiMan = nullptr; //! - /** T0 is not included in CbmDigiManager, so add it explicitly here **/ - const std::vector< CbmTofDigi > * fpT0DigiVec = nullptr; //! + /** T0 is not included in CbmDigiManager, so add it explicitly here **/ + const std::vector<CbmTofDigi>* fpT0DigiVec = nullptr; //! - // - UInt_t fuNbTs = 0; + // + UInt_t fuNbTs = 0; - CheckTimingDetector fRefDet{ CheckTimingDetector( ECbmModuleId::kT0, "T0" ) }; - std::vector< CheckTimingDetector > fvDets{ CheckTimingDetector( ECbmModuleId::kSts, "Sts" ), - CheckTimingDetector( ECbmModuleId::kMuch, "Much" ), - CheckTimingDetector( ECbmModuleId::kTrd, "Trd" ), - CheckTimingDetector( ECbmModuleId::kTof, "Tof" ), - CheckTimingDetector( ECbmModuleId::kRich, "Rich" ), - CheckTimingDetector( ECbmModuleId::kPsd, "Psd" ) }; + CheckTimingDetector fRefDet {CheckTimingDetector(ECbmModuleId::kT0, "T0")}; + std::vector<CheckTimingDetector> fvDets { + CheckTimingDetector(ECbmModuleId::kSts, "Sts"), + CheckTimingDetector(ECbmModuleId::kMuch, "Much"), + CheckTimingDetector(ECbmModuleId::kTrd, "Trd"), + CheckTimingDetector(ECbmModuleId::kTof, "Tof"), + CheckTimingDetector(ECbmModuleId::kRich, "Rich"), + CheckTimingDetector(ECbmModuleId::kPsd, "Psd")}; - /// vectors storing histograms for each detector under investigation - std::vector< TH1 * > fvhDetSelfDiff = {}; - std::vector< TH1 * > fvhDetToRefDiff = {}; - std::vector< TH2 * > fvhDetToRefDiffRefCharge = {}; - std::vector< TH2 * > fvhDetToRefDiffDetCharge = {}; - std::vector< TH2 * > fvhDetToRefDiffEvo = {}; - std::vector< TH2 * > fvhDetToRefDiffEvoLong = {}; + /// vectors storing histograms for each detector under investigation + std::vector<TH1*> fvhDetSelfDiff = {}; + std::vector<TH1*> fvhDetToRefDiff = {}; + std::vector<TH2*> fvhDetToRefDiffRefCharge = {}; + std::vector<TH2*> fvhDetToRefDiffDetCharge = {}; + std::vector<TH2*> fvhDetToRefDiffEvo = {}; + std::vector<TH2*> fvhDetToRefDiffEvoLong = {}; - /** Name of the histogram output file **/ - TString fOutFileName = "data/HistosCheckTiming.root"; + /** Name of the histogram output file **/ + TString fOutFileName = "data/HistosCheckTiming.root"; - ClassDef(CbmMcbmCheckTimingAlgo,1); + ClassDef(CbmMcbmCheckTimingAlgo, 1); }; #endif diff --git a/fles/mcbm2018/tasks/CbmMcbmCheckTimingTask.cxx b/fles/mcbm2018/tasks/CbmMcbmCheckTimingTask.cxx index a0e6adae3fe6d2d0b6c2e5da9c875a65e8be5c81..cfb880bbbab5ad9c892f869db97012fe28593055 100644 --- a/fles/mcbm2018/tasks/CbmMcbmCheckTimingTask.cxx +++ b/fles/mcbm2018/tasks/CbmMcbmCheckTimingTask.cxx @@ -13,8 +13,8 @@ #include "FairLogger.h" /// FAIRSOFT headers (geant, boost, ...) -#include "TH2.h" #include "TH1.h" +#include "TH2.h" #include "THttpServer.h" #include <TFile.h> @@ -22,42 +22,33 @@ // ---- Default constructor ------------------------------------------- CbmMcbmCheckTimingTask::CbmMcbmCheckTimingTask() - : FairTask("CbmMcbmCheckTimingTask") -{ - /// Create Algo. To be made generic/switchable when more event building algo are available! - fpAlgo = new CbmMcbmCheckTimingAlgo(); + : FairTask("CbmMcbmCheckTimingTask") { + /// Create Algo. To be made generic/switchable when more event building algo are available! + fpAlgo = new CbmMcbmCheckTimingAlgo(); } // ---- Destructor ---------------------------------------------------- -CbmMcbmCheckTimingTask::~CbmMcbmCheckTimingTask() -{ - -} +CbmMcbmCheckTimingTask::~CbmMcbmCheckTimingTask() {} // ---- Initialisation ---------------------------------------------- -void CbmMcbmCheckTimingTask::SetParContainers() -{ - /// Nothing to do +void CbmMcbmCheckTimingTask::SetParContainers() { + /// Nothing to do } // ---- Init ---------------------------------------------------------- -InitStatus CbmMcbmCheckTimingTask::Init() -{ +InitStatus CbmMcbmCheckTimingTask::Init() { /// Call Algo Init method - if( kTRUE == fpAlgo->Init() ) + if (kTRUE == fpAlgo->Init()) return kSUCCESS; - else return kFATAL; + else + return kFATAL; } // ---- ReInit ------------------------------------------------------- -InitStatus CbmMcbmCheckTimingTask::ReInit() -{ - return kSUCCESS; -} +InitStatus CbmMcbmCheckTimingTask::ReInit() { return kSUCCESS; } // ---- Exec ---------------------------------------------------------- -void CbmMcbmCheckTimingTask::Exec(Option_t* /*option*/) -{ +void CbmMcbmCheckTimingTask::Exec(Option_t* /*option*/) { LOG(debug2) << "CbmMcbmCheckTimingTask::Exec => Starting sequence"; /// Call Algo ProcessTs method fpAlgo->ProcessTs(); @@ -67,18 +58,16 @@ void CbmMcbmCheckTimingTask::Exec(Option_t* /*option*/) // ---- Finish -------------------------------------------------------- -void CbmMcbmCheckTimingTask::Finish() -{ +void CbmMcbmCheckTimingTask::Finish() { SaveHistos(); /// Call Algo finish method fpAlgo->Finish(); } //---------------------------------------------------------------------- -void CbmMcbmCheckTimingTask::SaveHistos() -{ - fpAlgo->WriteHistos(); -/* +void CbmMcbmCheckTimingTask::SaveHistos() { + fpAlgo->WriteHistos(); + /* /// Obtain vector of pointers on each histo from the algo (+ optionally desired folder) std::vector< std::pair< TNamed *, std::string > > vHistos = fpAlgo->GetHistoVector(); @@ -112,36 +101,44 @@ void CbmMcbmCheckTimingTask::SaveHistos() */ } //---------------------------------------------------------------------- -void CbmMcbmCheckTimingTask::SetOutFilename( TString sNameIn ) -{ - fsOutFileName = sNameIn; - fpAlgo->SetOutFilename( fsOutFileName ); +void CbmMcbmCheckTimingTask::SetOutFilename(TString sNameIn) { + fsOutFileName = sNameIn; + fpAlgo->SetOutFilename(fsOutFileName); } //---------------------------------------------------------------------- -void CbmMcbmCheckTimingTask::SetReferenceDetector( ECbmModuleId refDetIn, std::string sNameIn, - Double_t dTimeRangeBegIn, Double_t dTimeRangeEndIn, - UInt_t uRangeNbBinsIn, - UInt_t uChargeCutMinIn, UInt_t uChargeCutMaxIn ) -{ - fpAlgo->SetReferenceDetector( refDetIn, sNameIn, - dTimeRangeBegIn, dTimeRangeEndIn, - uRangeNbBinsIn, - uChargeCutMinIn, uChargeCutMaxIn ); +void CbmMcbmCheckTimingTask::SetReferenceDetector(ECbmModuleId refDetIn, + std::string sNameIn, + Double_t dTimeRangeBegIn, + Double_t dTimeRangeEndIn, + UInt_t uRangeNbBinsIn, + UInt_t uChargeCutMinIn, + UInt_t uChargeCutMaxIn) { + fpAlgo->SetReferenceDetector(refDetIn, + sNameIn, + dTimeRangeBegIn, + dTimeRangeEndIn, + uRangeNbBinsIn, + uChargeCutMinIn, + uChargeCutMaxIn); } -void CbmMcbmCheckTimingTask::AddCheckDetector( ECbmModuleId detIn, std::string sNameIn, - Double_t dTimeRangeBegIn, Double_t dTimeRangeEndIn, - UInt_t uRangeNbBinsIn, - UInt_t uChargeCutMinIn, UInt_t uChargeCutMaxIn ) -{ - fpAlgo->AddCheckDetector( detIn, sNameIn, - dTimeRangeBegIn, dTimeRangeEndIn, - uRangeNbBinsIn, - uChargeCutMinIn, uChargeCutMaxIn ); +void CbmMcbmCheckTimingTask::AddCheckDetector(ECbmModuleId detIn, + std::string sNameIn, + Double_t dTimeRangeBegIn, + Double_t dTimeRangeEndIn, + UInt_t uRangeNbBinsIn, + UInt_t uChargeCutMinIn, + UInt_t uChargeCutMaxIn) { + fpAlgo->AddCheckDetector(detIn, + sNameIn, + dTimeRangeBegIn, + dTimeRangeEndIn, + uRangeNbBinsIn, + uChargeCutMinIn, + uChargeCutMaxIn); } -void CbmMcbmCheckTimingTask::RemoveCheckDetector( ECbmModuleId detIn ) -{ - fpAlgo->RemoveCheckDetector( detIn ); +void CbmMcbmCheckTimingTask::RemoveCheckDetector(ECbmModuleId detIn) { + fpAlgo->RemoveCheckDetector(detIn); } //---------------------------------------------------------------------- diff --git a/fles/mcbm2018/tasks/CbmMcbmCheckTimingTask.h b/fles/mcbm2018/tasks/CbmMcbmCheckTimingTask.h index e94523e68d2e6f643c08702f9adaf6ada5fb095f..768f1484ac4981e51758aa04ae0a93482f04c8e6 100644 --- a/fles/mcbm2018/tasks/CbmMcbmCheckTimingTask.h +++ b/fles/mcbm2018/tasks/CbmMcbmCheckTimingTask.h @@ -20,61 +20,65 @@ class TClonesArray; -class CbmMcbmCheckTimingTask : public FairTask -{ - public: +class CbmMcbmCheckTimingTask : public FairTask { +public: + /** Default constructor **/ + CbmMcbmCheckTimingTask(); - /** Default constructor **/ - CbmMcbmCheckTimingTask(); + CbmMcbmCheckTimingTask(const CbmMcbmCheckTimingTask&) = delete; + CbmMcbmCheckTimingTask operator=(const CbmMcbmCheckTimingTask&) = delete; - CbmMcbmCheckTimingTask(const CbmMcbmCheckTimingTask&) = delete; - CbmMcbmCheckTimingTask operator=(const CbmMcbmCheckTimingTask&) = delete; + /** Constructor with parameters (Optional) **/ + // CbmMcbmCheckTimingTask(Int_t verbose); - /** Constructor with parameters (Optional) **/ - // CbmMcbmCheckTimingTask(Int_t verbose); + /** Destructor **/ + ~CbmMcbmCheckTimingTask(); - /** Destructor **/ - ~CbmMcbmCheckTimingTask(); + /** Initiliazation of task at the beginning of a run **/ + virtual InitStatus Init(); - /** Initiliazation of task at the beginning of a run **/ - virtual InitStatus Init(); + /** ReInitiliazation of task when the runID changes **/ + virtual InitStatus ReInit(); - /** ReInitiliazation of task when the runID changes **/ - virtual InitStatus ReInit(); + /** Executed for each event. **/ + virtual void Exec(Option_t*); - /** Executed for each event. **/ - virtual void Exec(Option_t*); + /** Load the parameter container from the runtime database **/ + virtual void SetParContainers(); - /** Load the parameter container from the runtime database **/ - virtual void SetParContainers(); + /** Finish task called at the end of the run **/ + virtual void Finish(); - /** Finish task called at the end of the run **/ - virtual void Finish(); + void SetOutFilename(TString sNameIn); - void SetOutFilename( TString sNameIn ); + void SetReferenceDetector(ECbmModuleId refDetIn, + std::string sNameIn, + Double_t dTimeRangeBegIn = -1000.0, + Double_t dTimeRangeEndIn = 1000.0, + UInt_t uRangeNbBinsIn = 320, + UInt_t uChargeCutMinIn = 0, + UInt_t uChargeCutMaxIn = 0); + void AddCheckDetector(ECbmModuleId detIn, + std::string sNameIn, + Double_t dTimeRangeBegIn = -1000.0, + Double_t dTimeRangeEndIn = 1000.0, + UInt_t uRangeNbBinsIn = 320, + UInt_t uChargeCutMinIn = 0, + UInt_t uChargeCutMaxIn = 0); + void RemoveCheckDetector(ECbmModuleId detIn); - void SetReferenceDetector( ECbmModuleId refDetIn, std::string sNameIn, - Double_t dTimeRangeBegIn = -1000.0, Double_t dTimeRangeEndIn = 1000.0, - UInt_t uRangeNbBinsIn = 320, - UInt_t uChargeCutMinIn = 0, UInt_t uChargeCutMaxIn = 0 ); - void AddCheckDetector( ECbmModuleId detIn, std::string sNameIn, - Double_t dTimeRangeBegIn = -1000.0, Double_t dTimeRangeEndIn = 1000.0, - UInt_t uRangeNbBinsIn = 320, - UInt_t uChargeCutMinIn = 0, UInt_t uChargeCutMaxIn = 0 ); - void RemoveCheckDetector( ECbmModuleId detIn ); +private: + void SaveHistos(); - private: - void SaveHistos(); + CbmMcbmCheckTimingAlgo* fpAlgo = nullptr; - CbmMcbmCheckTimingAlgo * fpAlgo = nullptr; + /** Name of the histogram output file **/ + TString fsOutFileName = "data/HistosCheckTiming.root"; - /** Name of the histogram output file **/ - TString fsOutFileName = "data/HistosCheckTiming.root"; - - ClassDef(CbmMcbmCheckTimingTask,1); + ClassDef(CbmMcbmCheckTimingTask, 1); }; -#endif // CBMMCBM2019TIMEWINEVENTBUILDERTASK_H +#endif // CBMMCBM2019TIMEWINEVENTBUILDERTASK_H diff --git a/macro/beamtime/mcbm2020/check_timing_any.C b/macro/beamtime/mcbm2020/check_timing_any.C index e00a2d28682b0147f615edea23f5737c99e1d039..17885b382e691215089352956aa4c2df01e23ed9 100644 --- a/macro/beamtime/mcbm2020/check_timing_any.C +++ b/macro/beamtime/mcbm2020/check_timing_any.C @@ -1,7 +1,7 @@ void check_timing_any(TString fileName, - UInt_t uRunId = 0, - Int_t nEvents = 0, - TString outDir = "data/") { + UInt_t uRunId = 0, + Int_t nEvents = 0, + TString outDir = "data/") { // ======================================================================== // Adjust this part according to your requirements @@ -33,23 +33,23 @@ void check_timing_any(TString fileName, CbmMcbmCheckTimingTask* timeChecker = new CbmMcbmCheckTimingTask(); /// Default is using T0 as reference - /// With Pulser rejection -/* + /// With Pulser rejection + /* timeChecker->SetReferenceDetector( ECbmModuleId::kT0, "T0", -1000., 1000., 320., 182, 190 ); */ - /// With pulser selection -/* + /// With pulser selection + /* timeChecker->SetReferenceDetector( ECbmModuleId::kT0, "T0", -1000., 1000., 320., 190, 182 ); */ /// Here swapping with MUCH - timeChecker->SetReferenceDetector( ECbmModuleId::kMuch, "Much" ); - timeChecker->RemoveCheckDetector( ECbmModuleId::kMuch ); - timeChecker->AddCheckDetector( ECbmModuleId::kT0, "T0" ); + timeChecker->SetReferenceDetector(ECbmModuleId::kMuch, "Much"); + timeChecker->RemoveCheckDetector(ECbmModuleId::kMuch); + timeChecker->AddCheckDetector(ECbmModuleId::kT0, "T0"); if (0 < uRunId) timeChecker->SetOutFilename( diff --git a/macro/beamtime/mcbm2020/unpack_check_timing_any_mcbm.C b/macro/beamtime/mcbm2020/unpack_check_timing_any_mcbm.C index 17f2d9b50f45a5d646c6142393fbd82ead1229b8..7c9685e7a43c0b4317f928cf8d33a26b36b397bf 100644 --- a/macro/beamtime/mcbm2020/unpack_check_timing_any_mcbm.C +++ b/macro/beamtime/mcbm2020/unpack_check_timing_any_mcbm.C @@ -11,9 +11,9 @@ FairRunOnline* run = NULL; void unpack_check_timing_any_mcbm(TString inFile = "", - UInt_t uRunId = 0, - UInt_t nrEvents = 0, - TString outDir = "data") { + UInt_t uRunId = 0, + UInt_t nrEvents = 0, + TString outDir = "data") { if (uRunId < 692 && 0 != uRunId) return kFALSE; TString srcDir = gSystem->Getenv("VMCWORKDIR"); @@ -58,7 +58,7 @@ void unpack_check_timing_any_mcbm(TString inFile = "", } // } - TString paramFileTof = paramDir + "mTofPar.par"; + TString paramFileTof = paramDir + "mTofPar.par"; if (uRunId >= 708 && uRunId < 754) paramFileTof = paramDir + "mTofPar_2Stack.par"; else if (uRunId >= 754) @@ -121,8 +121,8 @@ void unpack_check_timing_any_mcbm(TString inFile = "", if (811 <= uRunId) unpacker_much->SetBinningFwFlag(kTRUE); /// Try to cut Noise and reduce walk effect in STS and MUCH -// unpacker_sts->SetAdcCut(20); -// unpacker_much->SetAdcCut(20); + // unpacker_sts->SetAdcCut(20); + // unpacker_much->SetAdcCut(20); unpacker_tof->SetSeparateArrayT0(); @@ -513,19 +513,18 @@ void unpack_check_timing_any_mcbm(TString inFile = "", CbmMcbmCheckTimingTask* timeChecker = new CbmMcbmCheckTimingTask(); /// Default is using T0 as reference - /// With Pulser rejection - timeChecker->SetReferenceDetector( ECbmModuleId::kT0, "T0", - -1000., 1000., 320., - 182, 190 ); + /// With Pulser rejection + timeChecker->SetReferenceDetector( + ECbmModuleId::kT0, "T0", -1000., 1000., 320., 182, 190); - /// With pulser selection -/* + /// With pulser selection + /* timeChecker->SetReferenceDetector( ECbmModuleId::kT0, "T0", -1000., 1000., 320., 190, 182 ); */ /// Here swapping with MUCH -/* + /* timeChecker->SetReferenceDetector( ECbmModuleId::kMuch, "Much" ); timeChecker->RemoveCheckDetector( ECbmModuleId::kMuch ); timeChecker->AddCheckDetector( ECbmModuleId::kT0, "T0" ); @@ -550,8 +549,7 @@ void unpack_check_timing_any_mcbm(TString inFile = "", // --- Start run TStopwatch timer; timer.Start(); - std::cout << ">>> unpack_check_timing_any_mcbm: Starting run..." - << std::endl; + std::cout << ">>> unpack_check_timing_any_mcbm: Starting run..." << std::endl; if (0 == nrEvents) { run->Run(nEvents, 0); // run until end of input file } else {