diff --git a/reco/detectors/tof/CbmTofEventClusterizer.cxx b/reco/detectors/tof/CbmTofEventClusterizer.cxx index 911f6ccf8c791ee820dfdf5ff164e533d888415c..95fb8734317c5a6d9793f2b4c4b9457783088742 100644 --- a/reco/detectors/tof/CbmTofEventClusterizer.cxx +++ b/reco/detectors/tof/CbmTofEventClusterizer.cxx @@ -304,7 +304,7 @@ CbmTofEventClusterizer::CbmTofEventClusterizer(const char* name, Int_t verbose, , fdEdgeLen(3.) , fdEdgeTbias(-0.3) , fdEdgeFrange(0.4) - , fdModifySigvel(1.0) + , fdModifySigvel(0.) , fdEvent(0) , fdStartAnalysisTime(0.) , fbSwapChannelSides(kFALSE) @@ -326,7 +326,7 @@ CbmTofEventClusterizer::~CbmTofEventClusterizer() // FairTasks inherited functions InitStatus CbmTofEventClusterizer::Init() { - LOG(info) << "CbmTofEventClusterizer initializing... expect Digis in ns units! "; + LOG(info) << "CbmTofEventClusterizer initializing... expect Digis in ns units!"; if (kFALSE == RegisterInputs()) return kFATAL; @@ -340,7 +340,7 @@ InitStatus CbmTofEventClusterizer::Init() if (kFALSE == CreateHistos()) return kFATAL; - if ((fCalMode % 10 > 7 && fDutId > -1) || (fCalMode > 99 && fDutId < 0)) { + if ((fCalMode > -1 && ((fCalMode % 10 > 7 && fDutId > -1))) || (fCalMode > 99 && fDutId < 0)) { if (fiBeamRefType > -1) fiBeamRefAddr = CbmTofAddress::GetUniqueAddress(fiBeamRefSm, fiBeamRefDet, 0, 0, fiBeamRefType); LOG(info) << "Initialize Calibrator for Clusterizer "; @@ -400,11 +400,6 @@ void CbmTofEventClusterizer::Exec(Option_t* option) if (fTofCalDigiVecOut) fTofCalDigiVecOut->clear(); if (fEventsColl) { - if (NULL != fTsHeader) - LOG(info) << "New Ts " << iNbTs << ", size " << fEventsColl->GetSize() << " at " << fTsHeader->GetTsStartTime() - << " with " << fEventsColl->GetEntriesFast() << " events, " << fDigiMan->GetNofDigis(ECbmModuleId::kTof) - << " TOF digis + " << fDigiMan->GetNofDigis(ECbmModuleId::kT0) << " T0 digis "; - TStopwatch timerTs; timerTs.Start(); @@ -420,13 +415,19 @@ void CbmTofEventClusterizer::Exec(Option_t* option) //fTofDigiMatchCollOut->Clear("C"); // not sufficient, memory leak for (Int_t iEvent = 0; iEvent < fEventsColl->GetEntriesFast(); iEvent++) { CbmEvent* tEvent = dynamic_cast<CbmEvent*>(fEventsColl->At(iEvent)); + if (nullptr != fTsHeader && iEvent == 0) { + LOG(info) << "New Ts " << iNbTs << ", size " << fEventsColl->GetSize() << " at " << fTsHeader->GetTsStartTime() + << " with " << fEventsColl->GetEntriesFast() << " events, " + << " Ev0 " << (int32_t) tEvent->GetNumber() << ", " << fDigiMan->GetNofDigis(ECbmModuleId::kTof) + << " TOF digis + " << fDigiMan->GetNofDigis(ECbmModuleId::kT0) << " T0 digis "; + } fTofDigiVec.clear(); //if (fTofDigisColl) fTofDigisColl->Clear("C"); //Int_t iNbDigis=0; (VF) not used LOG(debug) << "TS event " << iEvent << " with " << tEvent->GetNofData(ECbmDataType::kT0Digi) << " T0 and " << tEvent->GetNofData(ECbmDataType::kTofDigi) << " Tof digis "; - for (Int_t iDigi = 0; iDigi < tEvent->GetNofData(ECbmDataType::kT0Digi); iDigi++) { + for (auto iDigi = 0; iDigi < (int) tEvent->GetNofData(ECbmDataType::kT0Digi); iDigi++) { Int_t iDigiIndex = static_cast<Int_t>(tEvent->GetIndex(ECbmDataType::kT0Digi, iDigi)); CbmTofDigi tDigi(fDigiMan->Get<CbmBmonDigi>(iDigiIndex)); if (tDigi.GetType() != 5) { @@ -438,7 +439,7 @@ void CbmTofEventClusterizer::Exec(Option_t* option) } fTofDigiVec.push_back(tDigi); } - for (Int_t iDigi = 0; iDigi < tEvent->GetNofData(ECbmDataType::kTofDigi); iDigi++) { + for (auto iDigi = 0; iDigi < (int) tEvent->GetNofData(ECbmDataType::kTofDigi); iDigi++) { Int_t iDigiIndex = static_cast<Int_t>(tEvent->GetIndex(ECbmDataType::kTofDigi, iDigi)); const CbmTofDigi* tDigi = fDigiMan->Get<CbmTofDigi>(iDigiIndex); fTofDigiVec.push_back(CbmTofDigi(*tDigi)); @@ -496,9 +497,9 @@ void CbmTofEventClusterizer::Exec(Option_t* option) LOG(debug) << "Call Calibrator with fiHitStart = " << fiHitStart << ", entries " << fTofHitsCollOut->GetEntriesFast(); CbmTofHit* pHit = (CbmTofHit*) fTofHitsCollOut->At(fiHitStart); // use most early hit as reference - if (fCalMode < 100) fTofCalibrator->FillCalHist(pHit, fCalMode, tEvent); + if (fCalMode < 100 && fCalMode > -1) fTofCalibrator->FillCalHist(pHit, fCalMode, tEvent); else { - if (fCalMode < 1000) { + if (fCalMode < 1000 && fCalMode > -1) { CbmTofHit* pRef = NULL; fTofCalibrator->FillHitCalHist(pRef, fCalMode, tEvent, fTofHitsCollOut); } @@ -535,7 +536,7 @@ void CbmTofEventClusterizer::Exec(Option_t* option) logOut << std::setw(20) << std::left << GetName() << " ["; logOut << std::fixed << std::setw(8) << std::setprecision(1) << std::right << timerTs.RealTime() * 1000. << " ms] "; logOut << "TS " << iNbTs; - logOut << ", events " << fEventsColl->GetEntriesFast(); + logOut << ", NofEvents " << fEventsColl->GetEntriesFast(); logOut << ", hits " << fiHitStart << ", time/1k-hit " << std::setprecision(4) << timerTs.RealTime() * 1e6 / fiHitStart << " [ms]"; LOG(info) << logOut.str(); @@ -639,7 +640,7 @@ void CbmTofEventClusterizer::Finish() LOG(info) << "====================================="; if (fdEvent < 100) return; // don't save histos with insufficient statistics - + if (fCalMode < 0) return; if (fCalMode % 10 < 8 && fDutId > -1) { WriteHistos(); } else { if ((fCalMode % 10 > 7 && fDutId > -1) || (fCalMode > 99 && fDutId < 0)) { @@ -925,7 +926,7 @@ Bool_t CbmTofEventClusterizer::InitCalibParameter() TFile* oldFile = gFile; TDirectory* oldDir = gDirectory; - if (0 < fCalMode) { + if (kTRUE) { LOG(info) << "CbmTofEventClusterizer::InitCalibParameter: read histos from " << "file " << fCalParFileName; @@ -975,7 +976,12 @@ Bool_t CbmTofEventClusterizer::InitCalibParameter() LOG(warn) << "Fix parameter value of signal velocity TSR " << iSmType << iSm << iRpc << ": " << Vscal; Vscal = 1.2; } - Vscal *= fdModifySigvel; //1.03; // testing the effect of wrong signal velocity, FIXME + //Vscal *= fdModifySigvel; //1.03; // testing the effect of wrong signal velocity, FIXME + + int iUCellId = CbmTofAddress::GetUniqueAddress(iSm, 0, 0, 0, iSmType); + fChannelInfo = fDigiPar->GetCell(iUCellId); + Vscal = (fChannelInfo->GetSizey() + fdModifySigvel) / fChannelInfo->GetSizey(); + fDigiBdfPar->SetSigVel(iSmType, iSm, iRpc, fDigiBdfPar->GetSigVel(iSmType, iSm, iRpc) * Vscal); LOG(info) << "Modify " << iSmType << iSm << iRpc << " Svel by " << Vscal << " to " << fDigiBdfPar->GetSigVel(iSmType, iSm, iRpc); @@ -2019,7 +2025,7 @@ Bool_t CbmTofEventClusterizer::FillHistos(CbmEvent* tEvent) Int_t iNbTofHits = fTofHitsColl->GetEntriesFast(); CbmTofHit* pHit = NULL; if (NULL == tEvent) { - if (fCalMode % 10 == 9) { + if (fCalMode > -1 && fCalMode % 10 == 9) { if (iNbTofHits > 0) { // outsource all calibration actions //pHit = (CbmTofHit*) fTofHitsColl->At(0); // use most early hit as reference fTofCalibrator->FillCalHist(pHit, fCalMode, tEvent);