diff --git a/core/data/CbmDefs.h b/core/data/CbmDefs.h index c09e0d805381ef12acc3404d702fa23f97418a85..20121e14916e1a871584c13e0020a7b8e85c92e1 100644 --- a/core/data/CbmDefs.h +++ b/core/data/CbmDefs.h @@ -120,7 +120,9 @@ enum class ECbmDataType kTofDigi, kTofCalDigi, kTofHit, - kTofTrack, // TOF + kTofTrack, + kTofUHit, + kTofTracklet, // TOF kPsdPoint = ToIntegralType(ECbmModuleId::kPsd) * 100, kPsdDigi, kPsdHit, // PSD diff --git a/reco/detectors/tof/CbmTofExtendTracks.cxx b/reco/detectors/tof/CbmTofExtendTracks.cxx index 810693da3ac2b901bc7a166ae33ce5f7df0efd39..07b9d5b69f1606b5ab0bd9ad3c7d13825a3dbbff 100644 --- a/reco/detectors/tof/CbmTofExtendTracks.cxx +++ b/reco/detectors/tof/CbmTofExtendTracks.cxx @@ -214,8 +214,8 @@ InitStatus CbmTofExtendTracks::Init() LOG(info) << "-I- CbmTofExtendTracks::Init: TofCalHit array!"; } - // Get TOF Track Array - fTofTrackArrayIn = (TClonesArray*) ioman->GetObject("TofTracks"); + // Get TOF Tracklet Array + fTofTrackArrayIn = (TClonesArray*) ioman->GetObject("TofTracklets"); if (!fTofTrackArrayIn) { LOG(fatal) << "-W- CbmTofExtendTracks::Init: No TofTrack array!"; return kERROR; @@ -965,7 +965,7 @@ void CbmTofExtendTracks::ExecExtend(Option_t* /*opt*/, CbmEvent* tEvent) iNbStsStations, iNbMuchStations, iNbRichStations, - tEvent->GetNofData(ECbmDataType::kTofTrack)); + tEvent->GetNofData(ECbmDataType::kTofTracklet)); LOG(info) << "Station Multipliplicities:"; for(UInt_t iSt=0; iSt<fvAllHitPointer.size();iSt++) @@ -973,13 +973,13 @@ void CbmTofExtendTracks::ExecExtend(Option_t* /*opt*/, CbmEvent* tEvent) */ // loop on tof tracklet - size_t iNTrks = tEvent->GetNofData(ECbmDataType::kTofTrack); + size_t iNTrks = tEvent->GetNofData(ECbmDataType::kTofTracklet); fvTrkCalHits.clear(); fvTrkCalHits.resize(iNTrks); fvTrkPar.clear(); for (size_t iTr = 0; iTr < iNTrks; iTr++) { - Int_t iTrkIndex = static_cast<Int_t>(tEvent->GetIndex(ECbmDataType::kTofTrack, iTr)); + Int_t iTrkIndex = static_cast<Int_t>(tEvent->GetIndex(ECbmDataType::kTofTracklet, iTr)); CbmTofTracklet* pTrk = dynamic_cast<CbmTofTracklet*>(fTofTrackArrayIn->At(iTrkIndex)); //CbmTofTrackletParam* pTrkPar=new CbmTofTrackletParam(*pTrk->GetTrackParameter()); //fvTrkPar.push_back(pTrkPar); @@ -1223,23 +1223,24 @@ void CbmTofExtendTracks::FillHistograms(CbmEvent* tEvent) } // limit track multiplicity - Int_t NTrkTof = (Int_t) tEvent->GetNofData(ECbmDataType::kTofTrack); + Int_t NTrkTof = static_cast<Int_t>(tEvent->GetNofData(ECbmDataType::kTofTracklet)); if (NTrkTof > fiNTrkTofMax) return; Int_t iLev = 0; // - fhMulCorTrkTof->Fill(tEvent->GetNofData(ECbmDataType::kTofTrack), tEvent->GetNofData(ECbmDataType::kTofHit)); + fhMulCorTrkTof->Fill(tEvent->GetNofData(ECbmDataType::kTofTracklet), tEvent->GetNofData(ECbmDataType::kTofHit)); - fhMulCorTrkSts->Fill(tEvent->GetNofData(ECbmDataType::kTofTrack), tEvent->GetNofData(ECbmDataType::kStsHit)); + fhMulCorTrkSts->Fill(tEvent->GetNofData(ECbmDataType::kTofTracklet), tEvent->GetNofData(ECbmDataType::kStsHit)); - fhMulCorTrkMuch->Fill(tEvent->GetNofData(ECbmDataType::kTofTrack), tEvent->GetNofData(ECbmDataType::kMuchPixelHit)); + fhMulCorTrkMuch->Fill(tEvent->GetNofData(ECbmDataType::kTofTracklet), + tEvent->GetNofData(ECbmDataType::kMuchPixelHit)); - fhMulCorTrkRich->Fill(tEvent->GetNofData(ECbmDataType::kTofTrack), tEvent->GetNofData(ECbmDataType::kRichHit)); + fhMulCorTrkRich->Fill(tEvent->GetNofData(ECbmDataType::kTofTracklet), tEvent->GetNofData(ECbmDataType::kRichHit)); // correlation with TOF Tracklets for (Int_t iTr = 0; iTr < NTrkTof; iTr++) { - Int_t iTrkIndex = static_cast<Int_t>(tEvent->GetIndex(ECbmDataType::kTofTrack, iTr)); + Int_t iTrkIndex = static_cast<Int_t>(tEvent->GetIndex(ECbmDataType::kTofTracklet, iTr)); CbmTofTracklet* tTrk = dynamic_cast<CbmTofTracklet*>(fTofTrackArrayIn->At(iTrkIndex)); // tTrk->PrintInfo(); @@ -1452,7 +1453,7 @@ void CbmTofExtendTracks::FillHistograms(CbmEvent* tEvent) } // pulls against original tracklets - Int_t iTrkInd = static_cast<Int_t>(tEvent->GetIndex(ECbmDataType::kTofTrack, iTr)); + Int_t iTrkInd = static_cast<Int_t>(tEvent->GetIndex(ECbmDataType::kTofTracklet, iTr)); CbmTofTracklet* pTrk = dynamic_cast<CbmTofTracklet*>(fTofTrackArrayIn->At(iTrkInd)); dDX = tHit->GetX() - pTrk->GetFitX(tHit->GetZ()); dDY = tHit->GetY() - pTrk->GetFitY(tHit->GetZ()); diff --git a/reco/detectors/tof/CbmTofFindTracks.cxx b/reco/detectors/tof/CbmTofFindTracks.cxx index cb9e7158bc661a3d8c33bbad0253a11e7bb7474e..37dfa0815e7f37f200a8f10ae758cfc396a2bc9b 100644 --- a/reco/detectors/tof/CbmTofFindTracks.cxx +++ b/reco/detectors/tof/CbmTofFindTracks.cxx @@ -54,8 +54,6 @@ #include <iostream> #include <vector> -using std::cout; -using std::endl; using std::vector; //const Int_t DetMask = 0x3FFFFF; // check for consistency with v14a geometry @@ -87,6 +85,7 @@ CbmTofFindTracks::CbmTofFindTracks(const char* name, const char* /*title*/, CbmT , fTofHitArray(NULL) , fTofHitIndexArray() , fTofHitArrayOut(NULL) + , fTofUHitArrayOut(NULL) , fTrackArray(NULL) , fTrackArrayOut(nullptr) , fTofUHitArray(NULL) @@ -240,24 +239,23 @@ InitStatus CbmTofFindTracks::Init() // Check for Track finder if (!fFinder) { - cout << "-W- CbmTofFindTracks::Init: No track finder selected!" << endl; + LOG(warning) << "-W- CbmTofFindTracks::Init: No track finder selected!"; return kERROR; } // Check for Track fitter if (!fFitter) { - cout << "-W- CbmTofFindTracks::Init: No track fitter selected!" << endl; + LOG(warning) << "-W- CbmTofFindTracks::Init: No track fitter selected!"; return kERROR; } - cout << Form("-D- CbmTofFindTracks::Init: track fitter at 0x%p", fFitter) << endl; + LOG(info) << Form("-D- CbmTofFindTracks::Init: track fitter at 0x%p", fFitter); fTrackletTools = new CbmTofTrackletTools(); // initialize tools // Get and check FairRootManager FairRootManager* ioman = FairRootManager::Instance(); if (!ioman) { - cout << "-E- CbmTofFindTracks::Init: " - << "RootManager not instantiated!" << endl; + LOG(error) << "-E- CbmTofFindTracks::Init: RootManager not instantiated!"; return kFATAL; } @@ -288,16 +286,19 @@ InitStatus CbmTofFindTracks::Init() fTrackArray = new TClonesArray("CbmTofTracklet", 100); fTofUHitArray = new TClonesArray("CbmTofHit", 100); //fTrackArray->BypassStreamer(kTRUE); //needed? - //ioman->Register("TofTracks", "TOF", fTrackArray, kFALSE); //FIXME + //ioman->Register("TofTracklets", "TOF", fTrackArray, kFALSE); //FIXME if (fEventsColl) { - fTrackArrayOut = new TClonesArray("CbmTofTracklet", 100); - fTofHitArrayOut = new TClonesArray("CbmTofHit", 100); - ioman->Register("TofTracks", "TOF", fTrackArrayOut, IsOutputBranchPersistent("TofTracks")); + fTrackArrayOut = new TClonesArray("CbmTofTracklet", 100); + fTofHitArrayOut = new TClonesArray("CbmTofHit", 100); + fTofUHitArrayOut = new TClonesArray("CbmTofHit", 100); + ioman->Register("TofTracklets", "TOF", fTrackArrayOut, IsOutputBranchPersistent("TofTracklets")); ioman->Register("TofCalHit", "TOF", fTofHitArrayOut, IsOutputBranchPersistent("TofCalHit")); + LOG(info) << "-W- TofTracklets array registered in EventsColl mode"; + ioman->Register("TofUHit", "TOF", fTofUHitArrayOut, IsOutputBranchPersistent("TofTracklets")); } else { - ioman->Register("TofTracks", "TOF", fTrackArray, IsOutputBranchPersistent("TofTracks")); - cout << "-I- CbmTofFindTracks::Init:TofTrack array registered" << endl; + ioman->Register("TofTracklets", "TOF", fTrackArray, IsOutputBranchPersistent("TofTracklets")); + LOG(info) << "-W- CbmTofFindTracks::Init:TofTracklets array registered"; LOG(info) << "Register TofCalHit at " << fTofHitArray; ioman->Register("TofCalHit", "TOF", fTofHitArray, IsOutputBranchPersistent("TofCalHit")); @@ -1151,6 +1152,7 @@ void CbmTofFindTracks::Exec(Option_t* opt) Int_t iNbCalHits = 0; fTrackArrayOut->Delete(); //Clear("C"); fTofHitArrayOut->Delete(); //Clear("C"); + fTofUHitArrayOut->Delete(); //Clear("C"); LOG(info) << "Process TS " << iTS << " with " << fEventsColl->GetEntriesFast() << " events"; iTS++; for (Int_t iEvent = 0; iEvent < fEventsColl->GetEntriesFast(); iEvent++) { @@ -1171,6 +1173,8 @@ void CbmTofFindTracks::Exec(Option_t* opt) ExecFind(opt, tEvent); // --- In event-by-event mode: copy tracks to output array and register them to event + LOG(info) << "Register " << fTrackArray->GetEntriesFast() << " tracks for event " << iEvent + << ", starting at ind " << iNbTrks; for (Int_t iTrk = 0; iTrk < fTrackArray->GetEntriesFast(); iTrk++) { CbmTofTracklet* pTrk = (CbmTofTracklet*) fTrackArray->At(iTrk); new ((*fTrackArrayOut)[iNbTrks]) CbmTofTracklet(*pTrk); @@ -1179,7 +1183,7 @@ void CbmTofFindTracks::Exec(Option_t* opt) { pTrk->SetTofHitIndex(iHit, fTofHitIndexArray[pTrk->GetTofHitIndex(iHit)]); } - tEvent->AddData(ECbmDataType::kTofTrack, iNbTrks); + tEvent->AddData(ECbmDataType::kTofTracklet, iNbTrks); iNbTrks++; } // Update TofHitArrayIn @@ -1187,6 +1191,14 @@ void CbmTofFindTracks::Exec(Option_t* opt) CbmTofHit* tHit = dynamic_cast<CbmTofHit*>(fTofHitArray->At(iHit)); new ((*fTofHitArrayOut)[iNbCalHits++]) CbmTofHit(*tHit); } + // Add TofUHitArrayOut + int iNbUHits = fTofUHitArrayOut->GetEntries(); + for (Int_t iHit = 0; iHit < fTofUHitArray->GetEntriesFast(); iHit++) { + CbmTofHit* tHit = dynamic_cast<CbmTofHit*>(fTofUHitArray->At(iHit)); + new ((*fTofUHitArrayOut)[iNbUHits++]) CbmTofHit(*tHit); + tEvent->AddData(ECbmDataType::kTofUHit, iNbUHits); + } + fTrackArray->Delete(); //fTrackArray->Clear(); } @@ -1296,7 +1308,7 @@ void CbmTofFindTracks::ExecFind(Option_t* /*opt*/, CbmEvent* tEvent) /* call moved to Clusterizer if (fiCalOpt > 99) { //LOG(info) << "Call TofCalibrator with pBeam "<<pBeamHit; - if (NULL != pBeamHit) fTofCalibrator->FillHitCalHist(pBeamHit, fiCalOpt, tEvent, fTofHitArrayIn); + if (NULL != pBeamHit) fTofCalibrator->FillHitCalHist(pBeamHit, fiCalOpt, tEvent, fTofHitArrayIn); } */ @@ -1337,7 +1349,7 @@ void CbmTofFindTracks::ExecFind(Option_t* /*opt*/, CbmEvent* tEvent) // ----- Public method Finish ------------------------------------------ void CbmTofFindTracks::Finish() { - if (fiEvent < 1000) return; // preserve calibration histos in event display + if (fiEvent < 2) return; // preserve calibration histos in event display FairLogger::GetLogger()->SetLogScreenLevel("info"); if (fiCalOpt > 0) fTofCalibrator->UpdateCalHist(fiCalOpt); if (fbDoHistos) WriteHistos(); @@ -1429,13 +1441,13 @@ void CbmTofFindTracks::CreateHistograms() fhTrklXY0_2 = new TH2F(Form("hTrklXY0_2"), Form("Tracklet XY at z=0 for hmulmax-2 ; x (cm); y (cm)"), 100, -X0MAX, X0MAX, 100, -X0MAX, X0MAX); - fhTrklX0_TX = new TH2F(Form("hTrklX0_TX"), Form("Tracklet X0 vs TX at z=0 for hmulmax ; tx (); x0 (cm)"), 100, 0., + fhTrklX0_TX = new TH2F(Form("hTrklX0_TX"), Form("Tracklet X0 vs TX at z=0 for hmulmax ; tx (); x0 (cm)"), 100, -0.4, 0.4, 100, -X0MAX, X0MAX); - fhTrklY0_TX = new TH2F(Form("hTrklY0_TX"), Form("Tracklet Y0 vs TX at z=0 for hmulmax ; tx (); y0 (cm)"), 100, 0., + fhTrklY0_TX = new TH2F(Form("hTrklY0_TX"), Form("Tracklet Y0 vs TX at z=0 for hmulmax ; tx (); y0 (cm)"), 100, -0.4, 0.4, 100, -X0MAX, X0MAX); - fhTrklX0_TY = new TH2F(Form("hTrklX0_TY"), Form("Tracklet X0 vs TY at z=0 for hmulmax ; ty (); x0 (cm)"), 100, 0., + fhTrklX0_TY = new TH2F(Form("hTrklX0_TY"), Form("Tracklet X0 vs TY at z=0 for hmulmax ; ty (); x0 (cm)"), 100, -0.4, 0.4, 100, -X0MAX, X0MAX); - fhTrklY0_TY = new TH2F(Form("hTrklY0_TY"), Form("Tracklet Y0 vs TY at z=0 for hmulmax ; ty (); y0 (cm)"), 100, 0., + fhTrklY0_TY = new TH2F(Form("hTrklY0_TY"), Form("Tracklet Y0 vs TY at z=0 for hmulmax ; ty (); y0 (cm)"), 100, -0.4, 0.4, 100, -X0MAX, X0MAX); Double_t DT0MAX = 5.; @@ -1737,8 +1749,8 @@ void CbmTofFindTracks::FillHistograms(CbmEvent* tEvent) CbmTofHit* pHit = (CbmTofHit*) fTofHitArray->At(iH); //if (0 == fMapStationRpcId[iSt]) pHit->SetTime(pTrk->GetT0()); // set time of fake hit, abandoned /* - cout << " -D- CbmTofFindTracks::FillHistograms: "<< iSt <<", " - <<fMapStationRpcId[iSt]<<", "<< iH <<", "<< iH0 <<", "<<pHit->ToString() << endl; + LOG(info) << " -D- CbmTofFindTracks::FillHistograms: "<< iSt <<", " + <<fMapStationRpcId[iSt]<<", "<< iH <<", "<< iH0 <<", "<<pHit->ToString(); */ Double_t dDZ = pHit->GetZ() - tPar->GetZ(); // z- Distance to reference point Double_t dDX = pHit->GetX() - pTrk->GetFitX(pHit->GetZ()); // - tPar->GetX() - tPar->GetTx()*dDZ; @@ -2095,7 +2107,7 @@ void CbmTofFindTracks::FillHistograms(CbmEvent* tEvent) CbmTofTracklet* pTrk1 = (CbmTofTracklet*) fTrackArray->At(iTrk1); if (NULL == pTrk1) continue; if (pTrk1->GetNofHits() > fMinNofHits) { // for further analysis request min # of matched hits - //cout << " -D- iT "<<iTrk<<", iT1 "<<iTrk1<<endl; + //LOG(info) << " -D- iT "<<iTrk<<", iT1 "<<iTrk1; fhTrklT0Mul->Fill(iTMul, pTrk->GetFitT(0.) - pTrk1->GetFitT(0.)); } } @@ -2114,7 +2126,7 @@ void CbmTofFindTracks::FillHistograms(CbmEvent* tEvent) // Int_t iSmType = CbmTofAddress::GetSmType( pHit->GetAddress() & DetMask ); (FU) not used Int_t iAddr = (pHit->GetAddress() & DetMask); fhAllHitsSmTypes->Fill(GetStationOfAddr(iAddr)); - //cout << " -D- " << iSmType <<", " << fTypeStation[iSmType] << endl; + //LOG(info) << " -D- " << iSmType <<", " << fTypeStation[iSmType]; if (GetStationOfAddr(iAddr) > -1) fhAllHitsStation->Fill(GetStationOfAddr(iAddr)); } // vertex stuff @@ -2211,8 +2223,8 @@ void CbmTofFindTracks::PrintSetup() Double_t CbmTofFindTracks::GetTOff(Int_t iAddr) { - //cout << Form(" <D> GetTOff for 0x%08x at HistoIndex %d: %7.1f ", iAddr, fMapRpcIdParInd[iAddr], - //(Double_t)fhPullT_Smt_Off->GetBinContent( fMapRpcIdParInd[iAddr] + 1)) <<endl; + //LOG(info) << Form(" <D> GetTOff for 0x%08x at HistoIndex %d: %7.1f ", iAddr, fMapRpcIdParInd[iAddr], + //(Double_t)fhPullT_Smt_Off->GetBinContent( fMapRpcIdParInd[iAddr] + 1)); return (Double_t) fhPullT_Smt_Off->GetBinContent(fMapRpcIdParInd[iAddr] + 1); } diff --git a/reco/detectors/tof/CbmTofFindTracks.h b/reco/detectors/tof/CbmTofFindTracks.h index 6633f84380f37e50944ae065fa76de1080713510..f9f7815cad3c4a7dce97506282c10922297d25c4 100644 --- a/reco/detectors/tof/CbmTofFindTracks.h +++ b/reco/detectors/tof/CbmTofFindTracks.h @@ -213,6 +213,7 @@ private: TClonesArray* fTofHitArray; // Output array of recalibrated TOF hits std::vector<Int_t> fTofHitIndexArray; // Index of hit in TS TClonesArray* fTofHitArrayOut; // Output array of recalibrated TOF hits + TClonesArray* fTofUHitArrayOut; // Output array of recalibrated TOF hits TClonesArray* fTrackArray; // Output array of CbmTofTracks TClonesArray* fTrackArrayOut; // Output array of CbmTofTracks in CbmEvent mode TClonesArray* fTofUHitArray; // Output array of unused TOF hits