16#ifndef BMNDCHTRACKFINDER_H
17#define BMNDCHTRACKFINDER_H 1
26#include "FairTrackParam.h"
27#include "FairMCPoint.h"
32#include <TClonesArray.h>
51 virtual void Exec(Option_t* opt);
55 fTransferFunctionName = name;
68 Bool_t isInitialized =
false;
70 TString InputDigitsBranchName;
74 TString fTransferFunctionName;
76 TClonesArray* fBmnDchDigitsArray;
77 TClonesArray* fBmnHitsArray;
80 TClonesArray* fDchHits;
81 TClonesArray* fDchTracks;
82 TClonesArray* fDchSegments;
93 Double_t pol_par_dc[3][5][16];
111 Double_t x1_slope_sh;
112 Double_t y1_slope_sh;
113 Double_t x2_slope_sh;
114 Double_t y2_slope_sh;
118 Int_t nSegmentsToBeMatched;
125 Int_t** SegMCIdCount;
139 Double_t*** v_Single;
140 Double_t*** u_Single;
141 Double_t*** y_Single;
142 Double_t*** x_Single;
151 Double_t*** Sigm_v_single;
152 Double_t*** Sigm_u_single;
153 Double_t*** Sigm_y_single;
154 Double_t*** Sigm_x_single;
156 Double_t*** params_sigmas;
157 Int_t*** rhId_segment;
158 Double_t*** rh_segment;
159 Double_t*** rh_segment_time;
160 Double_t*** rh_sigm_segment;
164 Int_t** segment_size;
175 Double_t* Chi2_match;
185 TH1F* hXa_wireOccupancy;
186 TH1F* hXb_wireOccupancy;
187 TH1F* hYa_wireOccupancy;
188 TH1F* hYb_wireOccupancy;
189 TH1F* hUa_wireOccupancy;
190 TH1F* hUb_wireOccupancy;
191 TH1F* hVa_wireOccupancy;
192 TH1F* hVb_wireOccupancy;
193 TH1F* hXa2_wireOccupancy;
194 TH1F* hXb2_wireOccupancy;
195 TH1F* hYa2_wireOccupancy;
196 TH1F* hYb2_wireOccupancy;
197 TH1F* hUa2_wireOccupancy;
198 TH1F* hUb2_wireOccupancy;
199 TH1F* hVa2_wireOccupancy;
200 TH1F* hVb2_wireOccupancy;
203 TH1F* hX1_X2_glob_all;
204 TH1F* hY1_Y2_glob_all;
239 TH1F* hSlot_1xa_time;
240 TH1F* hSlot_1xb_time;
245 TH1F *hSlot_1xa_time8p;
246 TH1F *hSlot_1xb_time8p;
247 TH1F *hSlot_1ya_time8p;
248 TH1F *hSlot_1yb_time8p;
249 TH1F *hSlot_1ua_time8p;
250 TH1F *hSlot_1ub_time8p;
251 TH1F *hSlot_1va_time8p;
252 TH1F *hSlot_1vb_time8p;
253 TH1F *hSlot_2xa_time8p;
254 TH1F *hSlot_2xb_time8p;
255 TH1F *hSlot_2ya_time8p;
256 TH1F *hSlot_2yb_time8p;
257 TH1F *hSlot_2ua_time8p;
258 TH1F *hSlot_2ub_time8p;
259 TH1F *hSlot_2va_time8p;
260 TH1F *hSlot_2vb_time8p;
288 TH1F *hResidx1a_0p1_0p4;
289 TH1F *hResidy1a_0p1_0p4;
290 TH1F *hResidu1a_0p1_0p4;
291 TH1F *hResidv1a_0p1_0p4;
292 TH1F *hResidx2a_0p1_0p4;
293 TH1F *hResidy2a_0p1_0p4;
294 TH1F *hResidu2a_0p1_0p4;
295 TH1F *hResidv2a_0p1_0p4;
297 TH1F *hResidx1a_0p4_0p5;
298 TH1F *hResidy1a_0p4_0p5;
299 TH1F *hResidu1a_0p4_0p5;
300 TH1F *hResidv1a_0p4_0p5;
301 TH1F *hResidx2a_0p4_0p5;
302 TH1F *hResidy2a_0p4_0p5;
303 TH1F *hResidu2a_0p4_0p5;
304 TH1F *hResidv2a_0p4_0p5;
315 TH1F *hResidx1b_0p1_0p4;
316 TH1F *hResidy1b_0p1_0p4;
317 TH1F *hResidu1b_0p1_0p4;
318 TH1F *hResidv1b_0p1_0p4;
319 TH1F *hResidx2b_0p1_0p4;
320 TH1F *hResidy2b_0p1_0p4;
321 TH1F *hResidu2b_0p1_0p4;
322 TH1F *hResidv2b_0p1_0p4;
324 TH1F *hResidx1b_0p4_0p5;
325 TH1F *hResidy1b_0p4_0p5;
326 TH1F *hResidu1b_0p4_0p5;
327 TH1F *hResidv1b_0p4_0p5;
328 TH1F *hResidx2b_0p4_0p5;
329 TH1F *hResidy2b_0p4_0p5;
330 TH1F *hResidu2b_0p4_0p5;
331 TH1F *hResidv2b_0p4_0p5;
343 TH1F *hPullsx1a_0p1_0p4;
344 TH1F *hPullsy1a_0p1_0p4;
345 TH1F *hPullsu1a_0p1_0p4;
346 TH1F *hPullsv1a_0p1_0p4;
347 TH1F *hPullsx2a_0p1_0p4;
348 TH1F *hPullsy2a_0p1_0p4;
349 TH1F *hPullsu2a_0p1_0p4;
350 TH1F *hPullsv2a_0p1_0p4;
352 TH1F *hPullsx1a_0p4_0p5;
353 TH1F *hPullsy1a_0p4_0p5;
354 TH1F *hPullsu1a_0p4_0p5;
355 TH1F *hPullsv1a_0p4_0p5;
356 TH1F *hPullsx2a_0p4_0p5;
357 TH1F *hPullsy2a_0p4_0p5;
358 TH1F *hPullsu2a_0p4_0p5;
359 TH1F *hPullsv2a_0p4_0p5;
370 TH1F *hPullsx1b_0p1_0p4;
371 TH1F *hPullsy1b_0p1_0p4;
372 TH1F *hPullsu1b_0p1_0p4;
373 TH1F *hPullsv1b_0p1_0p4;
374 TH1F *hPullsx2b_0p1_0p4;
375 TH1F *hPullsy2b_0p1_0p4;
376 TH1F *hPullsu2b_0p1_0p4;
377 TH1F *hPullsv2b_0p1_0p4;
379 TH1F *hPullsx1b_0p4_0p5;
380 TH1F *hPullsy1b_0p4_0p5;
381 TH1F *hPullsu1b_0p4_0p5;
382 TH1F *hPullsv1b_0p4_0p5;
383 TH1F *hPullsx2b_0p4_0p5;
384 TH1F *hPullsy2b_0p4_0p5;
385 TH1F *hPullsu2b_0p4_0p5;
386 TH1F *hPullsv2b_0p4_0p5;
410 TProfile *hDc1XaResVsDa;
411 TProfile *hDc1XbResVsDb;
412 TProfile *hDc1XaResVsDa_m;
413 TProfile *hDc1XbResVsDb_m;
414 TProfile *hDc1XaResVsDa_p;
415 TProfile *hDc1XbResVsDb_p;
435 TH1F *hNLayWithFiredWiresDc1;
436 TH1F *hNLayWithFiredWiresDc2;
437 TH1F *hNoFiredWiresOnLayerDc1;
438 TH1F *hNoFiredWiresOnLayerDc2;
441 void CreateDchTrack();
442 void CreateDchTrack(Int_t, Double_t*, Double_t**, Int_t*, Double_t**,Double_t**, Double_t**, Int_t*, Int_t*);
443 void SelectLongestAndBestSegments(Int_t, Int_t*, Double_t**, Double_t*);
444 void FillSegmentParametersSigmas(Int_t, Double_t**, Double_t**, Double_t*, Double_t**);
445 void FillPlaneResiduals(Int_t , Int_t* , Double_t** , Double_t**, Double_t**, Double_t*);
446 void FindSegmentTrackMCId(Int_t , Int_t**, Double_t*, Int_t*, Int_t*);
447 void CompareDaDb(Double_t, Double_t&);
448 void CompareDaDb(Double_t, Double_t&, Double_t&);
449 void PrepareArraysToProcessEvent();
450 Bool_t FitDchSegments(Int_t, Int_t*, Double_t**, Double_t**, Double_t**, Double_t*, Double_t*, Double_t*);
451 Double_t CalculateResidual(Int_t, Int_t, Double_t**, Double_t**);
452 Double_t CalculateResidualMatch(Int_t, Int_t, Int_t, Double_t***, Double_t***);
453 Int_t BuildUVSegments(Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t,
454 Double_t**, Double_t**, Double_t**, Double_t**,
455 Int_t**, Int_t**, Int_t**, Int_t**,
456 Double_t**, Double_t**, Double_t**, Double_t**,
457 Double_t**, Double_t**, Double_t**, Double_t**,
458 Double_t**, Int_t**, Double_t**, Double_t**,
459 Double_t**, Double_t**, Int_t**, Int_t**, Double_t**, Double_t**);
460 Int_t BuildXYSegments(Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t,
461 Double_t**, Double_t**, Double_t**, Double_t**,
462 Int_t**, Int_t**, Int_t**, Int_t**,
463 Double_t**, Double_t**, Double_t**, Double_t**,
464 Double_t**, Double_t**, Double_t**, Double_t**,
465 Double_t**, Int_t**, Double_t**, Double_t**,
466 Double_t**, Double_t**, Int_t**, Int_t**, Double_t**, Double_t**);
467 Int_t Reconstruction(Int_t, TString, Int_t, Int_t, Int_t,
468 Double_t*, Double_t*, Double_t*, Double_t*,
470 Double_t**, Double_t**, Double_t**);
471 Int_t ReconstructionSingle(Int_t, TString, TString, Int_t, Int_t,
472 Double_t*, Double_t*, Bool_t*,
473 Double_t**, Double_t**);
474 Int_t ReconstructionMC(Int_t, TString, Int_t, Int_t, Int_t,
475 Double_t*, Double_t*, Double_t*, Double_t*, Int_t*, Int_t*,
477 Double_t**, Int_t**, Double_t**, Double_t**);
478 Int_t ReconstructionSingleMC(Int_t, TString, TString, Int_t, Int_t,
479 Double_t*, Double_t*, Int_t*, Bool_t*,
480 Double_t**, Int_t**, Double_t**);
481 void SegmentsToBeMatched();
BmnDchTrackFinder(Int_t, Int_t, Bool_t)
void SetTransferFunction(TString name)
virtual ~BmnDchTrackFinder()
virtual void Exec(Option_t *opt)
virtual InitStatus Init()