diff --git a/reco/L1/CbmL1.cxx b/reco/L1/CbmL1.cxx index f99495a50618a10f2ac8f44cf085b236a5f2e461..5f27f4defa16377cc5a2233e5516942487eb9038 100644 --- a/reco/L1/CbmL1.cxx +++ b/reco/L1/CbmL1.cxx @@ -931,7 +931,7 @@ InitStatus CbmL1::Init() //algo->SetParameters(fParameters); -#ifdef FEATURING_L1ALGO_INIT + /******************************************************************************************************************** * EXPERIMENTAL FEATURE: usage of L1InitManager for L1Algo initialization * ********************************************************************************************************************/ @@ -1251,8 +1251,6 @@ InitStatus CbmL1::Init() /******************************************************************************************************************** ********************************************************************************************************************/ -#endif // FEATURING_L1ALGO_INIT - algo->Init(geo, fUseHitErrors, fTrackingMode, fMissingHits); geo.clear(); @@ -1558,15 +1556,17 @@ void CbmL1::Exec(Option_t* /*option*/) {} void CbmL1::Reconstruct(CbmEvent* event) { - static int nevent = 0; vFileEvent.clear(); L1Vector<std::pair<double, int>> SortStsHits("CbmL1::SortStsHits"); SortStsHits.reserve(listStsHits->GetEntriesFast()); + L1_SHOW(listStsHits->GetEntriesFast()); + float start_t = 10000000000; + // TODO: move these values to CbmL1Parameters namespace (S.Zharko) bool areDataLeft = true; // whole TS processed? float TsStart = 0; // starting time of sub-TS float TsLength = 10000; // length of sub-TS @@ -1582,7 +1582,8 @@ void CbmL1::Reconstruct(CbmEvent* event) } TsStart = start_t; ///reco TS start time is set to smallest hit time - + + L1_SHOW(TsStart); std::sort(SortStsHits.begin(), SortStsHits.end()); StsIndex.clear(); @@ -1592,13 +1593,18 @@ void CbmL1::Reconstruct(CbmEvent* event) StsIndex.push_back(j); }; + L1_SHOW(fLegacyEventMode); + L1_SHOW(TsStart); + if (!fLegacyEventMode && fPerformance) { int nofEvents = fEventList->GetNofEvents(); + L1_SHOW(fEventList->GetNofEvents()); for (int iE = 0; iE < nofEvents; iE++) { - int fileId = fEventList->GetFileIdByIndex(iE); int eventId = fEventList->GetEventIdByIndex(iE); + L1_SHOW(fileId); + L1_SHOW(eventId); vFileEvent.insert(DFSET::value_type(fileId, eventId)); } } @@ -1608,14 +1614,15 @@ void CbmL1::Reconstruct(CbmEvent* event) vFileEvent.insert(DFSET::value_type(iFile, iEvent)); } - if (fVerbose > 1) { cout << endl << "CbmL1::Exec event " << ++nevent << " ..." << endl << endl; } + if (fVerbose > 1) { cout << "\nCbmL1::Exec event " << ++nevent << " ...\n\n"; } #ifdef _OPENMP omp_set_num_threads(1); #endif // repack data L1Vector<CbmL1Track> vRTracksCur("CbmL1::vRTracksCur"); // reconstructed tracks - + L1_SHOW(vRTracksCur.size()); + L1_SHOW(vRTracksCur.capacity()); { int nHits = 0; int nSta = 1; @@ -1629,11 +1636,15 @@ void CbmL1::Reconstruct(CbmEvent* event) } vRTracksCur.reserve(10 + (2 * nHits) / nSta); } + L1_SHOW(vRTracksCur.size()); + L1_SHOW(vRTracksCur.capacity()); fTrackingTime = 0; - while (areDataLeft) { + while (areDataLeft) { + + L1_SHOW(areDataLeft); fData->Clear(); if (event) { @@ -1647,6 +1658,7 @@ void CbmL1::Reconstruct(CbmEvent* event) FstHitinTs = 0; } + L1_SHOW(fSTAPDataMode); if (fSTAPDataMode >= 2) { // 2,3 fData->ReadHitsFromFile(fSTAPDataDir.Data(), 1, fVerbose); @@ -2078,7 +2090,7 @@ void CbmL1::WriteSTAPAlgoData() // must be called after ReadEvent // write algo data in file static int vNEvent = 1; std::fstream fadata; - + TString fadata_name = fSTAPDataDir + "data_algo.txt"; // if ( vNEvent <= maxNEvent ) { if (1) { @@ -2384,8 +2396,8 @@ void CbmL1::ReadSTAPAlgoData() for (int i = 0; i < n; i++) { L1Hit element; fadata >> element_f >> element_b >> element_n >> element.z >> element.u >> element.v >> element.t; - element.f = static_cast<THitI>(element_f); - element.b = static_cast<THitI>(element_b); + element.f = static_cast<L1HitIndex_t>(element_f); + element.b = static_cast<L1HitIndex_t>(element_b); algo->vStsHits->push_back(element); } if (fVerbose >= 4) { diff --git a/reco/L1/CbmL1.h b/reco/L1/CbmL1.h index 5cfef845d7f3a9cd75cf2fe93b1d189853195585..4944f6af5086b4fd7b2c6fa70e04b22427b92525 100644 --- a/reco/L1/CbmL1.h +++ b/reco/L1/CbmL1.h @@ -250,7 +250,7 @@ public: bool fMissingHits {false}; L1Algo::TrackingMode fTrackingMode {L1Algo::TrackingMode::kSts}; - L1Vector<CbmL1Track> vRTracks {"CbmL1::vRTracks"}; // reconstructed tracks + L1Vector<CbmL1Track> vRTracks {"CbmL1::vRTracks"}; ///> reconstructed tracks DFSET vFileEvent {}; L1Vector<CbmL1HitStore> vHitStore {"CbmL1::vHitStore"}; // diff hit information diff --git a/reco/L1/CbmL1Hit.h b/reco/L1/CbmL1Hit.h index 45957ddfffa94ffbf864d783a1a073394d03fe33..0faf887064006f44ebae74a1a1a1ad921853f681 100644 --- a/reco/L1/CbmL1Hit.h +++ b/reco/L1/CbmL1Hit.h @@ -16,15 +16,15 @@ struct CbmL1Hit { CbmL1Hit(int hitId_, int extIndex_, int Det_) : hitId(hitId_), extIndex(extIndex_), Det(Det_) {}; - int hitId = 0; // index of L1Hit in algo->vStsHits array. Should be equal to index of this in L1->vStsHits - int extIndex = 0; // index of hit in the TClonesArray array - int Det = 0; // station index - float x = 0.f; // measured X coordinate - float y = 0.f; // measured Y coordinate - float t = 0.f; // measured time - int f = 0; // front strip index - int b = 0; // back strip index - int ID = 0; // TODO: check if this ID is redundant + int hitId = 0; ///> index of L1Hit in algo->vStsHits array. Should be equal to index of this in L1->vStsHits + int extIndex = 0; ///> index of hit in the TClonesArray array + int Det = 0; ///> station index + float x = 0.f; ///> measured X coordinate + float y = 0.f; ///> measured Y coordinate + float t = 0.f; ///> measured time + int f = 0; ///> front strip index + int b = 0; ///> back strip index + int ID = 0; ///> TODO: check if this ID is redundant L1Vector<int> mcPointIds {"CbmL1Hit::mcPointIds"}; // indices of CbmL1MCPoint in L1->vMCPoints array }; diff --git a/reco/L1/CbmL1ReadEvent.cxx b/reco/L1/CbmL1ReadEvent.cxx index 5c8dcd469f94be1d221f58c1a4cb9f067e9d2c75..9cf9dbb9dfd47ad8e99ccdefcc17ae5610fc6d73 100644 --- a/reco/L1/CbmL1ReadEvent.cxx +++ b/reco/L1/CbmL1ReadEvent.cxx @@ -188,7 +188,7 @@ void CbmL1::ReadEvent(L1AlgoInputData* fData_, float& TsStart, float& TsLength, for (int i = 0; i < NStation; i++) { - fData_->StsHitsStartIndex[i] = static_cast<THitI>(-1); + fData_->StsHitsStartIndex[i] = static_cast<L1HitIndex_t>(-1); fData_->StsHitsStopIndex[i] = 0; } @@ -1072,6 +1072,14 @@ void CbmL1::ReadEvent(L1AlgoInputData* fData_, float& TsStart, float& TsLength, vHitStore.reserve(nHits); vHitMCRef.reserve(nHits); + /* + * In this section the vStsHits, vHitStore and vHitMCRef vectors as well as fData->vStsHits are + * filled. + */ + + L1_SHOW(vStsHits.size()); + L1_SHOW(vHitStore.size()); + L1_SHOW(vHitMCRef.size()); for (int i = 0; i < nHits; i++) { TmpHit& th = tmpHits[i]; @@ -1114,7 +1122,7 @@ void CbmL1::ReadEvent(L1AlgoInputData* fData_, float& TsStart, float& TsLength, h.z = th.z; - // save hit + // save hit vStsHits.push_back(CbmL1Hit(fData->vStsHits.size(), th.ExtIndex, th.Det)); vStsHits[vStsHits.size() - 1].x = th.x; @@ -1131,7 +1139,7 @@ void CbmL1::ReadEvent(L1AlgoInputData* fData_, float& TsStart, float& TsLength, int sta = th.iStation; - if (fData_->StsHitsStartIndex[sta] == static_cast<THitI>(-1)) fData_->StsHitsStartIndex[sta] = nEffHits; + if (fData_->StsHitsStartIndex[sta] == static_cast<L1HitIndex_t>(-1)) fData_->StsHitsStartIndex[sta] = nEffHits; nEffHits++; fData_->StsHitsStopIndex[sta] = nEffHits; @@ -1139,15 +1147,23 @@ void CbmL1::ReadEvent(L1AlgoInputData* fData_, float& TsStart, float& TsLength, vHitStore.push_back(s); vHitMCRef.push_back(th.iMC); } + L1_SHOW(&vStsHits); + L1_SHOW(vStsHits.size()); + L1_SHOW(&(fData_->vStsHits)); + L1_SHOW((fData_->vStsHits).size()); for (int i = 0; i < NStation; i++) { - - if (fData_->StsHitsStartIndex[i] == static_cast<THitI>(-1)) + if (fData_->StsHitsStartIndex[i] == static_cast<L1HitIndex_t>(-1)) { fData_->StsHitsStartIndex[i] = fData_->StsHitsStopIndex[i]; + } } if (fVerbose >= 10) cout << "ReadEvent: mvd and sts are saved." << endl; + /* + * Translate gathered hits data to the L1Algo object. TODO: raplace it with L1DataManager functionality (S.Zharko) + */ + algo->SetData(fData_->GetStsHits(), fData_->GetNStsStrips(), fData_->GetSFlag(), fData_->GetStsHitsStartIndex(), fData_->GetStsHitsStopIndex()); diff --git a/reco/L1/L1Algo/L1Algo.cxx b/reco/L1/L1Algo/L1Algo.cxx index 9f29749eb00489af6e4be2f6999305e96e4146fb..2d9196640b488619db661f6907b51d0c1ce130e1 100644 --- a/reco/L1/L1Algo/L1Algo.cxx +++ b/reco/L1/L1Algo/L1Algo.cxx @@ -273,15 +273,14 @@ void L1Algo::Init(const L1Vector<fscal>& geo, const bool UseHitErrors, const Tra LOG(info) << "** Original L1Station array content **"; int nStations = fInitManager.GetStationsNumber(); for (int iSt = 0; iSt < nStations; ++iSt) { - LOG(info) << "Station Global No: " << iSt; - LOG(info) << '\n' << vStations[iSt].ToString(/*verbosity = */ 3); - } - LOG(info) << "** New L1Station array content **"; - nStations = fInitManager.GetStationsNumber(); - for (int iSt = 0; iSt < nStations; ++iSt) { - LOG(info) << "Station Global No: " << iSt; - LOG(info) << '\n' << fStationsNew[iSt].ToString(/*verbosity = */ 3); + LOG(info) << "Station Global No: " << iSt << ' ' << vStations[iSt].ToString(/*verbosity = */ 0); } + //LOG(info) << "** New L1Station array content **"; + //nStations = fInitManager.GetStationsNumber(); + //for (int iSt = 0; iSt < nStations; ++iSt) { + // LOG(info) << "Station Global No: " << iSt; + // LOG(info) << '\n' << fStationsNew[iSt].ToString(/*verbosity = */ 0); + //} // Print L1Parameters fParameters.Print(/*verbosity=*/0); @@ -289,7 +288,7 @@ void L1Algo::Init(const L1Vector<fscal>& geo, const bool UseHitErrors, const Tra void L1Algo::SetData(L1Vector<L1Hit>& StsHits_, int nStsStrips_, L1Vector<unsigned char>& SFlag_, - const THitI* StsHitsStartIndex_, const THitI* StsHitsStopIndex_) + const L1HitIndex_t* StsHitsStartIndex_, const L1HitIndex_t* StsHitsStopIndex_) { vStsHits = &StsHits_; diff --git a/reco/L1/L1Algo/L1Algo.h b/reco/L1/L1Algo/L1Algo.h index f7a386850f26aa6ada6209bb2fecdd6b8958a69f..5fcbc99a02ff5c3d0e1092c0315b93a0072d210e 100644 --- a/reco/L1/L1Algo/L1Algo.h +++ b/reco/L1/L1Algo/L1Algo.h @@ -37,17 +37,6 @@ class L1AlgoDraw; //#define MERGE_CLONES -/********************************************************************************* - ************ TEMPORARY MACROS, SHOULD BE REMOVED (TODO!!, S. Zharko) *********** - * */ - -#define FEATURING_L1ALGO_INIT 1 // If defined, new initialization will be used, if not - the old one -// Macro: 1 - new track finder loop, other - old track finder loop -#define FEATURING_L1ALGO_CATRACKFINDER_ITERATIONLOOP 1 - -/* * - *********************************************************************************/ - #include <array> #include <iomanip> #include <iostream> @@ -100,19 +89,22 @@ public: L1Algo(const L1Algo&) = delete; L1Algo operator=(const L1Algo&) = delete; - /// set a default particle mass for the track fit + /// Sets a default particle mass for the track fit /// it is used during reconstruction /// for the multiple scattering and energy loss estimation + /// \param mass Default particle mass void SetDefaultParticleMass(float mass) { fDefaultMass = mass; } - /// get default particle mass + /// Gets default particle mass + /// \return particle mass float GetDefaultParticleMass() const { return fDefaultMass; } - /// get default particle mass squared + /// Gets default particle mass squared + /// \return particle mass squared float GetDefaultParticleMass2() const { return fDefaultMass * fDefaultMass; } - float fDefaultMass = 0.10565800; // muon mass - // TODO: make fDefaultMass a private member (S.Zh.) + float fDefaultMass = 0.10565800; // muon mass + // TODO: make fDefaultMass a private member (S.Zharko) /// pack station, thread and triplet indices to an unique triplet ID static unsigned int PackTripletId(unsigned int Station, unsigned int Thread, unsigned int Triplet) @@ -166,8 +158,8 @@ public: // vectors that are parallel to fTracks L1Vector<unsigned short> fMergerTrackFirstStation {"L1Algo::fMergerTrackFirstStation"}; // first station of a track L1Vector<unsigned short> fMergerTrackLastStation {"L1Algo::fMergerTrackLastStation"}; // last station of a track - L1Vector<THitI> fMergerTrackFirstHit {"L1Algo::fMergerTrackFirstHit"}; // index of the first tracks hit - L1Vector<THitI> fMergerTrackLastHit {"L1Algo::fMergerTrackLastHit"}; // index of the last tracks hit + L1Vector<L1HitIndex_t> fMergerTrackFirstHit {"L1Algo::fMergerTrackFirstHit"}; // index of the first tracks hit + L1Vector<L1HitIndex_t> fMergerTrackLastHit {"L1Algo::fMergerTrackLastHit"}; // index of the last tracks hit L1Vector<unsigned short> fMergerTrackNeighbour { "L1Algo::fMergerTrackNeighbour"}; // track that can be merged with the given track L1Vector<float> fMergerTrackChi2 {"L1Algo::fMergerTrackChi2"}; // chi2 of the merge @@ -176,7 +168,7 @@ public: "L1Algo::fMergerTrackIsDownstreamNeighbour"}; // is the track a downstream neighbor of another track // other vectors L1Vector<L1Track> fMergerTracksNew {"L1Algo::fMergerTracksNew"}; // vector of tracks after the merge - L1Vector<THitI> fMergerRecoHitsNew {"L1Algo::fMergerRecoHitsNew"}; // vector of track hits after the merge + L1Vector<L1HitIndex_t> fMergerRecoHitsNew {"L1Algo::fMergerRecoHitsNew"}; // vector of track hits after the merge #ifdef DRAW @@ -194,7 +186,7 @@ public: void Init(const L1Vector<fscal>& geo, const bool UseHitErrors, const TrackingMode mode, const bool MissingHits); void SetData(L1Vector<L1Hit>& StsHits_, int nStsStrips_, L1Vector<unsigned char>& SFlag_, - const THitI* StsHitsStartIndex_, const THitI* StsHitsStopIndex_); + const L1HitIndex_t* StsHitsStartIndex_, const L1HitIndex_t* StsHitsStopIndex_); void PrintHits(); @@ -225,20 +217,20 @@ public: alignas(16) std::array<L1Station, L1Parameters::kMaxNstations> fStationsNew; L1Vector<L1Material> fRadThick {"fRadThick"}; // material for each station - int NStsStrips {0}; // number of strips - L1Vector<L1Hit>* vStsHits {nullptr}; // hits as a combination of front-, backstrips and z-position - L1Grid vGrid[L1Parameters::kMaxNstations]; // hits as a combination of front-, backstrips and z-position - L1Grid vGridTime[L1Parameters::kMaxNstations]; + int NStsStrips {0}; ///> number of strips + L1Vector<L1Hit>* vStsHits {nullptr}; ///> hits as a combination of front-, backstrips and z-position + L1Grid vGrid[L1Parameters::kMaxNstations]; ///> hits as a combination of front-, backstrips and z-position + L1Grid vGridTime[L1Parameters::kMaxNstations]; ///> L1Vector<unsigned char>* fStripFlag {nullptr}; // information of hits station & using hits in tracks; double fCATime {0.}; // time of track finding L1Vector<L1Track> fTracks {"L1Algo::fTracks"}; // reconstructed tracks - L1Vector<THitI> fRecoHits {"L1Algo::fRecoHits"}; // packed hits of reconstructed tracks + L1Vector<L1HitIndex_t> fRecoHits {"L1Algo::fRecoHits"}; // packed hits of reconstructed tracks - const THitI* StsHitsStartIndex {nullptr}; // station-bounders in vStsHits array - const THitI* StsHitsStopIndex {nullptr}; // station-bounders in vStsHits array + const L1HitIndex_t* StsHitsStartIndex {nullptr}; // station-bounders in vStsHits array + const L1HitIndex_t* StsHitsStopIndex {nullptr}; // station-bounders in vStsHits array // L1Branch* pointer; @@ -251,11 +243,11 @@ public: L1Vector<L1HitPoint> vStsDontUsedHitsxy_buf {"L1Algo::vStsDontUsedHitsxy_buf"}; L1Vector<L1HitPoint> vStsDontUsedHitsxy_B {"L1Algo::vStsDontUsedHitsxy_B"}; L1Vector<L1Track> fTracks_local[L1Parameters::kMaxNthreads] {"L1Algo::fTracks_local"}; - L1Vector<THitI> fRecoHits_local[L1Parameters::kMaxNthreads] {"L1Algo::fRecoHits_local"}; + L1Vector<L1HitIndex_t> fRecoHits_local[L1Parameters::kMaxNthreads] {"L1Algo::fRecoHits_local"}; - L1Vector<THitI> RealIHit_v {"L1Algo::RealIHit_v"}; - L1Vector<THitI> RealIHit_v_buf {"L1Algo::RealIHit_v_buf"}; - L1Vector<THitI> RealIHit_v_buf2 {"L1Algo::RealIHit_v_buf2"}; + L1Vector<L1HitIndex_t> RealIHit_v {"L1Algo::RealIHit_v"}; + L1Vector<L1HitIndex_t> RealIHit_v_buf {"L1Algo::RealIHit_v_buf"}; + L1Vector<L1HitIndex_t> RealIHit_v_buf2 {"L1Algo::RealIHit_v_buf2"}; #ifdef _OPENMP L1Vector<omp_lock_t> fHitToBestTrackF {"L1Algo::fHitToBestTrackF"}; @@ -299,15 +291,15 @@ public: int isec {0}; // iteration L1Vector<L1Hit>* vStsHitsUnused {nullptr}; - L1Vector<THitI>* RealIHitP {nullptr}; - L1Vector<THitI>* RealIHitPBuf {nullptr}; + L1Vector<L1HitIndex_t>* RealIHitP {nullptr}; + L1Vector<L1HitIndex_t>* RealIHitPBuf {nullptr}; L1Vector<L1HitPoint>* vStsHitPointsUnused {nullptr}; - THitI* RealIHit {nullptr}; // index in vStsHits indexed by index in vStsHitsUnused + L1HitIndex_t* RealIHit {nullptr}; // index in vStsHits indexed by index in vStsHitsUnused - THitI StsHitsUnusedStartIndex[L1Parameters::kMaxNstations + 1] {0}; - THitI StsHitsUnusedStopIndex[L1Parameters::kMaxNstations + 1] {0}; - THitI StsHitsUnusedStartIndexEnd[L1Parameters::kMaxNstations + 1] {0}; - THitI StsHitsUnusedStopIndexEnd[L1Parameters::kMaxNstations + 1] {0}; + L1HitIndex_t StsHitsUnusedStartIndex[L1Parameters::kMaxNstations + 1] {0}; + L1HitIndex_t StsHitsUnusedStopIndex[L1Parameters::kMaxNstations + 1] {0}; + L1HitIndex_t StsHitsUnusedStartIndexEnd[L1Parameters::kMaxNstations + 1] {0}; + L1HitIndex_t StsHitsUnusedStopIndexEnd[L1Parameters::kMaxNstations + 1] {0}; L1Vector<int> TripForHit[2] {"L1Algo::TripForHit"}; // TODO: what does '2' stand for? @@ -319,9 +311,9 @@ public: nsL1::vector<L1TrackPar>::TSimd fT_3[L1Parameters::kMaxNthreads]; - L1Vector<THitI> fhitsl_3[L1Parameters::kMaxNthreads] {"L1Algo::fhitsl_3"}; - L1Vector<THitI> fhitsm_3[L1Parameters::kMaxNthreads] {"L1Algo::fhitsm_3"}; - L1Vector<THitI> fhitsr_3[L1Parameters::kMaxNthreads] {"L1Algo::fhitsr_3"}; + L1Vector<L1HitIndex_t> fhitsl_3[L1Parameters::kMaxNthreads] {"L1Algo::fhitsl_3"}; + L1Vector<L1HitIndex_t> fhitsm_3[L1Parameters::kMaxNthreads] {"L1Algo::fhitsm_3"}; + L1Vector<L1HitIndex_t> fhitsr_3[L1Parameters::kMaxNthreads] {"L1Algo::fhitsr_3"}; nsL1::vector<fvec>::TSimd fu_front3[L1Parameters::kMaxNthreads]; nsL1::vector<fvec>::TSimd fu_back3[L1Parameters::kMaxNthreads]; @@ -371,7 +363,9 @@ public: /// Sets L1Algo parameters object + /// \param other - reference to the L1Parameters object void SetParameters(const L1Parameters& other) { fParameters = other; } + // TODO: remove it (S.Zharko) /// Gets a pointer to the L1Algo parameters object L1Parameters* GetParameters() { return &fParameters; } @@ -385,7 +379,9 @@ private: L1InitManager fInitManager {&fParameters}; ///< Object of L1Algo initialization manager class - /// ================================= FUNCTIONAL PART ================================= + /*********************************************************************************************//** + * ------ FUNCTIONAL PART ------ + ************************************************************************************************/ /// ----- Subroutines used by L1Algo::CATrackFinder() ------ @@ -394,28 +390,33 @@ private: L1Branch* new_tr); - /// Fit track - /// t - track with hits - /// T - track params - /// dir - 0 - forward, 1 - backward - /// qp0 - momentum for extrapolation - /// initialize - should be params ititialized. 1 - yes. + /// Fits track + /// \param t - track with hits + /// \param T - track parameters + /// \param dir - false - forward, true - backward + /// \param qp0 - momentum for extrapolation + /// \param initParams - should be params ititialized. 1 - yes. void BranchFitterFast(const L1Branch& t, L1TrackPar& T, const bool dir, const fvec qp0 = 0., const bool initParams = true); - /// Fit track. more precise than FitterFast + /// Fits track. more precise than FitterFast + /// \param t - track with hits + /// \param T - track parameters + /// \param dir - false - forward, true - backward + /// \param qp0 - momentum for extrapolation + /// \param initParams - should be params ititialized. 1 - yes. void BranchFitter(const L1Branch& t, L1TrackPar& T, const bool dir, const fvec qp0 = 0., const bool initParams = true); - /// Find additional hits for existing track - /// t - track with hits - /// T - track params - /// dir - 0 - forward, 1 - backward - /// qp0 - momentum for extrapolation + /// Finds additional hits for already found track + /// \param t - track with hits + /// \param T - track params + /// \param dir - 0 - forward, 1 - backward + /// \param qp0 - momentum for extrapolation void FindMoreHits(L1Branch& t, L1TrackPar& T, const bool dir, const fvec qp0 = 0.0); /// Find additional hits for existing track - /// return chi2 + /// \return chi2 fscal BranchExtender(L1Branch& t); /// ----- Subroutines used by L1Algo::CAMergeClones() ------ @@ -462,7 +463,7 @@ private: void f10( // input Tindex start_lh, Tindex n1_l, L1HitPoint* StsHits_l, // output - fvec* u_front_l, fvec* u_back_l, fvec* zPos_l, THitI* hitsl, fvec* HitTime_l, fvec* HitTimeEr, fvec* Event_l, + fvec* u_front_l, fvec* u_back_l, fvec* zPos_l, L1HitIndex_t* hitsl, fvec* HitTime_l, fvec* HitTimeEr, fvec* Event_l, fvec* d_x, fvec* d_y, fvec* d_xy, fvec* d_u, fvec* d_v); /// Get the field approximation. Add the target to parameters estimation. Propagate to middle station. @@ -475,29 +476,29 @@ private: /// Find the doublets. Reformat data in the portion of doublets. void f20( // input - Tindex n1, L1Station& stal, L1Station& stam, L1HitPoint* vStsHits_m, L1TrackPar* T_1, THitI* hitsl_1, + Tindex n1, L1Station& stal, L1Station& stam, L1HitPoint* vStsHits_m, L1TrackPar* T_1, L1HitIndex_t* hitsl_1, // output - Tindex& n2, L1Vector<THitI>& i1_2, + Tindex& n2, L1Vector<L1HitIndex_t>& i1_2, #ifdef DOUB_PERFORMANCE - L1Vector<THitI>& hitsl_2, + L1Vector<L1HitIndex_t>& hitsl_2, #endif // DOUB_PERFORMANCE - L1Vector<THitI>& hitsm_2, fvec* Event, L1Vector<char>& lmDuplets); + L1Vector<L1HitIndex_t>& hitsm_2, fvec* Event, L1Vector<char>& lmDuplets); /// Add the middle hits to parameters estimation. Propagate to right station. /// Find the triplets (right hit). Reformat data in the portion of triplets. void f30( // input L1HitPoint* vStsHits_r, L1Station& stam, L1Station& star, - int istam, int istar, L1HitPoint* vStsHits_m, L1TrackPar* T_1, L1FieldRegion* fld_1, THitI* hitsl_1, + int istam, int istar, L1HitPoint* vStsHits_m, L1TrackPar* T_1, L1FieldRegion* fld_1, L1HitIndex_t* hitsl_1, - Tindex n2, L1Vector<THitI>& hitsm_2, L1Vector<THitI>& i1_2, + Tindex n2, L1Vector<L1HitIndex_t>& hitsm_2, L1Vector<L1HitIndex_t>& i1_2, const L1Vector<char>& mrDuplets, // output - Tindex& n3, nsL1::vector<L1TrackPar>::TSimd& T_3, L1Vector<THitI>& hitsl_3, L1Vector<THitI>& hitsm_3, - L1Vector<THitI>& hitsr_3, nsL1::vector<fvec>::TSimd& u_front_3, nsL1::vector<fvec>::TSimd& u_back_3, + Tindex& n3, nsL1::vector<L1TrackPar>::TSimd& T_3, L1Vector<L1HitIndex_t>& hitsl_3, L1Vector<L1HitIndex_t>& hitsm_3, + L1Vector<L1HitIndex_t>& hitsr_3, nsL1::vector<fvec>::TSimd& u_front_3, nsL1::vector<fvec>::TSimd& u_back_3, nsL1::vector<fvec>::TSimd& z_Pos_3, // nsL1::vector<fvec>::TSimd& dx_, // nsL1::vector<fvec>::TSimd& dy_, @@ -517,15 +518,15 @@ private: /// Refit Triplets. void f32( // input - Tindex n3, int istal, nsL1::vector<L1TrackPar>::TSimd& T_3, L1Vector<THitI>& hitsl_3, L1Vector<THitI>& hitsm_3, - L1Vector<THitI>& hitsr_3, int nIterations = 0); + Tindex n3, int istal, nsL1::vector<L1TrackPar>::TSimd& T_3, L1Vector<L1HitIndex_t>& hitsl_3, L1Vector<L1HitIndex_t>& hitsm_3, + L1Vector<L1HitIndex_t>& hitsr_3, int nIterations = 0); /// Select triplets. Save them into vTriplets. void f4( // input - Tindex n3, int istal, int istam, int istar, nsL1::vector<L1TrackPar>::TSimd& T_3, L1Vector<THitI>& hitsl_3, - L1Vector<THitI>& hitsm_3, L1Vector<THitI>& hitsr_3, + Tindex n3, int istal, int istam, int istar, nsL1::vector<L1TrackPar>::TSimd& T_3, L1Vector<L1HitIndex_t>& hitsl_3, + L1Vector<L1HitIndex_t>& hitsm_3, L1Vector<L1HitIndex_t>& hitsr_3, // output - Tindex& nstaltriplets, L1Vector<THitI>* hitsn_3 = 0, L1Vector<THitI>* hitsr_5 = 0 + Tindex& nstaltriplets, L1Vector<L1HitIndex_t>* hitsn_3 = 0, L1Vector<L1HitIndex_t>* hitsr_5 = 0 // #ifdef XXX // ,unsigned int &stat_n_trip @@ -544,18 +545,18 @@ private: int istal, int istam, Tindex ip, L1Vector<Tindex>& n_g, Tindex* portionStopIndex_, // output - L1TrackPar* T_1, L1FieldRegion* fld_1, THitI* hitsl_1, + L1TrackPar* T_1, L1FieldRegion* fld_1, L1HitIndex_t* hitsl_1, L1Vector<char>& lmDuplets, - Tindex& n_2, L1Vector<THitI>& i1_2, L1Vector<THitI>& hitsm_2); + Tindex& n_2, L1Vector<L1HitIndex_t>& i1_2, L1Vector<L1HitIndex_t>& hitsm_2); /// Find triplets on station void TripletsStaPort( // input - int istal, int istam, int istar, Tindex& nstaltriplets, L1TrackPar* T_1, L1FieldRegion* fld_1, THitI* hitsl_1, + int istal, int istam, int istar, Tindex& nstaltriplets, L1TrackPar* T_1, L1FieldRegion* fld_1, L1HitIndex_t* hitsl_1, - Tindex& n_2, L1Vector<THitI>& i1_2, L1Vector<THitI>& hitsm_2, + Tindex& n_2, L1Vector<L1HitIndex_t>& i1_2, L1Vector<L1HitIndex_t>& hitsm_2, const L1Vector<char>& mrDuplets diff --git a/reco/L1/L1Algo/L1AlgoTBB.h b/reco/L1/L1Algo/L1AlgoTBB.h index a0005ff6d46ab93c8e8446cc850c01036d4de2b7..f31b3fd7ae6482cecd46aee6f1cf7e9cf9b4d89c 100644 --- a/reco/L1/L1Algo/L1AlgoTBB.h +++ b/reco/L1/L1Algo/L1AlgoTBB.h @@ -40,19 +40,19 @@ namespace tbb unsigned* portionStopIndex; L1TrackPar* T_g1; L1FieldRegion* fld_g1; - THitI* hitsl_g1; + L1HitIndex_t* hitsl_g1; // fvec *x_minusV_g1; fvec *x_plusV_g1; fvec *y_minusV_g1; fvec *y_plusV_g1; // output - THitI* Duplets_start; - THitI* Duplets_hits; + L1HitIndex_t* Duplets_start; + L1HitIndex_t* Duplets_hits; Tindex* n_g2; - THitI* i1_g2; + L1HitIndex_t* i1_g2; // L1TrackPar *T_g2; // L1FieldRegion *fld_g2; // fvec *u_front_g2; fvec *u_back_g2; - // THitI *hitsl_g2; - THitI* hitsm_g2; + // L1HitIndex_t *hitsl_g2; + L1HitIndex_t* hitsm_g2; // fvec *x_minusV_g2; fvec *x_plusV_g2; fvec *y_minusV_g2; fvec *y_plusV_g2; public: @@ -65,17 +65,17 @@ namespace tbb double Pick_r_, double Pick_m_, double MaxInvMom_, fvec targX_, fvec targY_, fvec targZ_, L1FieldValue& targB_, L1XYMeasurementInfo& TargetXYInfo_, - Tindex* n_g1_, unsigned* portionStopIndex_, L1TrackPar* T_g1_, L1FieldRegion* fld_g1_, THitI* hitsl_g1_, + Tindex* n_g1_, unsigned* portionStopIndex_, L1TrackPar* T_g1_, L1FieldRegion* fld_g1_, L1HitIndex_t* hitsl_g1_, // fvec *x_minusV_g1_, fvec *x_plusV_g1_, fvec *y_minusV_g1_, fvec *y_plusV_g1_, // output - THitI* Duplets_start_, THitI* Duplets_hits_, + L1HitIndex_t* Duplets_start_, L1HitIndex_t* Duplets_hits_, - Tindex* n_g2_, THitI* i1_g2_, + Tindex* n_g2_, L1HitIndex_t* i1_g2_, // L1TrackPar *T_g2_, // L1FieldRegion *fld_g2_, // fvec *u_front_g2_, fvec *u_back_g2_, - // THitI *hitsl_g2_, - THitI* hitsm_g2_ + // L1HitIndex_t *hitsl_g2_, + L1HitIndex_t* hitsm_g2_ // fvec *x_minusV_g2_, fvec *x_plusV_g2_, fvec *y_minusV_g2_, fvec *y_plusV_g2_ ) : isec(isec_) @@ -162,20 +162,20 @@ namespace tbb Tindex* n_g1; L1TrackPar* T_g1; L1FieldRegion* fld_g1; - THitI* hitsl_g1; + L1HitIndex_t* hitsl_g1; Tindex* n_g2; unsigned* portionStopIndex; - THitI* i1_g2; + L1HitIndex_t* i1_g2; /* L1FieldRegion *fld_g2; fvec *u_front_g2; fvec *u_back_g2; L1TrackPar *T_g2;*/ - // THitI *hitsl_g2; - THitI* hitsm_g2; + // L1HitIndex_t *hitsl_g2; + L1HitIndex_t* hitsm_g2; // fvec *x_minusV_g2; fvec *x_plusV_g2; fvec *y_minusV_g2; fvec *y_plusV_g2; // output - THitI* Duplets_start; - THitI* Duplets_hits; + L1HitIndex_t* Duplets_start; + L1HitIndex_t* Duplets_hits; std::vector<L1Triplet>* vTriplets_part; unsigned* TripStartIndexH; unsigned* TripStopIndexH; @@ -188,17 +188,17 @@ namespace tbb int isec_, L1Station* vStations_, int NStations_, Tindex* StsHitsStartIndex_, Tindex* StsHitsStopIndex_, std::vector<L1HitPoint>& vStsHits_, double Pick_r_, double TRACK_CHI2_CUT_, double MaxInvMom_, - Tindex* n_g1_, L1TrackPar* T_g1_, L1FieldRegion* fld_g1_, THitI* hitsl_g1_, + Tindex* n_g1_, L1TrackPar* T_g1_, L1FieldRegion* fld_g1_, L1HitIndex_t* hitsl_g1_, - Tindex* n_g2_, unsigned* portionStopIndex_, THitI* i1_g2_, + Tindex* n_g2_, unsigned* portionStopIndex_, L1HitIndex_t* i1_g2_, /*L1FieldRegion *fld_g2_, fvec *u_front_g2_, fvec *u_back_g2_, L1TrackPar *T_g2_,*/ - // THitI *hitsl_g2_, - THitI* hitsm_g2_, + // L1HitIndex_t *hitsl_g2_, + L1HitIndex_t* hitsm_g2_, // fvec *x_minusV_g2_, fvec *x_plusV_g2_, fvec *y_minusV_g2_, fvec *y_plusV_g2_, // output - THitI* Duplets_start_, THitI* Duplets_hits_, std::vector<L1Triplet>* vTriplets_part_, unsigned* TripStartIndexH_, + L1HitIndex_t* Duplets_start_, L1HitIndex_t* Duplets_hits_, std::vector<L1Triplet>* vTriplets_part_, unsigned* TripStartIndexH_, unsigned* TripStopIndexH_) : // input isec(isec_) diff --git a/reco/L1/L1Algo/L1BaseStationInfo.cxx b/reco/L1/L1Algo/L1BaseStationInfo.cxx index 678edac2d55042477ab2bf40e0d4bf3f1fcff1b5..097e6e617bb0fa61ba8bee58d1e83c5edb0c0f8c 100644 --- a/reco/L1/L1Algo/L1BaseStationInfo.cxx +++ b/reco/L1/L1Algo/L1BaseStationInfo.cxx @@ -419,8 +419,8 @@ std::string L1BaseStationInfo::ToString(int verbosityLevel, int indentLevel) con std::string indent(indentLevel, indentChar); if (verbosityLevel == 0) { - aStream << indent << "L1BaseStationInfo object: {stationID, detectorID, address} = {" << fStationID << ", " - << static_cast<int>(fDetectorID) << ", " << this << '}'; + aStream << indent << "L1BaseStationInfo object: {stationID, detectorID, z, address} = {" << fStationID << ", " + << static_cast<int>(fDetectorID) << ", " << fZPos << ", " << this << '}'; } else if (verbosityLevel > 0) { aStream << indent << "L1BaseStationInfo object: at " << this << '\n'; diff --git a/reco/L1/L1Algo/L1Branch.h b/reco/L1/L1Algo/L1Branch.h index f6967b30623e9c0e91d45dcda671f7426c5588fe..ae6bd63d19684151b026fff4cd5b0015899bed00 100644 --- a/reco/L1/L1Algo/L1Branch.h +++ b/reco/L1/L1Algo/L1Branch.h @@ -24,7 +24,7 @@ struct L1Branch { char NHits {0}; fscal chi2 {0.}; int CandIndex {0}; - L1Vector<THitI> fStsHits {"L1Branch::fStsHits"}; + L1Vector<L1HitIndex_t> fStsHits {"L1Branch::fStsHits"}; // static bool compareCand(const L1Branch *a, const L1Branch *b){ // diff --git a/reco/L1/L1Algo/L1CAMergeClones.cxx b/reco/L1/L1Algo/L1CAMergeClones.cxx index 030a892d18f231141d616fcf6b59a63575f943f7..b9f14fadcdafb75744926abc6f97d254d79c9ae6 100644 --- a/reco/L1/L1Algo/L1CAMergeClones.cxx +++ b/reco/L1/L1Algo/L1CAMergeClones.cxx @@ -204,8 +204,8 @@ void L1Algo::CAMergeClones() L1Vector<unsigned short>& firstStation = fMergerTrackFirstStation; L1Vector<unsigned short>& lastStation = fMergerTrackLastStation; - L1Vector<THitI>& firstHit = fMergerTrackFirstHit; - L1Vector<THitI>& lastHit = fMergerTrackLastHit; + L1Vector<L1HitIndex_t>& firstHit = fMergerTrackFirstHit; + L1Vector<L1HitIndex_t>& lastHit = fMergerTrackLastHit; L1Vector<unsigned short>& neighbour = fMergerTrackNeighbour; L1Vector<float>& trackChi2 = fMergerTrackChi2; L1Vector<char>& isStored = fMergerTrackIsStored; @@ -220,7 +220,7 @@ void L1Algo::CAMergeClones() // vector< L1Track > vTracksNew; fMergerTracksNew.clear(); fMergerTracksNew.reserve(nTracks); - // vector< THitI > fRecoHitsNew; + // vector< L1HitIndex_t > fRecoHitsNew; fMergerRecoHitsNew.clear(); fMergerRecoHitsNew.reserve(fRecoHits.size()); @@ -233,7 +233,7 @@ void L1Algo::CAMergeClones() neighbour.reset(nTracks); isDownstreamNeighbour.reset(nTracks); - THitI start_hit = 0; + L1HitIndex_t start_hit = 0; #ifdef OMP #pragma omp parallel for @@ -397,7 +397,7 @@ void L1Algo::CAMergeClones() fMergerTracksNew.push_back(fTracks[iTr]); if (!isDownstreamNeighbour[iTr]) { - for (THitI HI = firstHit[iTr]; HI <= lastHit[iTr]; HI++) { + for (L1HitIndex_t HI = firstHit[iTr]; HI <= lastHit[iTr]; HI++) { fMergerRecoHitsNew.push_back(fRecoHits[HI]); } } @@ -405,12 +405,12 @@ void L1Algo::CAMergeClones() if (neighbour[iTr] < kNoNeighbour) { isStored[neighbour[iTr]] = true; fMergerTracksNew.back().NHits += fTracks[neighbour[iTr]].NHits; - for (THitI HI = firstHit[neighbour[iTr]]; HI <= lastHit[neighbour[iTr]]; HI++) + for (L1HitIndex_t HI = firstHit[neighbour[iTr]]; HI <= lastHit[neighbour[iTr]]; HI++) fMergerRecoHitsNew.push_back(fRecoHits[HI]); } if (isDownstreamNeighbour[iTr]) { - for (THitI HI = firstHit[iTr]; HI <= lastHit[iTr]; HI++) { + for (L1HitIndex_t HI = firstHit[iTr]; HI <= lastHit[iTr]; HI++) { fMergerRecoHitsNew.push_back(fRecoHits[HI]); } } @@ -423,7 +423,7 @@ void L1Algo::CAMergeClones() assert(fRecoHits.size() == fMergerRecoHitsNew.size()); fRecoHits.reset(fMergerRecoHitsNew.size()); - for (THitI iHi = 0; iHi < fMergerRecoHitsNew.size(); iHi++) { + for (L1HitIndex_t iHi = 0; iHi < fMergerRecoHitsNew.size(); iHi++) { fRecoHits[iHi] = fMergerRecoHitsNew[iHi]; } diff --git a/reco/L1/L1Algo/L1CATrackFinder.cxx b/reco/L1/L1Algo/L1CATrackFinder.cxx index fa47f7b05a70f257f59df0b693c638322fe18c77..aecf7d61055581d20994e0e6b084a068f7d3e810 100644 --- a/reco/L1/L1Algo/L1CATrackFinder.cxx +++ b/reco/L1/L1Algo/L1CATrackFinder.cxx @@ -78,7 +78,7 @@ using std::endl; inline void L1Algo::f10( // input Tindex start_lh, Tindex n1_l, L1HitPoint* StsHits_l, // output - fvec* u_front_l, fvec* u_back_l, fvec* zPos_l, THitI* hitsl, fvec* HitTime_l, fvec* HitTimeEr, + fvec* u_front_l, fvec* u_back_l, fvec* zPos_l, L1HitIndex_t* hitsl, fvec* HitTime_l, fvec* HitTimeEr, // comment unused parameters, FU, 18.01.21 fvec* /*Event_l*/, fvec* /*d_x*/, fvec* /*d_y*/, fvec* /*d_xy*/, fvec* d_u, fvec* d_v) { @@ -390,13 +390,13 @@ inline void L1Algo::f11( /// input 1st stage of singlet search /// Find the doublets. Reformat data in the portion of doublets. inline void L1Algo::f20( /// input - Tindex n1, L1Station& stal, L1Station& stam, L1HitPoint* vStsHits_m, L1TrackPar* T_1, THitI* hitsl_1, + Tindex n1, L1Station& stal, L1Station& stam, L1HitPoint* vStsHits_m, L1TrackPar* T_1, L1HitIndex_t* hitsl_1, /// output - Tindex& n2, L1Vector<THitI>& i1_2, + Tindex& n2, L1Vector<L1HitIndex_t>& i1_2, #ifdef DOUB_PERFORMANCE - L1Vector<THitI>& hitsl_2, + L1Vector<L1HitIndex_t>& hitsl_2, #endif // DOUB_PERFORMANCE - L1Vector<THitI>& hitsm_2, fvec* /*Event*/, L1Vector<char>& lmDuplets) + L1Vector<L1HitIndex_t>& hitsm_2, fvec* /*Event*/, L1Vector<char>& lmDuplets) { n2 = 0; // number of doublet for (Tindex i1 = 0; i1 < n1; ++i1) // for each singlet @@ -424,12 +424,12 @@ inline void L1Algo::f20( sqrt(timeError) * 5); - THitI imh = 0; + L1HitIndex_t imh = 0; int irm1 = -1; while (true) { if (fTrackingMode == kGlobal || fTrackingMode == kMcbm) { irm1++; - if ((THitI) irm1 >= (StsHitsUnusedStopIndex[&stam - vStations] - StsHitsUnusedStartIndex[&stam - vStations])) + if ((L1HitIndex_t) irm1 >= (StsHitsUnusedStopIndex[&stam - vStations] - StsHitsUnusedStartIndex[&stam - vStations])) break; imh = irm1; } @@ -561,19 +561,19 @@ inline void L1Algo::f20( /// Find the triplets(right hit). Reformat data in the portion of triplets. inline void L1Algo::f30( // input L1HitPoint* vStsHits_r, L1Station& stam, L1Station& star, int istam, int istar, L1HitPoint* vStsHits_m, - L1TrackPar* T_1, L1FieldRegion* fld_1, THitI* hitsl_1, Tindex n2, L1Vector<THitI>& hitsm_2, L1Vector<THitI>& i1_2, + L1TrackPar* T_1, L1FieldRegion* fld_1, L1HitIndex_t* hitsl_1, Tindex n2, L1Vector<L1HitIndex_t>& hitsm_2, L1Vector<L1HitIndex_t>& i1_2, const L1Vector<char>& /*mrDuplets*/, // output - Tindex& n3, nsL1::vector<L1TrackPar>::TSimd& T_3, L1Vector<THitI>& hitsl_3, L1Vector<THitI>& hitsm_3, - L1Vector<THitI>& hitsr_3, nsL1::vector<fvec>::TSimd& u_front_3, nsL1::vector<fvec>::TSimd& u_back_3, + Tindex& n3, nsL1::vector<L1TrackPar>::TSimd& T_3, L1Vector<L1HitIndex_t>& hitsl_3, L1Vector<L1HitIndex_t>& hitsm_3, + L1Vector<L1HitIndex_t>& hitsr_3, nsL1::vector<fvec>::TSimd& u_front_3, nsL1::vector<fvec>::TSimd& u_back_3, nsL1::vector<fvec>::TSimd& z_Pos_3, // nsL1::vector<fvec>::TSimd& dx_, // nsL1::vector<fvec>::TSimd& dy_, nsL1::vector<fvec>::TSimd& dv_, nsL1::vector<fvec>::TSimd& du_, nsL1::vector<fvec>::TSimd& timeR, nsL1::vector<fvec>::TSimd& timeER) { - THitI hitsl_2[fvecLen]; - THitI hitsm_2_tmp[fvecLen]; + L1HitIndex_t hitsl_2[fvecLen]; + L1HitIndex_t hitsm_2_tmp[fvecLen]; fvec fvec_0; L1TrackPar L1TrackPar_0; @@ -729,13 +729,13 @@ inline void L1Algo::f30( // input (sqrt(Pick_r22 * (T2.C11 + stam.XYInfo.C11)) + fMaxDZ * fabs(T2.ty))[i2_4] * iz, time, sqrt(timeError) * 5); - THitI irh = 0; - THitI Ntriplets = 0; + L1HitIndex_t irh = 0; + L1HitIndex_t Ntriplets = 0; int irh1 = -1; while (true) { if (fTrackingMode == kGlobal || fTrackingMode == kMcbm) { irh1++; - if ((THitI) irh1 >= (StsHitsUnusedStopIndex[istar] - StsHitsUnusedStartIndex[istar])) break; + if ((L1HitIndex_t) irh1 >= (StsHitsUnusedStopIndex[istar] - StsHitsUnusedStartIndex[istar])) break; irh = irh1; } else { @@ -952,8 +952,8 @@ inline void L1Algo::f31( // input /// Refit Triplets. inline void L1Algo::f32( // input // TODO not updated after gaps introduction - Tindex n3, int istal, nsL1::vector<L1TrackPar>::TSimd& T_3, L1Vector<THitI>& hitsl_3, L1Vector<THitI>& hitsm_3, - L1Vector<THitI>& hitsr_3, int nIterations) + Tindex n3, int istal, nsL1::vector<L1TrackPar>::TSimd& T_3, L1Vector<L1HitIndex_t>& hitsl_3, L1Vector<L1HitIndex_t>& hitsm_3, + L1Vector<L1HitIndex_t>& hitsr_3, int nIterations) { L1Fit fit; fit.SetParticleMass(fDefaultMass); @@ -976,7 +976,7 @@ inline void L1Algo::f32( // input // TODO not updated after gaps introduction fscal& qp0 = T3.qp[i3_4]; // prepare data - THitI ihit[NHits] = {(*RealIHitP)[hitsl_3[i3] + StsHitsUnusedStartIndex[ista[0]]], + L1HitIndex_t ihit[NHits] = {(*RealIHitP)[hitsl_3[i3] + StsHitsUnusedStartIndex[ista[0]]], (*RealIHitP)[hitsm_3[i3] + StsHitsUnusedStartIndex[ista[1]]], (*RealIHitP)[hitsr_3[i3] + StsHitsUnusedStartIndex[ista[2]]]}; @@ -1116,10 +1116,10 @@ inline void L1Algo::f32( // input // TODO not updated after gaps introduction inline void L1Algo::f4( // input - Tindex n3, int istal, int istam, int istar, nsL1::vector<L1TrackPar>::TSimd& T_3, L1Vector<THitI>& hitsl_3, - L1Vector<THitI>& hitsm_3, L1Vector<THitI>& hitsr_3, + Tindex n3, int istal, int istam, int istar, nsL1::vector<L1TrackPar>::TSimd& T_3, L1Vector<L1HitIndex_t>& hitsl_3, + L1Vector<L1HitIndex_t>& hitsm_3, L1Vector<L1HitIndex_t>& hitsr_3, // output - Tindex& nstaltriplets, L1Vector<THitI>* /*hitsn_3*/, L1Vector<THitI>* /*hitsr_5*/ + Tindex& nstaltriplets, L1Vector<L1HitIndex_t>* /*hitsn_3*/, L1Vector<L1HitIndex_t>* /*hitsr_5*/ ) { @@ -1131,7 +1131,7 @@ inline void L1Algo::f4( // input unsigned int Thread = 0; #endif // _OPENMP - THitI ihitl_priv = 0; + L1HitIndex_t ihitl_priv = 0; for (Tindex i3 = 0; i3 < n3; ++i3) { const Tindex i3_V = i3 / fvecLen; @@ -1142,9 +1142,9 @@ inline void L1Algo::f4( // input // select fscal& chi2 = T3.chi2[i3_4]; - const THitI ihitl = hitsl_3[i3] + StsHitsUnusedStartIndex[istal]; - const THitI ihitm = hitsm_3[i3] + StsHitsUnusedStartIndex[istam]; - const THitI ihitr = hitsr_3[i3] + StsHitsUnusedStartIndex[istar]; + const L1HitIndex_t ihitl = hitsl_3[i3] + StsHitsUnusedStartIndex[istal]; + const L1HitIndex_t ihitm = hitsm_3[i3] + StsHitsUnusedStartIndex[istam]; + const L1HitIndex_t ihitr = hitsr_3[i3] + StsHitsUnusedStartIndex[istar]; L1_ASSERT(ihitl < StsHitsUnusedStopIndex[istal], ihitl << " < " << StsHitsUnusedStopIndex[istal]); L1_ASSERT(ihitm < StsHitsUnusedStopIndex[istam], ihitm << " < " << StsHitsUnusedStopIndex[istam]); L1_ASSERT(ihitr < StsHitsUnusedStopIndex[istar], ihitr << " < " << StsHitsUnusedStopIndex[istar]); @@ -1264,9 +1264,9 @@ inline void L1Algo::f5( // input unsigned char level = 0; // float chi2 = trip->GetChi2(); - THitI ihitl = trip.GetLHit(); - THitI ihitm = trip.GetMHit(); - THitI ihitr = trip.GetRHit(); + L1HitIndex_t ihitl = trip.GetLHit(); + L1HitIndex_t ihitm = trip.GetMHit(); + L1HitIndex_t ihitr = trip.GetRHit(); L1_ASSERT(ihitl < StsHitsUnusedStopIndex[istal], ihitl << " < " << StsHitsUnusedStopIndex[istal]); L1_ASSERT(ihitm < StsHitsUnusedStopIndex[istam], ihitm << " < " << StsHitsUnusedStopIndex[istam]); L1_ASSERT(ihitr < StsHitsUnusedStopIndex[istar], ihitr << " < " << StsHitsUnusedStopIndex[istar]); @@ -1318,8 +1318,8 @@ inline void L1Algo::DupletsStaPort( /// input: int istal, int istam, Tindex ip, L1Vector<Tindex>& n_g, Tindex* portionStopIndex_, /// output: - L1TrackPar* T_1, L1FieldRegion* fld_1, THitI* hitsl_1, L1Vector<char>& lmDuplets, Tindex& n_2, L1Vector<THitI>& i1_2, - L1Vector<THitI>& hitsm_2 + L1TrackPar* T_1, L1FieldRegion* fld_1, L1HitIndex_t* hitsl_1, L1Vector<char>& lmDuplets, Tindex& n_2, L1Vector<L1HitIndex_t>& i1_2, + L1Vector<L1HitIndex_t>& hitsm_2 /// ) { @@ -1381,7 +1381,7 @@ inline void L1Algo::DupletsStaPort( // TODO: repalce with constexpr if (C++17) (S.Zharko) #ifdef DOUB_PERFORMANCE - L1Vector<THitI> hitsl_2("L1CATrackFinder::hitsl_2"); + L1Vector<L1HitIndex_t> hitsl_2("L1CATrackFinder::hitsl_2"); #endif // DOUB_PERFORMANCE f20( // input @@ -1398,12 +1398,12 @@ inline void L1Algo::DupletsStaPort( hitsm_2[i] << " " << StsHitsUnusedStopIndex[istam] - StsHitsUnusedStartIndex[istam]); #ifdef DOUB_PERFORMANCE - THitI* RealIHitL = &((*RealIHitP)[StsHitsUnusedStartIndex[istal]]); - THitI* RealIHitM = &((*RealIHitP)[StsHitsUnusedStartIndex[istam]]); + L1HitIndex_t* RealIHitL = &((*RealIHitP)[StsHitsUnusedStartIndex[istal]]); + L1HitIndex_t* RealIHitM = &((*RealIHitP)[StsHitsUnusedStartIndex[istam]]); for (Tindex i = 0; i < n2; ++i) { // int i_4 = i%4; // int i_V = i/4; - THitI iHits[2] = {RealIHitL[hitsl_2[i]], RealIHitM[hitsm_2[i]]}; + L1HitIndex_t iHits[2] = {RealIHitL[hitsl_2[i]], RealIHitM[hitsm_2[i]]}; fL1Eff_doublets->AddOne(iHits); } #endif // DOUB_PERFORMANCE @@ -1421,9 +1421,9 @@ L1Algo::TripletsStaPort( /// creates triplets: input: @istal - start station nu /// @&n_2 - number of douplets,@&i1_2 - index of 1st hit in portion indexed by doublet index, @&hitsm_2 - index of middle hit in hits array indexed by doublet index - Tindex& nstaltriplets, L1TrackPar* T_1, L1FieldRegion* fld_1, THitI* hitsl_1, + Tindex& nstaltriplets, L1TrackPar* T_1, L1FieldRegion* fld_1, L1HitIndex_t* hitsl_1, - Tindex& n_2, L1Vector<THitI>& i1_2, L1Vector<THitI>& hitsm_2, + Tindex& n_2, L1Vector<L1HitIndex_t>& i1_2, L1Vector<L1HitIndex_t>& hitsm_2, const L1Vector<char>& mrDuplets @@ -1453,9 +1453,9 @@ L1Algo::TripletsStaPort( /// creates triplets: input: @istal - start station nu #endif nsL1::vector<L1TrackPar>::TSimd& T_3 = fT_3[Thread]; - L1Vector<THitI>& hitsl_3 = fhitsl_3[Thread]; - L1Vector<THitI>& hitsm_3 = fhitsm_3[Thread]; - L1Vector<THitI>& hitsr_3 = fhitsr_3[Thread]; + L1Vector<L1HitIndex_t>& hitsl_3 = fhitsl_3[Thread]; + L1Vector<L1HitIndex_t>& hitsm_3 = fhitsm_3[Thread]; + L1Vector<L1HitIndex_t>& hitsr_3 = fhitsr_3[Thread]; nsL1::vector<fvec>::TSimd& u_front3 = fu_front3[Thread]; nsL1::vector<fvec>::TSimd& u_back3 = fu_back3[Thread]; nsL1::vector<fvec>::TSimd& z_pos3 = fz_pos3[Thread]; @@ -1523,13 +1523,13 @@ L1Algo::TripletsStaPort( /// creates triplets: input: @istal - start station nu // f32( n3, istal, _RealIHit, T_3, hitsl_3, hitsm_3, hitsr_3, 0 ); #ifdef TRIP_PERFORMANCE - THitI* RealIHitL = &((*RealIHitP)[StsHitsUnusedStartIndex[istal]]); - THitI* RealIHitM = &((*RealIHitP)[StsHitsUnusedStartIndex[istam]]); - THitI* RealIHitR = &((*RealIHitP)[StsHitsUnusedStartIndex[istar]]); + L1HitIndex_t* RealIHitL = &((*RealIHitP)[StsHitsUnusedStartIndex[istal]]); + L1HitIndex_t* RealIHitM = &((*RealIHitP)[StsHitsUnusedStartIndex[istam]]); + L1HitIndex_t* RealIHitR = &((*RealIHitP)[StsHitsUnusedStartIndex[istar]]); for (Tindex i = 0; i < n3; ++i) { Tindex i_4 = i % 4; Tindex i_V = i / 4; - THitI iHits[3] = {RealIHitL[hitsl_3[i]], RealIHitM[hitsm_3[i]], RealIHitR[hitsr_3[i]]}; + L1HitIndex_t iHits[3] = {RealIHitL[hitsl_3[i]], RealIHitM[hitsm_3[i]], RealIHitR[hitsr_3[i]]}; #ifdef PULLS if (fL1Eff_triplets->AddOne(iHits)) fL1Pulls->AddOne(T_3[i_V], i_4, iHits[2]); #else @@ -1565,21 +1565,14 @@ L1Algo::TripletsStaPort( /// creates triplets: input: @istal - start station nu // { // omp_destroy_lock(&Occupied); // } -///********************************************************************************************************************** -///********************************************************************************************************************** -///********************************************************************************************************************** -///* * -///* * -///* * -///* CATrackFinder procedure * -///* * -///* * -///* * -///********************************************************************************************************************** -///********************************************************************************************************************** -///********************************************************************************************************************** +/***********************************************************************************************//** + * * + * ------ CATrackFinder procedure ------ * + * * + **************************************************************************************************/ + void L1Algo::CATrackFinder() { @@ -1587,6 +1580,9 @@ void L1Algo::CATrackFinder() omp_set_num_threads(fNThreads); #endif + /*******************************//** + * Performance monitors setting + **********************************/ #ifdef PULLS static L1AlgoPulls* l1Pulls_ = new L1AlgoPulls(); @@ -1644,9 +1640,7 @@ void L1Algo::CATrackFinder() static L1CATFIterTimerInfo stat_gti = gti; static L1CATFTimerInfo stat_ti = ti; - - -#endif +#endif // XXX #ifdef COUNTERS static Tindex stat_nStartHits = 0; @@ -1661,6 +1655,10 @@ void L1Algo::CATrackFinder() static Tindex stat_nTrCandidates[fNFindIterations] = {0}; #endif + /********************************//** + * CATrackFinder routine setting + ***********************************/ + RealIHitP = &RealIHit_v; RealIHitPBuf = &RealIHit_v_buf; vStsHitsUnused = &vStsDontUsedHits_B; /// array of hits used on current iteration @@ -1687,10 +1685,9 @@ void L1Algo::CATrackFinder() float lasttime = 0; float starttime = std::numeric_limits<float>::max(); - ; for (int ist = 0; ist < NStations; ++ist) - for (THitI ih = StsHitsStartIndex[ist]; ih < StsHitsStopIndex[ist]; ++ih) { + for (L1HitIndex_t ih = StsHitsStartIndex[ist]; ih < StsHitsStopIndex[ist]; ++ih) { const float& time = (*vStsHits)[ih].t; if ((lasttime < time) && (!std::isinf(time))) lasttime = time; @@ -1701,8 +1698,7 @@ void L1Algo::CATrackFinder() #ifdef XXX c_time.Start(); c_timerG.Start(); - -#endif +#endif // XXX float yStep = 1.5 / sqrt(nDontUsedHits); // empirics. 0.01*sqrt(2374) ~= 0.5 @@ -1739,19 +1735,17 @@ void L1Algo::CATrackFinder() for (int ist = 0; ist < NStations; ++ist) - for (THitI ih = StsHitsStartIndex[ist]; ih < StsHitsStopIndex[ist]; ++ih) { + for (L1HitIndex_t ih = StsHitsStartIndex[ist]; ih < StsHitsStopIndex[ist]; ++ih) { L1Hit& h = (*vStsHits)[ih]; SetFUnUsed((*fStripFlag)[h.f]); SetFUnUsed((*fStripFlag)[h.b]); } for (int ista = 0; ista < NStations; ++ista) { - - #ifdef _OPENMP #pragma omp parallel for schedule(dynamic, 5) #endif - for (THitI ih = StsHitsStartIndex[ista]; ih < StsHitsStopIndex[ista]; ++ih) { + for (L1HitIndex_t ih = StsHitsStartIndex[ista]; ih < StsHitsStopIndex[ista]; ++ih) { CreateHitPoint(vStsDontUsedHits_Buf[ih], vStsDontUsedHitsxy_B[ih]); } } @@ -1769,6 +1763,10 @@ void L1Algo::CATrackFinder() TStopwatch c_time1; c_time1.Start(); + /********************************//** + * Loop over tracking iterations + ***********************************/ + // ---- Loop over Track Finder iterations ----------------------------------------------------------------// L1ASSERT(0, fNFindIterations == fParameters.CAIterationsContainer().size()); @@ -1793,7 +1791,7 @@ void L1Algo::CATrackFinder() #endif if (isec != 0) { - L1Vector<THitI>* RealIHitPTmp = RealIHitP; + L1Vector<L1HitIndex_t>* RealIHitPTmp = RealIHitP; RealIHitP = RealIHitPBuf; RealIHitPBuf = RealIHitPTmp; @@ -1807,7 +1805,7 @@ void L1Algo::CATrackFinder() } // TODO: Replace NStations with fInitManager.GetStationsNumber() (S.Zharko) for (int ist = 0; ist < NStations; ++ist) { - for (THitI ih = StsHitsUnusedStartIndex[ist]; ih < StsHitsUnusedStopIndex[ist]; ++ih) { + for (L1HitIndex_t ih = StsHitsUnusedStartIndex[ist]; ih < StsHitsUnusedStopIndex[ist]; ++ih) { //SG!! TripForHit[0][ih] = 0; TripForHit[1][ih] = 0; @@ -2000,18 +1998,18 @@ void L1Algo::CATrackFinder() const Tindex vPortion = Portion / fvecLen; L1TrackPar T_1[vPortion]; L1FieldRegion fld_1[vPortion]; - THitI hitsl_1[Portion]; + L1HitIndex_t hitsl_1[Portion]; L1TrackPar TG_1[vPortion]; L1FieldRegion fldG_1[vPortion]; - THitI hitslG_1[Portion]; + L1HitIndex_t hitslG_1[Portion]; - L1Vector<THitI> hitsm_2("L1CATrackFinder::hitsm_2"); /// middle hits indexed by number of doublets in portion(i2) - L1Vector<THitI> i1_2( + L1Vector<L1HitIndex_t> hitsm_2("L1CATrackFinder::hitsm_2"); /// middle hits indexed by number of doublets in portion(i2) + L1Vector<L1HitIndex_t> i1_2( "L1CATrackFinder::i1_2"); /// index in portion of singlets(i1) indexed by index in portion of doublets(i2) - L1Vector<THitI> hitsmG_2("L1CATrackFinder::hitsmG_2"); /// middle hits indexed by number of doublets in portion(i2) - L1Vector<THitI> i1G_2( + L1Vector<L1HitIndex_t> hitsmG_2("L1CATrackFinder::hitsmG_2"); /// middle hits indexed by number of doublets in portion(i2) + L1Vector<L1HitIndex_t> i1G_2( "L1CATrackFinder::i1G_2"); /// index in portion of singlets(i1) indexed by index in portion of doublets(i2) L1Vector<char> lmDuplets[L1Parameters::kMaxNstations] { "L1CATrackFinder::lmDuplets"}; // is exist a doublet started from indexed by left hit @@ -2260,7 +2258,7 @@ void L1Algo::CATrackFinder() bool check = 1; - for (L1Vector<THitI>::iterator phitIt = tr.fStsHits.begin(); /// used strips are marked + for (L1Vector<L1HitIndex_t>::iterator phitIt = tr.fStsHits.begin(); /// used strips are marked phitIt != tr.fStsHits.end(); ++phitIt) { const L1Hit& h = (*vStsHits)[*phitIt]; #ifdef _OPENMP @@ -2342,7 +2340,7 @@ void L1Algo::CATrackFinder() bool check = 1; if (fTrackCandidates[i][iCandidate].CandIndex != -1) { - for (L1Vector<THitI>::iterator phIt = tr.fStsHits.begin(); /// used strips are marked + for (L1Vector<L1HitIndex_t>::iterator phIt = tr.fStsHits.begin(); /// used strips are marked phIt != tr.fStsHits.end(); ++phIt) { const L1Hit& h = (((*vStsHits))[*phIt]); if (((fStripToTrackB)[h.b] != tr.CandIndex) || ((fStripToTrack)[h.f] != tr.CandIndex)) { @@ -2376,7 +2374,7 @@ void L1Algo::CATrackFinder() #endif - for (L1Vector<THitI>::iterator phIt = tr.fStsHits.begin(); /// used strips are marked + for (L1Vector<L1HitIndex_t>::iterator phIt = tr.fStsHits.begin(); /// used strips are marked phIt != tr.fStsHits.end(); ++phIt) { L1Hit& h = (*vStsHits)[*phIt]; @@ -2461,7 +2459,7 @@ void L1Algo::CATrackFinder() int start = StsHitsUnusedStartIndex[ista]; int Nelements = StsHitsUnusedStopIndex[ista] - start; L1Hit* staHits = nullptr; // to avoid out-of-range error in ..[start] - THitI* staHitIndices = nullptr; + L1HitIndex_t* staHitIndices = nullptr; L1HitPoint* staHitPoints = nullptr; if (Nelements > 0) { staHits = &((*vStsHitsUnused)[start]); @@ -2576,7 +2574,7 @@ void L1Algo::CATrackFinder() NBranches += stat_max_n_branches; BranchSize += stat_max_BranchSize; NTracks += fTracks.size(); - TrackSize += sizeof(L1Track)*fTracks.size() + sizeof(THitI)*fRecoHits.size(); + TrackSize += sizeof(L1Track)*fTracks.size() + sizeof(L1HitIndex_t)*fRecoHits.size(); int k = 1024*NTimes; cout<<"L1 Event size: \n" @@ -2640,8 +2638,8 @@ inline void L1Algo::CAFindTrack(int ista, L1Branch& best_tr, unsigned char& best { // -- finish with current track // add rest of hits - const THitI& ihitm = curr_trip->GetMHit(); - const THitI& ihitr = curr_trip->GetRHit(); + const L1HitIndex_t& ihitm = curr_trip->GetMHit(); + const L1HitIndex_t& ihitr = curr_trip->GetRHit(); if (!GetFUsed((*fStripFlag)[(*vStsHitsUnused)[ihitm].f] | (*fStripFlag)[(*vStsHitsUnused)[ihitm].b])) { diff --git a/reco/L1/L1Algo/L1Def.h b/reco/L1/L1Algo/L1Def.h index f60d2607d534b6c44dbca71b877671c08ce4ba11..0b4e6f0f97d3df58c627fbff769dfdd9048d66a5 100644 --- a/reco/L1/L1Algo/L1Def.h +++ b/reco/L1/L1Algo/L1Def.h @@ -49,6 +49,8 @@ T finite(T x) #if defined(NDEBUG) || defined(L1_NO_ASSERT) #define L1_ASSERT(v, msg) #define L1_assert(v) +// Prints expression value to the std::cout +#define L1_SHOW(expr) #else #define L1_ASSERT(v, msg) \ if (v) {} \ @@ -58,9 +60,14 @@ T finite(T x) abort(); \ } #define L1_assert(v) assert(v) +#define L1_SHOW(expr) \ + std::cout << __FILE__ << ":" << __LINE__ << ": \033[01;38;5;208m" << (#expr) << "\033[0m = " << (expr) << "\n" #endif typedef int index_type; + + + #endif diff --git a/reco/L1/L1Algo/L1Grid.cxx b/reco/L1/L1Algo/L1Grid.cxx index 3de8de7d235e97c0ad3628fb761e107f0bc550ba..071d3804c80eb47156f83d63614296a4ddf28d36 100644 --- a/reco/L1/L1Algo/L1Grid.cxx +++ b/reco/L1/L1Algo/L1Grid.cxx @@ -37,7 +37,7 @@ inline void memset(T* dest, T i, size_t num) } -void L1Grid::UpdateIterGrid(unsigned int Nelements, L1Hit* hits, L1Vector<THitI>* indicesBuf, THitI* indices, +void L1Grid::UpdateIterGrid(unsigned int Nelements, L1Hit* hits, L1Vector<L1HitIndex_t>* indicesBuf, L1HitIndex_t* indices, L1Vector<L1Hit>* hits2, L1Vector<L1HitPoint>* pointsBuf, L1HitPoint* points, int& NHitsOnStation, char iS, L1Algo& Algo, const L1Vector<unsigned char>* vSFlag) { @@ -50,14 +50,14 @@ void L1Grid::UpdateIterGrid(unsigned int Nelements, L1Hit* hits, L1Vector<THitI> #ifdef _OPENMP #pragma omp parallel for schedule(dynamic, 250) firstprivate(xs, ys) #endif - for (THitI x = 0; x < Nelements; x++) { + for (L1HitIndex_t x = 0; x < Nelements; x++) { const L1Hit& hit = hits[x]; if (!L1Algo::GetFUsed((*vSFlag)[hit.f] | (*vSFlag)[hit.b])) { Algo.GetHitCoor(hit, xs, ys, iS); - const THitI& bin = GetBinBounded(xs, ys, hit.t); + const L1HitIndex_t& bin = GetBinBounded(xs, ys, hit.t); fHitsInBin[x] = fFirstHitInBin[bin + 1]; #ifdef _OPENMP @@ -93,18 +93,18 @@ void L1Grid::UpdateIterGrid(unsigned int Nelements, L1Hit* hits, L1Vector<THitI> #ifdef _OPENMP #pragma omp parallel for schedule(dynamic, 250) firstprivate(xs, ys) #endif - for (THitI x = 0; x < Nelements; x++) { + for (L1HitIndex_t x = 0; x < Nelements; x++) { const L1Hit& hit = hits[x]; if (!L1Algo::GetFUsed((*vSFlag)[hit.f] | (*vSFlag)[hit.b])) { Algo.GetHitCoor(hit, xs, ys, iS); - const THitI& bin = GetBinBounded(xs, ys, hit.t); + const L1HitIndex_t& bin = GetBinBounded(xs, ys, hit.t); { - const THitI& index1 = fHitsInBin[x] + fFirstHitInBin[bin]; + const L1HitIndex_t& index1 = fHitsInBin[x] + fFirstHitInBin[bin]; (*hits2)[index1 + NHitsOnStation] = hits[x]; (*indicesBuf)[index1 + NHitsOnStation] = indices[x]; @@ -134,8 +134,8 @@ void L1Grid::AllocateMemory(int NThreads) // { // delete[] fFirstHitInBinArray[i]; // delete[] fFirstHitInBin[i]; - // fFirstHitInBinArray[i] = new THitI[binsGrid];// TODO calculate safe number of bins - // fFirstHitInBin[i] = new THitI[binsGrid]; + // fFirstHitInBinArray[i] = new L1HitIndex_t[binsGrid];// TODO calculate safe number of bins + // fFirstHitInBin[i] = new L1HitIndex_t[binsGrid]; // } // fOffsets.resize(fNThreads +1, 0); // fNumberHitsInBin.resize(binsGrid, 0); @@ -165,8 +165,8 @@ void L1Grid::BuildBins(float yMin, float yMax, float zMin, float zMax, float tMi } -void L1Grid::StoreHits(THitI nhits, const L1Hit* hits, char iS, L1Algo& Algo, THitI n, L1Hit* hitsBuf1, - const L1Hit* hits1, THitI* indices1) +void L1Grid::StoreHits(L1HitIndex_t nhits, const L1Hit* hits, char iS, L1Algo& Algo, L1HitIndex_t n, L1Hit* hitsBuf1, + const L1Hit* hits1, L1HitIndex_t* indices1) { fscal xs = 0; @@ -177,7 +177,7 @@ void L1Grid::StoreHits(THitI nhits, const L1Hit* hits, char iS, L1Algo& Algo, TH #ifdef _OPENMP #pragma omp parallel for firstprivate(xs, ys) #endif - for (THitI x = 0; x < nhits; x++) { + for (L1HitIndex_t x = 0; x < nhits; x++) { Algo.GetHitCoor((hits)[x], xs, ys, iS); @@ -214,16 +214,16 @@ void L1Grid::StoreHits(THitI nhits, const L1Hit* hits, char iS, L1Algo& Algo, TH #pragma omp parallel for firstprivate(xs, ys) - for (THitI x = 0; x < nhits; x++) { + for (L1HitIndex_t x = 0; x < nhits; x++) { Algo.GetHitCoor((hits1)[x], xs, ys, iS); - const THitI& bin = GetBinBounded(xs, ys, (hits1)[x].t); + const L1HitIndex_t& bin = GetBinBounded(xs, ys, (hits1)[x].t); { - const THitI& index1 = fHitsInBin[x] + fFirstHitInBin[bin]; + const L1HitIndex_t& index1 = fHitsInBin[x] + fFirstHitInBin[bin]; (hitsBuf1)[index1] = hits[x]; diff --git a/reco/L1/L1Algo/L1Grid.h b/reco/L1/L1Algo/L1Grid.h index 89a38a8a1cc35b8d9281b14e0daccb181ecec059..ae31722216605b79e06f8296294e6a616b6a3a47 100644 --- a/reco/L1/L1Algo/L1Grid.h +++ b/reco/L1/L1Algo/L1Grid.h @@ -43,21 +43,21 @@ public: ~L1Grid() = default; - void StoreHits(THitI nhits, const L1Hit* hits, char iS, L1Algo& Algo, THitI n, L1Hit* hitsBuf1, const L1Hit* hits1, - THitI* indices1); + void StoreHits(L1HitIndex_t nhits, const L1Hit* hits, char iS, L1Algo& Algo, L1HitIndex_t n, L1Hit* hitsBuf1, const L1Hit* hits1, + L1HitIndex_t* indices1); void CreatePar0(float yMin, float yMax, float zMin, float zMax, float sy, float sz); void BuildBins(float yMin, float yMax, float zMin, float zMax, float tMin, float tMax, float sy, float sz, float st); - void HitsSort(L1HitPoint* pointsBuf, L1Hit* hitsBuf, const L1Hit* hits, THitI* indices, THitI* indicesBuf, - L1HitPoint* points, THitI n, THitI nhits, char iS, L1Algo& Algo); + void HitsSort(L1HitPoint* pointsBuf, L1Hit* hitsBuf, const L1Hit* hits, L1HitIndex_t* indices, L1HitIndex_t* indicesBuf, + L1HitPoint* points, L1HitIndex_t n, L1HitIndex_t nhits, char iS, L1Algo& Algo); void Initial1(int NThreads); void AllocateMemory(int NThreads); void Create(float yMin, float yMax, float zMin, float zMax, float sy, float sz); - void Fill(const L1HitPoint* points, THitI n); // call after sort - void FillPar(const L1HitPoint* points, THitI n); + void Fill(const L1HitPoint* points, L1HitIndex_t n); // call after sort + void FillPar(const L1HitPoint* points, L1HitIndex_t n); int GetBin(float Y, float Z) const; @@ -84,7 +84,7 @@ public: unsigned short Nz() const { return fNz; } unsigned short Nt() const { return fNt; } - THitI FirstHitInBin(unsigned int i) const + L1HitIndex_t FirstHitInBin(unsigned int i) const { if (i < (fN + 1)) return fFirstHitInBin[i]; else @@ -100,7 +100,7 @@ public: // }; - void UpdateIterGrid(unsigned int Nelements, L1Hit* hits, L1Vector<THitI>* indicesBuf, THitI* indices, + void UpdateIterGrid(unsigned int Nelements, L1Hit* hits, L1Vector<L1HitIndex_t>* indicesBuf, L1HitIndex_t* indices, L1Vector<L1Hit>* hits2, L1Vector<L1HitPoint>* pointsBuf, L1HitPoint* points, int& NHitsOnStation, char iS, L1Algo& Algo, const L1Vector<unsigned char>* vSFlag); @@ -119,8 +119,8 @@ private: int fBinInGrid {0}; unsigned short fNThreads {0}; - L1Vector<THitI> fFirstHitInBin {"L1Grid::fFirstHitInBin"}; - L1Vector<THitI> fHitsInBin {"L1Grid::fHitsInBin"}; + L1Vector<L1HitIndex_t> fFirstHitInBin {"L1Grid::fFirstHitInBin"}; + L1Vector<L1HitIndex_t> fHitsInBin {"L1Grid::fHitsInBin"}; // vector <omp_lock_t> lock; }; diff --git a/reco/L1/L1Algo/L1Hit.h b/reco/L1/L1Algo/L1Hit.h index 4852b0db033c99b1ba3b23cd259cea320493c1c3..dc18c3043ad34fb326765583f5eee4fe343d2688 100644 --- a/reco/L1/L1Algo/L1Hit.h +++ b/reco/L1/L1Algo/L1Hit.h @@ -12,23 +12,27 @@ #ifndef L1Hit_h #define L1Hit_h -typedef unsigned /*short*/ int THitI; // hit index type -typedef unsigned /*short*/ int TStripI; // strip index type +using L1HitIndex_t = unsigned /*short*/ int; ///> Index of L1Hit +using L1StripIndex_t = unsigned /*short*/ int; ///> Index of the station strip + +/// TODO: replace typedef with using (C++11) (S.Zharko) +/// TODO: change naming: THitI -> L1HitIndex_t, TStripI -> L1StripIndex_t (S.Zharko) + /// /// L1Hit class describes a generic hit for CA tracker /// struct L1Hit { - TStripI f = 0; // front strip index - TStripI b = 0; // back strip index - float u = 0.f; // measured U coordinate - float v = 0.f; // measured V coordinate - float t = 0.f; // measured time - float z = 0.f; // fixed Z coordinate - float du = 0.f; // mean squared error of u - float dv = 0.f; // mean squared error of v - float dt = 0.f; // mean squared error of t - int ID = 0; // TODO: check if this ID is redundant + L1StripIndex_t f {0}; ///> front strip index + L1StripIndex_t b {0}; ///> back strip index + float u {0.f}; ///> measured U coordinate + float v {0.f}; ///> measured V coordinate + float t {0.f}; ///> measured time + float z {0.f}; ///> fixed Z coordinate + float du {0.f}; ///> mean squared error of u + float dv {0.f}; ///> mean squared error of v + float dt {0.f}; ///> mean squared error of t + int ID {0}; ///> TODO: check if this ID is redundant }; #endif diff --git a/reco/L1/L1Algo/L1HitArea.h b/reco/L1/L1Algo/L1HitArea.h index 6d3fda118c9e1859c92b13ff3f23956953422b28..ea8f248147fe54358fbf9949647853394bd14cf8 100644 --- a/reco/L1/L1Algo/L1HitArea.h +++ b/reco/L1/L1Algo/L1HitArea.h @@ -19,7 +19,7 @@ public: * look up the next hit in the requested area. * Sets h to the coordinates and returns the index for the hit data */ - bool GetNext(THitI& i); + bool GetNext(L1HitIndex_t& i); protected: const L1Grid& fGrid; @@ -28,8 +28,8 @@ protected: unsigned short fBDY; // Y distance of bin indexes unsigned int fIndYmin; // minimum index for unsigned short fIz; // current Z bin index (incremented while iterating) - THitI fHitYlst; // last possible hit index in current z-line - THitI fIh; // hit index iterating inside the bins + L1HitIndex_t fHitYlst; // last possible hit index in current z-line + L1HitIndex_t fIh; // hit index iterating inside the bins int fNy; // Number of bins in Y direction }; @@ -64,7 +64,7 @@ inline L1HitArea::L1HitArea(const L1Grid& grid, float y, float z, float dy, floa fHitYlst = fGrid.FirstHitInBin(fIndYmin + fBDY); } -inline bool L1HitArea::GetNext(THitI& i) +inline bool L1HitArea::GetNext(L1HitIndex_t& i) { bool yIndexOutOfRange = fIh >= fHitYlst; // current y is not in the area bool nextZIndexOutOfRange = (fIz >= fBZmax); // there isn't any new z-line @@ -105,7 +105,7 @@ public: * look up the next hit in the requested area. * Sets h to the coordinates and returns the index for the hit data */ - bool GetNext(THitI& i); + bool GetNext(L1HitIndex_t& i); protected: const L1Grid& fGrid; @@ -114,8 +114,8 @@ protected: unsigned short fBDY; // Y distance of bin indexes unsigned int fIndYmin; // minimum index for unsigned short fIz; // current Z bin index (incremented while iterating) - THitI fHitYlst; // last possible hit index in current z-line - THitI fIh; // hit index iterating inside the bins + L1HitIndex_t fHitYlst; // last possible hit index in current z-line + L1HitIndex_t fIh; // hit index iterating inside the bins int fNy; // Number of bins in Y direction int fNz; @@ -176,7 +176,7 @@ inline L1HitAreaTime::L1HitAreaTime(const L1Grid& grid, float y, float z, float fHitYlst = fGrid.FirstHitInBin(fIndYmin + fBDY); } -inline bool L1HitAreaTime::GetNext(THitI& i) +inline bool L1HitAreaTime::GetNext(L1HitIndex_t& i) { bool yIndexOutOfRange = fIh >= fHitYlst; // current y is not in the area bool nextZIndexOutOfRange = (fIz >= fBZmax); // there isn't any new z-line diff --git a/reco/L1/L1Algo/L1HitsSortHelper.cxx b/reco/L1/L1Algo/L1HitsSortHelper.cxx index a0af17682b81969de1c84de86477554abeb449c0..8e2f7e9433b9f1a46b85ab9cf92bdc3731b30e7b 100644 --- a/reco/L1/L1Algo/L1HitsSortHelper.cxx +++ b/reco/L1/L1Algo/L1HitsSortHelper.cxx @@ -13,8 +13,8 @@ using std::vector; -L1HitsSortHelper::L1HitsSortHelper(vector<L1Hit>& hits, vector<L1HitPoint>& points, vector<THitI>& indices, - const L1Grid* grid, THitI* iStart, THitI* iStop, int nStations, int nDontUsedHits) +L1HitsSortHelper::L1HitsSortHelper(vector<L1Hit>& hits, vector<L1HitPoint>& points, vector<L1HitIndex_t>& indices, + const L1Grid* grid, L1HitIndex_t* iStart, L1HitIndex_t* iStop, int nStations, int nDontUsedHits) : fD() , fHits(hits) , fPoints(points) @@ -30,7 +30,7 @@ L1HitsSortHelper::L1HitsSortHelper(vector<L1Hit>& hits, vector<L1HitPoint>& poin fD.resize(NHits); //float x,y=0; for (int iS = 0; iS < fNStations; ++iS) - for (THitI i = fStsHitsUnusedStartIndex[iS]; i < fStsHitsUnusedStopIndex[iS]; i++) { + for (L1HitIndex_t i = fStsHitsUnusedStartIndex[iS]; i < fStsHitsUnusedStopIndex[iS]; i++) { fD[i].h = &(hits[i]); fD[i].p = &(points[i]); fD[i].i = indices[i]; diff --git a/reco/L1/L1Algo/L1HitsSortHelper.h b/reco/L1/L1Algo/L1HitsSortHelper.h index 554a324cf09c2a69aa06001873ac675ac4868754..6461be2cab9d8e5bb6ac591d1fcc50c078d68d3b 100644 --- a/reco/L1/L1Algo/L1HitsSortHelper.h +++ b/reco/L1/L1Algo/L1HitsSortHelper.h @@ -18,7 +18,7 @@ struct L1HitsSortHelperData { L1Hit* h; L1HitPoint* p; unsigned int bin; - THitI i; + L1HitIndex_t i; static bool compare(const L1HitsSortHelperData& a, const L1HitsSortHelperData& b) { @@ -28,8 +28,8 @@ struct L1HitsSortHelperData { class L1HitsSortHelper { public: - L1HitsSortHelper(vector<L1Hit>& hits, vector<L1HitPoint>& points, vector<THitI>& indices, const L1Grid* grid, - THitI* iStart, THitI* iStop, int nStations, int nDontUsedHits); + L1HitsSortHelper(vector<L1Hit>& hits, vector<L1HitPoint>& points, vector<L1HitIndex_t>& indices, const L1Grid* grid, + L1HitIndex_t* iStart, L1HitIndex_t* iStop, int nStations, int nDontUsedHits); void Sort(); @@ -37,9 +37,9 @@ private: vector<L1HitsSortHelperData> fD; vector<L1Hit>& fHits; vector<L1HitPoint>& fPoints; - vector<THitI>& fIndices; + vector<L1HitIndex_t>& fIndices; const L1Grid* fGrid; - THitI *fStsHitsUnusedStartIndex, *fStsHitsUnusedStopIndex; + L1HitIndex_t *fStsHitsUnusedStartIndex, *fStsHitsUnusedStopIndex; int fNStations; int fnDontUsedHits; diff --git a/reco/L1/L1Algo/L1Station.cxx b/reco/L1/L1Algo/L1Station.cxx index 24195990585b5be2e041992e793e1cb05066866b..c6ca03183b26dc9fc554c5ee4423015b8ea45d03 100644 --- a/reco/L1/L1Algo/L1Station.cxx +++ b/reco/L1/L1Algo/L1Station.cxx @@ -65,10 +65,13 @@ std::string L1Station::ToString(int verbosityLevel, int indentLevel) const // TODO: probably we can have verbosity level and address for each underlying object (S.Zharko) aStream << indent << "Address: " << this << '\n'; } - aStream << indent << "Station type ID: " << std::setw(12) << std::setfill(' ') << type << '\n'; - aStream << indent << "If time info used: " << std::setw(12) << std::setfill(' ') << timeInfo << '\n'; - aStream << indent << "z position [cm]: " << std::setw(12) << std::setfill(' ') << z[0] << '\n'; - if (verbosityLevel > 0) { + if (verbosityLevel == 0) { + aStream << indent << "- L1Station {z [cm], typeID} = " << std::setw(12) << std::setfill(' ') << z[0] << ", " << std::setw(4) << std::setfill(' ') << type; + } + else { + aStream << indent << "Station type ID: " << std::setw(12) << std::setfill(' ') << type << '\n'; + aStream << indent << "If time info used: " << std::setw(12) << std::setfill(' ') << timeInfo << '\n'; + aStream << indent << "z position [cm]: " << std::setw(12) << std::setfill(' ') << z[0] << '\n'; aStream << indent << "Rmin [cm]: " << std::setw(12) << std::setfill(' ') << Rmin[0] << '\n'; aStream << indent << "Rmax [cm]: " << std::setw(12) << std::setfill(' ') << Rmax[0] << '\n'; aStream << materialInfo.ToString(indentLevel) << '\n'; diff --git a/reco/L1/L1Algo/L1TrackExtender.cxx b/reco/L1/L1Algo/L1TrackExtender.cxx index 4917b915cd47079d6bfa9037696bd136af686375..8d3bde8615c31f6e0caf8344379849a10a7399e4 100644 --- a/reco/L1/L1Algo/L1TrackExtender.cxx +++ b/reco/L1/L1Algo/L1TrackExtender.cxx @@ -33,7 +33,7 @@ void L1Algo::BranchFitterFast(const L1Branch& t, L1TrackPar& T, const bool dir, fit.SetParticleMass(GetDefaultParticleMass()); // get hits of current track - const L1Vector<THitI>& hits = t.fStsHits; // array of indeses of hits of current track + const L1Vector<L1HitIndex_t>& hits = t.fStsHits; // array of indeses of hits of current track const int nHits = t.NHits; const signed short int step = -2 * static_cast<int>(dir) + 1; // increment for station index @@ -196,7 +196,7 @@ void L1Algo::BranchFitter(const L1Branch& t, L1TrackPar& T, const bool dir, cons void L1Algo::FindMoreHits(L1Branch& t, L1TrackPar& T, const bool dir, const fvec qp0) // TODO take into account pipe { - L1Vector<THitI> newHits {"L1TrackExtender::newHits"}; + L1Vector<L1HitIndex_t> newHits {"L1TrackExtender::newHits"}; newHits.reserve(NStations); L1Fit fit; fit.SetParticleMass(GetDefaultParticleMass()); @@ -275,7 +275,7 @@ void L1Algo::FindMoreHits(L1Branch& t, L1TrackPar& T, const bool dir, (sqrt(fPickGather * (T.C11 + sta.XYInfo.C11)) + fMaxDZ * fabs(T.ty))[0] * iz, T.t[0], sqrt(T.C55[0])); - THitI ih = 0; + L1HitIndex_t ih = 0; while (area.GetNext(ih)) { ih += StsHitsUnusedStartIndex[ista]; diff --git a/reco/L1/L1Algo/L1Triplet.h b/reco/L1/L1Algo/L1Triplet.h index a97b47f3649e05c28391a240867440e3b914b0cf..681ce98e15cca0d88acb264cb9adf863e1db3245 100644 --- a/reco/L1/L1Algo/L1Triplet.h +++ b/reco/L1/L1Algo/L1Triplet.h @@ -46,9 +46,9 @@ public: void SetLevel(unsigned char Level) { fLevel = Level; } unsigned char GetLevel() const { return fLevel; } - THitI GetLHit() const { return fHitL; } - THitI GetMHit() const { return fHitM; } - THitI GetRHit() const { return fHitR; } + L1HitIndex_t GetLHit() const { return fHitL; } + L1HitIndex_t GetMHit() const { return fHitM; } + L1HitIndex_t GetRHit() const { return fHitR; } void SetNNeighbours(char n) { fNneighbours = n; } char GetNNeighbours() const { return fNneighbours; } @@ -83,9 +83,9 @@ private: fscal fCty = 0.f; // RMS of ty unsigned int fFirstNeighbour = 0; // ID of the first neighbouring triplet - THitI fHitL = 0; // left hit index (16b) in vStsHits array - THitI fHitM = 0; // middle hit index (16b) - THitI fHitR = 0; // right hit index (16b) + L1HitIndex_t fHitL = 0; // left hit index (16b) in vStsHits array + L1HitIndex_t fHitM = 0; // middle hit index (16b) + L1HitIndex_t fHitR = 0; // right hit index (16b) char fNneighbours = 0; // n of neighbouring triplets unsigned char fLevel = 0; // triplet level // == its possible position on the longest track candidate it belongs to. diff --git a/reco/L1/L1Algo/utils/L1AlgoDraw.cxx b/reco/L1/L1Algo/utils/L1AlgoDraw.cxx index 5427fc419695e4a0987db16519e81f0429b04100..b83b8eeeacd2116a9b9eec700a0357884db94966 100644 --- a/reco/L1/L1Algo/utils/L1AlgoDraw.cxx +++ b/reco/L1/L1Algo/utils/L1AlgoDraw.cxx @@ -235,7 +235,7 @@ void L1AlgoDraw::DrawRecoTracks() // CbmL1 &L1 = *CbmL1::Instance(); int curRecoHit = 0; - L1Vector<THitI>& recoHits = algo->fRecoHits; + L1Vector<L1HitIndex_t>& recoHits = algo->fRecoHits; for (vector<L1Track>::iterator it = algo->fTracks.begin(); it != algo->fTracks.end(); ++it) { L1Track& T = *it; int nHits = T.NHits; @@ -300,7 +300,7 @@ void L1AlgoDraw::DrawRecoTracks() XYZ->Update(); } -void L1AlgoDraw::DrawTriplets(vector<L1Triplet>& triplets, const THitI* realIHit) +void L1AlgoDraw::DrawTriplets(vector<L1Triplet>& triplets, const L1HitIndex_t* realIHit) { // vector <L1Triplet> triplets = algo->vTriplets; for (unsigned int iTrip = 0; iTrip < triplets.size(); iTrip++) { @@ -364,14 +364,14 @@ void L1AlgoDraw::DrawTriplet(int il, int im, int ir) marker.DrawMarker(lx[nHits - 1], ly[nHits - 1]); } -void L1AlgoDraw::DrawDoublets(vector<THitI>* Duplets_hits, map<THitI, THitI>* Duplets_start, const int /*MaxArrSize*/, - THitI* StsRestHitsStartIndex, unsigned int* realIHit) +void L1AlgoDraw::DrawDoublets(vector<L1HitIndex_t>* Duplets_hits, map<L1HitIndex_t, L1HitIndex_t>* Duplets_start, const int /*MaxArrSize*/, + L1HitIndex_t* StsRestHitsStartIndex, unsigned int* realIHit) { for (int iSta = 0; iSta < NStations - 1; iSta++) { const int firstHitOnSta = StsRestHitsStartIndex[iSta]; const int firstHitOnNextSta = StsRestHitsStartIndex[iSta + 1]; - THitI* staDupletsHits = &(Duplets_hits[iSta][0]); - map<THitI, THitI>& staDupletsStart = Duplets_start[iSta]; + L1HitIndex_t* staDupletsHits = &(Duplets_hits[iSta][0]); + map<L1HitIndex_t, L1HitIndex_t>& staDupletsStart = Duplets_start[iSta]; for (int iRestLHit = firstHitOnSta; iRestLHit < firstHitOnNextSta; iRestLHit++) { const int ilh = iRestLHit - firstHitOnSta; @@ -397,13 +397,13 @@ void L1AlgoDraw::DrawDoublets(vector<THitI>* Duplets_hits, map<THitI, THitI>* Du YX->Update(); }; -void L1AlgoDraw::DrawDoubletsOnSta(int iSta, THitI* Duplets_hits, THitI* Duplets_start, const int MaxArrSize, - THitI* StsRestHitsStartIndex, unsigned int* realIHit) +void L1AlgoDraw::DrawDoubletsOnSta(int iSta, L1HitIndex_t* Duplets_hits, L1HitIndex_t* Duplets_start, const int MaxArrSize, + L1HitIndex_t* StsRestHitsStartIndex, unsigned int* realIHit) { const int firstHitOnSta = StsRestHitsStartIndex[iSta]; const int firstHitOnNextSta = StsRestHitsStartIndex[iSta + 1]; - THitI* staDupletsHits = Duplets_hits + MaxArrSize * iSta; - THitI* staDupletsStart = Duplets_start + MaxArrSize * iSta; + L1HitIndex_t* staDupletsHits = Duplets_hits + MaxArrSize * iSta; + L1HitIndex_t* staDupletsStart = Duplets_start + MaxArrSize * iSta; for (int iRestLHit = firstHitOnSta; iRestLHit < firstHitOnNextSta; iRestLHit++) { const int ilh = iRestLHit - firstHitOnSta; @@ -659,7 +659,7 @@ void L1AlgoDraw::DrawInputHits() } // DrawInputHits -void L1AlgoDraw::DrawRestHits(THitI* StsRestHitsStartIndex, THitI* StsRestHitsStopIndex, unsigned int* realIHit) +void L1AlgoDraw::DrawRestHits(L1HitIndex_t* StsRestHitsStartIndex, L1HitIndex_t* StsRestHitsStopIndex, unsigned int* realIHit) { TLatex latex; @@ -687,7 +687,7 @@ void L1AlgoDraw::DrawRestHits(THitI* StsRestHitsStartIndex, THitI* StsRestHitsSt L1Station& st = vStations[ista]; Int_t n_poly = 0; Int_t n_poly_fake = 0; - for (THitI iRestHit = StsRestHitsStartIndex[ista]; iRestHit < StsRestHitsStopIndex[ista]; iRestHit++) { + for (L1HitIndex_t iRestHit = StsRestHitsStartIndex[ista]; iRestHit < StsRestHitsStopIndex[ista]; iRestHit++) { int ih = realIHit[iRestHit]; L1Hit& h = vStsHits[ih]; int iMC = CbmL1::Instance()->vHitMCRef[ih]; diff --git a/reco/L1/L1Algo/utils/L1AlgoDraw.h b/reco/L1/L1Algo/utils/L1AlgoDraw.h index bd678b94c4b996c9535d7377f5c9a0c04e2635cf..5a42880723a5efab4cd9d52de50800b8942918ad 100644 --- a/reco/L1/L1Algo/utils/L1AlgoDraw.h +++ b/reco/L1/L1Algo/utils/L1AlgoDraw.h @@ -31,15 +31,15 @@ public: void DrawMCTracks(); void DrawRecoTracks(); - void DrawTriplets(std::vector<L1Triplet>& triplets, const THitI* realIHit); - void DrawDoublets(std::vector<THitI>* Duplets_hits, std::map<THitI, THitI>* Duplets_start, const int MaxArrSize, - THitI* StsHitsStartIndex, unsigned int* realIHit); - void DrawDoubletsOnSta(int iSta, THitI* Duplets_hits, THitI* Duplets_start, const int MaxArrSize, - THitI* StsRestHitsStartIndex, unsigned int* realIHit); + void DrawTriplets(std::vector<L1Triplet>& triplets, const L1HitIndex_t* realIHit); + void DrawDoublets(std::vector<L1HitIndex_t>* Duplets_hits, std::map<L1HitIndex_t, L1HitIndex_t>* Duplets_start, const int MaxArrSize, + L1HitIndex_t* StsHitsStartIndex, unsigned int* realIHit); + void DrawDoubletsOnSta(int iSta, L1HitIndex_t* Duplets_hits, L1HitIndex_t* Duplets_start, const int MaxArrSize, + L1HitIndex_t* StsRestHitsStartIndex, unsigned int* realIHit); void DrawTarget(); void DrawInputHits(); // draw all hits, which TF have gotten - void DrawRestHits(THitI* StsRestHitsStartIndex, THitI* StsRestHitsStopIndex, + void DrawRestHits(L1HitIndex_t* StsRestHitsStartIndex, L1HitIndex_t* StsRestHitsStopIndex, unsigned int* realIHit); // draw only hits which leave on current iteration. void DrawInfo(); diff --git a/reco/L1/L1Algo/utils/L1AlgoEfficiencyPerformance.h b/reco/L1/L1Algo/utils/L1AlgoEfficiencyPerformance.h index dc62da303a2e1ed3dd52837a4b4444cd926240fe..7e7625e509d3fb51e7471c3d4d25be1f38e9ed6d 100644 --- a/reco/L1/L1Algo/utils/L1AlgoEfficiencyPerformance.h +++ b/reco/L1/L1Algo/utils/L1AlgoEfficiencyPerformance.h @@ -49,7 +49,7 @@ template<int NHits> class L1RTracklet : public L1Tracklet<NHits> { public: L1RTracklet() = default; - L1RTracklet(THitI* ih_) : L1Tracklet<NHits>() + L1RTracklet(L1HitIndex_t* ih_) : L1Tracklet<NHits>() { for (int iih = 0; iih < NHits; iih++) { i[iih] = ih_[iih]; @@ -71,7 +71,7 @@ public: } bool operator!=(const L1RTracklet<NHits>& a) { return !operator==(a); } - THitI i[NHits] {0}; // indices of left, middle and right hits + L1HitIndex_t i[NHits] {0}; // indices of left, middle and right hits }; // MC Tracklet @@ -120,7 +120,7 @@ public: L1AlgoEfficiencyPerformance() = default; void Init(); - bool AddOne(THitI* ih_); // add one recoTracklets. Return is it reconstructed or not + bool AddOne(L1HitIndex_t* ih_); // add one recoTracklets. Return is it reconstructed or not void CalculateEff(); void Print(); // Print efficiencies void Print(TString title = "Triplets performance statistic", @@ -215,7 +215,7 @@ void L1AlgoEfficiencyPerformance<NHits>::FillMC() template<int NHits> -bool L1AlgoEfficiencyPerformance<NHits>::AddOne(THitI* iHits) +bool L1AlgoEfficiencyPerformance<NHits>::AddOne(L1HitIndex_t* iHits) { L1RecoTracklet trlet(iHits); @@ -264,7 +264,7 @@ bool L1AlgoEfficiencyPerformance<NHits>::AddOne(THitI* iHits) recoTracklets.push_back(trlet); return (trlet.mcTrackId >= 0); -}; // inline bool L1AlgoEfficiencyPerformance::AddOne(THitI ihl, THitI ihm, THitI ihr) +}; // inline bool L1AlgoEfficiencyPerformance::AddOne(L1HitIndex_t ihl, L1HitIndex_t ihm, L1HitIndex_t ihr) template<int NHits> diff --git a/reco/L1/L1Algo/utils/L1AlgoPulls.cxx b/reco/L1/L1Algo/utils/L1AlgoPulls.cxx index 39a19f0348116fe678cc0feed389b7bebfeff5ba..a3e5707935ae0dd13035bf19c7e3866fa2d28997 100644 --- a/reco/L1/L1Algo/utils/L1AlgoPulls.cxx +++ b/reco/L1/L1Algo/utils/L1AlgoPulls.cxx @@ -99,13 +99,13 @@ void L1AlgoPulls::Init() } }; -// void L1AlgoPulls::AddVec(L1TrackPar& T_, THitI ih) +// void L1AlgoPulls::AddVec(L1TrackPar& T_, L1HitIndex_t ih) // { // for (int i = 0; i < fvecLen; i++) // AddOne(T_,i,ih); // } -void L1AlgoPulls::AddOne(L1TrackPar& T_, int i, THitI ih) +void L1AlgoPulls::AddOne(L1TrackPar& T_, int i, L1HitIndex_t ih) { fNAllPulls++; TL1TrackParameters T(T_, i); diff --git a/reco/L1/L1Algo/utils/L1AlgoPulls.h b/reco/L1/L1Algo/utils/L1AlgoPulls.h index 46065b8b284cbd57b1881d39af50c4ebc7830dfd..452f9c7114677108ecb12af8347231dbde37989c 100644 --- a/reco/L1/L1Algo/utils/L1AlgoPulls.h +++ b/reco/L1/L1Algo/utils/L1AlgoPulls.h @@ -83,8 +83,8 @@ public: void Init(); - // void AddVec(L1TrackPar& T, THitI ih); - void AddOne(L1TrackPar& T, int i, THitI ih); + // void AddVec(L1TrackPar& T, L1HitIndex_t ih); + void AddOne(L1TrackPar& T, int i, L1HitIndex_t ih); void Print(); // fast method to see pulls :) void Build(bool draw = 1); diff --git a/reco/L1/L1AlgoInputData.cxx b/reco/L1/L1AlgoInputData.cxx index cd782e207be131610bc9b8ecad797c167008e987..6b9e035a8efe3e9b18cac6e2faf4cd9e1ea1b1d0 100644 --- a/reco/L1/L1AlgoInputData.cxx +++ b/reco/L1/L1AlgoInputData.cxx @@ -29,8 +29,8 @@ void L1AlgoInputData::SetData( const vector< L1Hit > & StsHits_, const vector< L1Strip > & StsStripsB_, const vector< unsigned char > & SFlag_, const vector< unsigned char > & SFlagB_, - const THitI* StsHitsStartIndex_, - const THitI* StsHitsStopIndex_ ) + const L1HitIndex_t* StsHitsStartIndex_, + const L1HitIndex_t* StsHitsStopIndex_ ) { vStsHits.resize(StsHits_.size()); vStsStrips.resize(StsStrips_.size()); @@ -126,8 +126,8 @@ bool L1AlgoInputData::ReadHitsFromFile(const char work_dir[100], const int maxNE for (int i = 0; i < n; i++) { L1Hit element; fadata >> element_f >> element_b >> element_n >> element.z >> element.u >> element.v >> element.t; - element.f = static_cast<THitI>(element_f); - element.b = static_cast<THitI>(element_b); + element.f = static_cast<L1HitIndex_t>(element_f); + element.b = static_cast<L1HitIndex_t>(element_b); #ifdef USE_EVENT_NUMBER element.n = static_cast<unsigned short int>(element_n); #endif diff --git a/reco/L1/L1AlgoInputData.h b/reco/L1/L1AlgoInputData.h index 9e78094dab44cab2f6c8eb8e5002d92fb5fb61ff..0de39001886091ac4611c60292f956b4c2d60a5a 100644 --- a/reco/L1/L1AlgoInputData.h +++ b/reco/L1/L1AlgoInputData.h @@ -21,8 +21,8 @@ public: L1Vector<L1Hit>& GetStsHits() { return vStsHits; } int GetNStsStrips() const { return NStsStrips; } L1Vector<unsigned char>& GetSFlag() { return fStripFlag; } - const THitI* GetStsHitsStartIndex() const { return StsHitsStartIndex; } - const THitI* GetStsHitsStopIndex() const { return StsHitsStopIndex; } + const L1HitIndex_t* GetStsHitsStartIndex() const { return StsHitsStartIndex; } + const L1HitIndex_t* GetStsHitsStopIndex() const { return StsHitsStopIndex; } bool ReadHitsFromFile(const char work_dir[100], const int maxNEvent, const int iVerbose); @@ -71,8 +71,8 @@ public: L1Vector<unsigned char> fStripFlag { "L1AlgoInputData::fStripFlag"}; // information of hits station & used hits in tracks; - THitI StsHitsStartIndex[MaxNStations + 1] {0}; // station-bounders in vStsHits array - THitI StsHitsStopIndex[MaxNStations + 1] {0}; // station-bounders in vStsHits array + L1HitIndex_t StsHitsStartIndex[MaxNStations + 1] {0}; // station-bounders in vStsHits array + L1HitIndex_t StsHitsStopIndex[MaxNStations + 1] {0}; // station-bounders in vStsHits array } _fvecalignment;