BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnStsVectorFinder.h
Go to the documentation of this file.
1// -------------------------------------------------------------------------
2// ----- BmnStsVectorFinder header file -----
3// ----- Created 3/12/21 by A.Zinchenko, D.Zinchenko, R.Zinchenko -----
4// -------------------------------------------------------------------------
5
6/** BmnStsVectorFinder.h
7 *@author A.Zinchenko <Alexander.Zinchenko@jinr.ru>
8 **
9 ** Vector Finder in BM@N tracker
10 **/
11
12#ifndef BMNSTSVECTORFINDER_H
13#define BMNSTSVECTORFINDER_H 1
14
15#include "BmnStsKFTrackFitter.h"
16#include "CbmStsKFTrackFitter.h"
17#include "CbmStsTrack.h"
18#include "FairTask.h"
19
20#include <TClonesArray.h>
21#include <TMVA/Reader.h> //AZ-300922
22#include <TProfile2D.h>
23#include <TVector3.h>
24#include <set>
25#include <string>
26#include <unordered_map>
27
28// typedef std::pair<Double_t,std::map<Int_t,Int_t> > candvec;
29
30class BmnStsVectorFinder : public FairTask
31{
32
33 public:
34 struct hitinfo
35 {
38 : xyz(v3)
39 , phx(phxi)
40 , tx(txi)
41 , ty(tyi)
42 , used(0)
43 {
44 ;
45 }
50 int used;
51 };
52
53 struct candvec
54 {
60 // Double_t varx;
62 std::map<Int_t, Int_t> stahit;
63 std::string code;
64 FairTrackParam param;
67 candvec(Double_t momi, std::map<Int_t, Int_t> stahi)
68 : nskips(0)
69 , momxz(momi)
70 , stahit(stahi)
71 {
72 ;
73 }
74 };
75
76 /** Default constructor **/
78
79 /** Destructor **/
81
82 /** Virtual method Init **/
83 virtual InitStatus Init();
84
85 /** Virtual method Exec **/
86 virtual void Exec(Option_t* opt);
87
88 /** Virtual method FinishEvent **/
89 virtual void FinishEvent();
90
91 /** Virtual method Finish **/
92 virtual void Finish();
93
95 void SetNofSiStations(int nsi) { fNSi = nsi; } // AZ-051022
96 void SetExactSel(int trID) { fExactSel = trID; } // AZ-251225
97
98 private:
99 // void ReadMatBudget();
101 std::set<Int_t> GetHitId(CbmStsHit* hit, Int_t& idmaxP);
102 std::set<Int_t> GetHitIdBmn(CbmStsHit* hit, Int_t& idmaxP);
103 std::set<Int_t> GetHitId(Int_t hitInd, Int_t& idmaxP)
104 {
105 return GetHitId((CbmStsHit*)fHitArray->UncheckedAt(hitInd), idmaxP);
106 }
109 Bool_t CheckVarx(Double_t dx, Double_t dz, Double_t tx, Double_t distxz, Double_t& varx); // AZ-310722
115 void MakeStsTrack(candvec& cand, std::string& hitcode, CbmStsTrack& track);
116 void ExtendTracks(Int_t ista);
118 void FitTracks();
125 // AZ-280722 Double_t LinearFit(CbmStsTrack *tr, Int_t newtr, Double_t &ty);
126 Double_t LinearFit(candvec& cand, candvec& cand2, CbmStsTrack* tr, Int_t newtr, Double_t& ty); // AZ-280722
127 Double_t Curv3(candvec& cand1, candvec& cand2, candvec& cand3, int newtr3);
128 std::set<int> KalmanWindow(candvec& cand, int hitIndx);
129 std::string MakeCode(candvec& cand);
130 void PrintHits(candvec& cand);
131 void InitTMVA3(); // AZ-300922
132 Float_t TMVAOutput3(candvec& aaa1, candvec& aaa2); // AZ-300922
133 void InitTMVA2(); // AZ-221022
134 Float_t TMVAOutput2(candvec& aaa1); // AZ-241022
135
136 /** Input / output array of CbmStsHits **/
138 TClonesArray* fVectorArray; // output tracks
139 Int_t fPass; // pass number
140 Int_t fNsta; // number of stations
141 Int_t fNbranches; // max number of branches in a triplet from one doublet
142 Int_t fExact; // exact match - for debug
143 Int_t fExactSel; // exact match for selected ID - for debug
144 Int_t discarded; // number of discarded 3-hit candidates with bad chi2, debug
145 int fOut; // AZ-210922 - flag for writing out
146 TVector3 fXyzv; // mean vertex position
147 Double_t fBy; // max. field in Tesla
148 std::multimap<Double_t, Int_t> fmapPhx[19], fmapTy[19], fmapX[19], fmapY[19];
149 std::vector<candvec> fSeedVec[19]; //
150 std::vector<candvec> fCandVec[19]; //
151 std::set<string> fCandCodes[19];
152 // std::multimap<Int_t,candvec> fCandMap2[19]; //
153 // std::multimap<Int_t,candvec> fCandMap3[19]; //
154
155 std::vector<candvec> fCandVec2[19]; // doublets
156 std::map<std::string, int> fMap2Out; // AZ-210922 - doublets for writing out
157 std::map<std::string, int>* fMap2OutPtr; // AZ-210922 - doublets for writing out
158 std::map<std::string, int> fMap3Out; // AZ-260922 - triplets for writing out
159 std::map<std::string, int>* fMap3OutPtr; // AZ-260922 - triplets for writing out
160 // AZ-130722 std::multimap<int,int> fMap2[19]; // hit index -> index in fCandVec2
161 std::unordered_multimap<int, int> fMap2[19]; // AZ-130722 hit index -> index in fCandVec2
162
163 std::vector<candvec> fCandVec3[19]; // triplets
164 // AZ-130722 std::multimap<int,int> fMap3[19]; // hit index -> index in fCandVec3
165 std::unordered_multimap<int, int> fMap3[19]; // AZ-130722 hit index -> index in fCandVec3
166 // AZ-130722 std::map<std::string,int> fMapCode3[19]; // triplet code -> index in fCandVec3
167 std::unordered_map<std::string, int> fMapCode3[19]; // AZ-130722 triplet code -> index in fCandVec3
168
169 std::multimap<Double_t, CbmStsTrack> fTracks; //
170 // AZ-130722 std::map<Int_t,hitinfo> fmapHits;
171 std::unordered_map<Int_t, hitinfo> fmapHits; // AZ-130722
172 // AZ-130722 std::multimap<Int_t,Int_t> fHit2id, fClusMaps[2];
173 std::unordered_multimap<Int_t, Int_t> fHit2id, fClusMaps[2]; // AZ-130722
174 Int_t *fNhitsMin, fNskips[20];
176 // CbmStsKFTrackFitter fitter;
178 std::set<string> fCandSet[19];
179
181 // std::map<Double_t,TProfile2D*> fMatHistos;
182 int fUseTMVA; // AZ-300922
183 int fNSi; // AZ-051022
184 Float_t fVarTMVA[20]; // AZ-300922
185 TMVA::Reader* fReaderTMVA3; // AZ-300922
186 TMVA::Reader* fReaderTMVA2; // AZ-221022
187
190
192};
193
194#endif
bool Bool_t
int Int_t
float Float_t
double Double_t
const char Option_t
#define ClassDef(name, id)
BmnStsVectorFinder.h.
void PrintHits(candvec &cand)
Double_t Proxim(Double_t ang1, Double_t ang2)
std::set< Int_t > GetHitId(CbmStsHit *hit, Int_t &idmaxP)
std::set< string > fCandSet[19]
std::map< std::string, int > fMap3Out
virtual InitStatus Init()
Virtual method Init.
Double_t FitTrack(candvec &cand)
std::map< std::string, int > * fMap2OutPtr
void SetMatBudgetFileName(TString s)
std::unordered_multimap< int, int > fMap2[19]
TMVA::Reader * fReaderTMVA2
std::set< Int_t > GetHitIdBmn(CbmStsHit *hit, Int_t &idmaxP)
TClonesArray * fDigiMatches
std::multimap< Double_t, Int_t > fmapPhx[19]
TVector3 Parabola(TVector3 &pos0, TVector3 &pos1, TVector3 &pos2)
std::unordered_map< Int_t, hitinfo > fmapHits
std::vector< candvec > fSeedVec[19]
std::set< int > KalmanWindow(candvec &cand, int hitIndx)
std::string MakeCode(candvec &cand)
TMVA::Reader * fReaderTMVA3
std::unordered_multimap< int, int > fMap3[19]
std::unordered_multimap< Int_t, Int_t > fClusMaps[2]
Float_t TMVAOutput2(candvec &aaa1)
TClonesArray * fTrackArray
BmnStsVectorFinder()
Default constructor.
std::vector< candvec > fCandVec[19]
std::map< std::string, int > fMap2Out
TClonesArray * fStsPoints
std::set< string > fCandCodes[19]
std::multimap< Double_t, Int_t > fmapY[19]
virtual void Finish()
Virtual method Finish.
std::map< std::string, int > * fMap3OutPtr
BmnStsVectorFinder(const BmnStsVectorFinder &)
virtual void FinishEvent()
Virtual method FinishEvent.
void SetNofSiStations(int nsi)
TClonesArray * fVectorArray
std::vector< candvec > fCandVec3[19]
~BmnStsVectorFinder()
Destructor.
TClonesArray * fSilPoints
Double_t LinearFit(candvec &cand, candvec &cand2, CbmStsTrack *tr, Int_t newtr, Double_t &ty)
void ExtendTrack(candvec cand)
void ExtendTracks(Int_t ista)
TClonesArray * fClusArray[4]
Input / output array of CbmStsHits.
BmnStsKFTrackFitter fitter
Double_t FilterHit(candvec &cand, CbmStsTrack &track)
std::vector< candvec > fCandVec2[19]
Int_t ExcludeHits(Int_t minHits, TClonesArray *trArray)
BmnStsVectorFinder & operator=(const BmnStsVectorFinder &)
std::multimap< Double_t, CbmStsTrack > fTracks
void MakeStsTrack(candvec &cand, std::string &hitcode, CbmStsTrack &track)
Bool_t AreTracksDoubles(CbmStsTrack &tr1, CbmStsTrack &tr2)
void SetExactSel(int trID)
Float_t TMVAOutput3(candvec &aaa1, candvec &aaa2)
std::multimap< Double_t, Int_t > fmapX[19]
virtual void Exec(Option_t *opt)
Virtual method Exec.
std::unordered_map< std::string, int > fMapCode3[19]
std::multimap< Double_t, Int_t > fmapTy[19]
std::set< Int_t > GetHitId(Int_t hitInd, Int_t &idmaxP)
Double_t Curv3(candvec &cand1, candvec &cand2, candvec &cand3, int newtr3)
std::set< Int_t > GetHitId(CbmStsHit *hit, Int_t &idmaxP)
Bool_t CheckVarx(Double_t dx, Double_t dz, Double_t tx, Double_t distxz, Double_t &varx)
std::unordered_multimap< Int_t, Int_t > fHit2id
Double_t DxVsMom(Int_t ista, candvec &aaa)
candvec(Double_t momi, std::map< Int_t, Int_t > stahi)
std::map< Int_t, Int_t > stahit
hitinfo(TVector3 v3, Double_t phxi, Double_t txi, Double_t tyi)