59 Double_t
param1[4] = { 999., 999., 999., 999.};
60 Double_t
param2[4] = { 999., 999., 999., 999.};
61 Double_t
params2[4] = { 999., 999., 999., 999.};
62 Double_t
params3[4] = { 999., 999., 999., 999.};
64 Double_t
SiCoordX[4] = {-999., -999., -999., -999.};
65 Double_t
SiCoordY[4] = {-999., -999., -999., -999.};
66 Double_t
SiCoordZ[4] = {-999., -999., -999., -999.};
67 Double_t
SiSigmaX[4] = {-999., -999., -999., -999.};
68 Double_t
SiSigmaY[4] = {-999., -999., -999., -999.};
69 Double_t
SiMod[4] = {-999., -999., -999., -999.};
91 virtual InitStatus
Init();
92 virtual void Exec(Option_t* opt);
116 Double_t
param[4]= {999., 999., 999., 999.};
117 Double_t
x_si[4] = {-999., -999.,-999.,-999.};
118 Double_t
y_si[4] = {-999., -999.,-999.,-999.};
119 Double_t
z_si[4] = {-999., -999.,-999.,-999.};
122 Double_t
track1[5] = {-999.,-999.,-999.,-999.,-999.};
124 Double_t
track2[5] = {-999.,-999.,-999.,-999.,-999.};
134 TClonesArray* fSiTracks;
135 TClonesArray* fSilHits;
136 TClonesArray* fMWPCTracks;
137 TClonesArray* fMWPCSegments;
138 TString fInputBranchName1;
139 TString fInputBranchName2;
140 TString fInputBranchName3;
141 TString fInputBranchHits;
143 TClonesArray* fSiTracksSim;
144 TString fInputBranchNameSimTrue;
145 TClonesArray* fBmnHitsArray;
146 TString fInputBranchName;
149 TClonesArray* fBmnUpstreamTracksArray;
150 TString fOutputTracksBranchName;
151 TString fOutputFileName;
153 Double_t*** par_ab_Ch;
154 Double_t*** par_ab_tr;
155 Double_t*** SiXYhits;
157 Double_t** par_ab_SiTr;
158 Double_t** par_Seg_z;
159 Double_t** par_ab_trz;
160 Double_t** Xforglfit;
162 Double_t* par_SiTr_z;
163 Double_t* X_shift_seg;
168 Double_t* AmatrInverted ;
170 Double_t* AmatrArray;
177 Double_t Shift_toCenterOfMagnetX;
178 Double_t Shift_toCenterOfMagnetY;
179 Double_t Shift_toCenterOfMagnetAX;
180 Double_t Shift_toCenterOfMagnetAY;
184 vector<Smatch> vtmpSeg;
185 vector<Smatch> OutVector;
186 vector<UpTracks> vecUpTracks;
187 vector<MC_points> vec_points;
188 vector<twotracks> vec_twotracks;
190 void PrepareArraysToProcessEvent();
191 void ReadSiliconTracks(Double_t**, Double_t*, Int_t &, vector<MC_points> &);
192 void ReadSiliconHits(Double_t***, Int_t*);
193 void ReadMWPCSegments(Double_t***, Double_t**, Int_t*, vector<MC_points> &);
194 void ReadMWPCTracks(Double_t***, Double_t**, Int_t*);
195 void PCTracksSiTracksMatching(Double_t**, Double_t*, Int_t &, Double_t***, Double_t**, Int_t*, vector<Smatch> &,vector<Smatch> &);
196 void PCSegmentsSiTracksMatching(Double_t**, Double_t*, Int_t &,Double_t***, Double_t**, Int_t*, vector<Smatch> &, vector<Smatch> &);
197 void RecordingBest(Int_t & , vector<Smatch> & , vector<Smatch> & );
198 void RecordCandidateSeg(Int_t &, Int_t &, Int_t &, Double_t**, Double_t***, Double_t*, Double_t**, Double_t &, Double_t &, vector<Smatch>& );
199 void GetAddSiHits(vector<Smatch> &, Double_t***, Int_t* );
200 void GetHitsToPoints(vector<Smatch> &,Double_t***, Int_t*, Double_t***, Int_t*, Double_t***, Int_t &);
201 void GlobalFit(Double_t**, Double_t**, Double_t*);
202 bool InvertMatrix(Double_t*, Double_t*);
203 void CalculationOfChi2(Double_t***, Int_t &, vector<UpTracks> &);
204 void PrintAllTracks(vector<UpTracks> & );
205 void TrackRecording(vector<UpTracks> & );
206 void MCefficiencyCalculation(vector<MC_points> &, vector<UpTracks> &);
209 const Int_t kBig = 200;
210 const Int_t kPoints = 5;
211 const Int_t kPoin_Par = 5;
212 const Int_t kNumPars = 10;
213 const Int_t kNumPairs = 2;
214 const Int_t kNumChambers = 4;
215 const Int_t kNumStSi = 4;
216 const Int_t kMaxMC = 100;
217 const Int_t fNstations = 4;
218 const Int_t kNPlanes = 6;
219 const Double_t kChi2_Max = 50.;
220 const Double_t dw = 0.25;
221 const Double_t SigmXmwpc =
sqrt(2)*dw / 6.;
222 const Double_t SigmYmwpc =
sqrt(2)*dw / 3.;
224 const Double_t cutAx = 0.02;
225 const Double_t cutAy = 0.02;
226 const Double_t cutX = 1.5;
227 const Double_t cutY = 2.0;
229 const Double_t Zcentr = -350.;
230 const Double_t kZ_target = -645.191;
231 const Double_t kZSi_cent = -392.5;
233 const Int_t PDG_Be7 = 1000040070;
234 const Int_t PDG_Li6 = 1000030060;
235 const Int_t PDG_Li7 = 1000030070;
236 const Int_t PDG_He3 = 1000020030;
237 const Int_t PDG_He4 = 1000020040;
238 const Int_t PDG_H2 = 1000010020;
239 const Int_t PDG_p = 2212;
242 TH1D *hAx_fitUp,*hAy_fitUp,* hx_fitUp,* hy_fitUp,* hchi2_fitUp,* hNhitsUp,
243 *hdAx_tr_mc_comb, *hdX_tr_mc_comb, *hdAy_tr_mc_comb, *hdY_tr_mc_comb,
244 *hdAx_uptr_mc, *hdX_uptr_mc, *hdAy_uptr_mc, *hdY_uptr_mc,
245 *hDen_mcuptr, *hNum_mcuptr, *hEff_mcuptr,
246 *hAx_upmc, *hAy_upmc, *hX_upmc, *hY_upmc,
247 *hNtr_reco, *hNtr_mc, *hNrecoTrif2mc, *hAngle_reco, *hAngle_recoifNmc2, *hAngle_recoifNmc2Cases;
248 TH2D *hNtr_mc_vs_reco, *hy_vs_x_Up, *hY_vs_Xmctrue, *hvertexXYUp, *hTyTx_Up;
249 vector<TH1D*> hResXst, hResYst;