FEDRA emulsion software from the OPERA Collaboration
ShowRec_Alg_TC.cpp File Reference
This graph shows which files directly or indirectly include this file:

Functions

void ReconstructShowers_TC ()
 

Function Documentation

◆ ReconstructShowers_TC()

void ReconstructShowers_TC ( )
3 {
4  Log(2, "ShowRec.cpp", "--- void ReconstructShowers_TC() ---");
5 
6  //-----------------------------------------------------------------
7  // Main function for reconstruction of TC "Track(s) (in) Cone" Algorithm
8  // Connects tracks to ConteTube Reconstructed Object like in the CA or OI Alg.
9  //-----------------------------------------------------------------
10 
11  //-----------------------------------
12  // For each InitiatorBT this is
13  // divided in several small parts:
14  //
15  // 1) Make local_gAli with cut parameters, Make GetPID of InBT and corresponding of plates
16  // 2a) Loop over (whole) local_gAli, check BT for Cuts (ConeTube)
17  // 2b) Loop over (whole) tracks from a linked_tracks file, try to attach these tracks to BT of these within the cone
18  // 2c) Loop over (whole) attached basetracks, start ConeTube Reconstruction for these BT itsself.
19  // 4) Calculate pur/eff/NBT numbers
20  // 5) Fill Trees
21  //-----------------------------------
22 
23  // Define Helper Variables:
24  EdbPVRec* local_gAli;
25  EdbSegP* InBT;
26  EdbSegP* seg;
27  Float_t local_gAli_pat_interim_halfsize=0;
28 
31 
32  Float_t gAliZMax=TMath::Max(GLOBAL_gAli->GetPattern(GLOBAL_gAli->Npatterns()-1)->Z(),GLOBAL_gAli->GetPattern(0)->Z());
33 
34  if (gEDBDEBUGLEVEL>2) {
35  cout << "--- --- --- Printing GLOBAL_InBTArray MaximumZ Position " << gAliZMax << " --- --- ---"<<endl;
37  }
38 
39  // Define TObjArray which contains Bastracks Clones from the tracking.
40  EdbSegP * segment=0;
41  EdbSegP * s2=0;
42  EdbTrackP *t = 0;
43  TFile * fil = new TFile("linked_tracks.root");
44  TTree* tr= (TTree*)fil->Get("tracks");
45  TClonesArray *segClonesArray= new TClonesArray("EdbSegP",60);
46  int nentr = int(tr->GetEntries());
47  int nseg,n0,npl;
48  cout << "Of linked_tracks we have " << nentr << " entries Total"<<endl;
49  tr->SetBranchAddress("t.", &t );
50  tr->SetBranchAddress("s", &segClonesArray );
51  tr->SetBranchAddress("nseg", &nseg );
52  tr->SetBranchAddress("n0", &n0 );
53  tr->SetBranchAddress("npl", &npl );
54  if (gEDBDEBUGLEVEL>2) tr->Show(0);
55 
56  cout << "Try Creating Arrays"<< endl;
57  TObjArray* LOCAL_TrackBTArray= new TObjArray(nentr);
58  TObjArray* LOCAL_NewAddedBTArray= new TObjArray(nentr);
59  cout << "Creating Arrays done."<< endl;
60 
61  for (int i=0; i<nentr; i++ ) {
62  //if (i%10!=0) continue;
63  tr->GetEntry(i);
64 
65  if (gEDBDEBUGLEVEL>3) cout << i << " t.eX Y Z " << t->X() << " "<< t->Y() << " "<< t->Z() << endl;
66 
67  // // Take only Basetracks from tracks which pass 3 or more plates:
68  // if (npl<3) continue;
69 
70 
71  // Take only tracks which are inside the gAli Volume:
72  // Cause Linking is done with all 57 plates, but reconstruction can be done of coure on less:
73  s2=(EdbSegP*) segClonesArray->At(nseg-1);
74  if (s2->Z()>gAliZMax) {
75  cout << " TrackEND is outside of gALi Volume! Dont take track." << endl;
76  continue;
77  }
78 
79  // CUTPARAMETER[6]=CUT_TRACKATTACH_NTRACKSEG
80  // CUT_TRACKATTACH_NTRACKSEG ranges from [0..nseg-2]
81  // nseg ranges from [2..nseg-1]
82 
83  int takeN=TMath::Min(nseg-1,int(CUT_PARAMETER[6])+1);
84  //cout << " takeN = " << takeN << endl;
85 
86  for (int hh=0; hh<takeN; hh++) {
87  // Take first BT of the tracks:
88  s2=(EdbSegP*) segClonesArray->At(hh);
89  if (gEDBDEBUGLEVEL>3) s2->PrintNice();
90 
91  // Note: here we take all tracks, regardingless if they are in our desired range. (FP,MP,LP)
92  // This we check further down:
93  // Clone segment, otherwise it will be overwritten by the next.
94  segment=(EdbSegP*)s2->Clone();
95  // Add it to LOCAL_TrackBTArray
96  LOCAL_TrackBTArray->Add(segment);
97  }
98  //cout << "for (int hh=0; hh<takeN; hh++) done."<<endl;
99 
100  }
101  delete tr;
102  delete fil;
103 
104  if (gEDBDEBUGLEVEL>1) cout << "--- Filled " << LOCAL_TrackBTArray->GetEntries() << " Segments into LOCAL_TrackBTArray."<<endl;
105 
106 
107  //-----------------------------------------------------------------
108  // Since GLOBAL_InBTArray is filled in ascending ordering by zpositon
109  // We use the descending loop to begin with BT with lowest z first.
110  // This part of the Algorithm is the same as OI Alg part:
111  for (Int_t i=GLOBAL_InBTArrayEntries-1; i>=0; --i) {
112 
113  //-----------------------------------
114  // CounterOutPut
115  if (gEDBDEBUGLEVEL==2) if ((i%1)==0) cout << GLOBAL_InBTArrayEntries <<" InBT in total, still to do:"<<Form("%4d",i)<< "\r\r\r\r"<<flush;
116  //-----------------------------------
117 
118  //-----------------------------------
119  // Get InitiatorBT from GLOBAL_InBTArray
120  InBT=(EdbSegP*)GLOBAL_InBTArray->At(i);
121  //--------
122  GLOBAL_InBT_E=InBT->P();
123  GLOBAL_InBT_TanTheta=TMath::Sqrt(InBT->TX()*InBT->TX()+InBT->TY()*InBT->TY());
124  GLOBAL_InBT_Flag=InBT->Flag();
125  GLOBAL_InBT_MC=InBT->MCEvt();
126  //--------
127  Int_t local_NBT=0;
128  Int_t local_NBTMC=0;
129  Int_t local_NBTallMC=0;
130  Int_t local_NBTeMC=0;
131  float_t local_pure=-1;
132  float_t local_purall=-1;
133  Int_t npat_int=0;
134  Int_t npat_total=0;
135  Int_t npatN=0;
136  Int_t npat_Neff=0;
137  Int_t NBT_Neff=0;
138  Int_t NBTMC_Neff=0;
139  Int_t NBTMCe_Neff=0;
140  //--------
141 
142  if (gEDBDEBUGLEVEL>2) {
143  cout << endl << endl << "--- Starting Shower for Number " << i << " now: "<<endl;
144  InBT->PrintNice();
145  cout << " InBT->MCEvt() "<< InBT->MCEvt() << " InBT->P() " << InBT->P() << endl;
146  }
147  //-----------------------------------
148 
149  //-----------------------------------
150  // 1) Make local_gAli with cut parameters:
151  //-----------------------------------
152  local_gAli = TransformEdbPVRec(GLOBAL_gAli, InBT);
153  //local_gAli = TransformEdbPVRec_SA(GLOBAL_gAli, InBT); // Especially for SA-Algorithm to set the size of the local_gAli also.
154 
155  // Add InBT to GLOBAL_ShowerSegArray
156  GLOBAL_ShowerSegArray -> Add(InBT);
157  //-----------------------------------
158 
159 
160  //-----------------------------------
161  // 2a) Loop over (whole) local_gAli, check BT for Cuts
162  //-----------------------------------
163  Int_t local_gAli_npat=local_gAli->Npatterns();
164  if (gEDBDEBUGLEVEL>2) cout << "--- local_gAli_npat= " << local_gAli_npat << endl;
165 
166  // Loop over all plates of local_gAli, since this is already
167  // extracted with the right numbers of plates...
168  for (Int_t patterloop_cnt=local_gAli_npat-1; patterloop_cnt>=0; --patterloop_cnt) {
169  if (gEDBDEBUGLEVEL>3) cout << "--- --- Doing patterloop_cnt= " << patterloop_cnt << endl;
170 
171  for (Int_t btloop_cnt=0; btloop_cnt<local_gAli->GetPattern(patterloop_cnt)->GetN(); ++btloop_cnt) {
172  seg = (EdbSegP*)local_gAli->GetPattern(patterloop_cnt)->GetSegment(btloop_cnt);
173  if (gEDBDEBUGLEVEL>3) seg->PrintNice();
174 
175  // Now apply cut conditions: TrackCone Alg --------------------
176  // (for first iteration, thi is equivalent to OI Alg Implementation:
177  // if (GetdeltaRWithPropagation(seg,InBT)>100) continue;
178  // if (TMath::Abs(seg->Z()-InBT->Z())>5000) continue;
179  if (!GetConeOrTubeDistanceToInBT(seg, InBT, CUT_PARAMETER[0], CUT_PARAMETER[1])) continue;
180  if (!FindPrecedingBTsSingleThetaAngle(seg, InBT, local_gAli, GLOBAL_ShowerSegArray)) continue;
181  // end of cut conditions: TrackCone IMPLEMENTATION Alg --------------------
182 
183  // If we arrive here, Basetrack seg has passed criteria
184  // and is then added to the shower array:
185  // Check if its not the InBT which is already added:
187  }
188 
189  } // end of loop over all plates of local_gAli
190 // if (gEDBDEBUGLEVEL>2) PrintShowerObjectArray(GLOBAL_ShowerSegArray);
191 
192 
193  Float_t NBT_before=0;
194  Float_t NBT_after=0;
195  Float_t NBTMC_before=0;
196  Float_t NBTMC_after=0;
197  Float_t pur_before=0;
198  Float_t pur_after=0;
199 
200  // Quickly calculate NEW NBT and pur------------------------
201  EdbSegP* interim=0;
202  for (int count=0; count<GLOBAL_ShowerSegArray->GetEntries(); count++) {
203  NBT_before++;
204  interim=(EdbSegP*)GLOBAL_ShowerSegArray->At(count);
205  if (interim->MCEvt()>0) NBTMC_before++;
206  }
207  pur_before=(Float_t)NBTMC_before/(Float_t)NBT_before;
208  // Quickly calculate NEW NBT and pur------------------------
209 
210 
211 
212  //-----------------------------------
213  // 2b) Loop over (whole) tracks from a linked_tracks file, try to attach these tracks to BT of these within the cone
214  // wARNING,wARNING: the linked tracks root file BaseTrack PIDs and the PIDs of the BTs in the eAli DO NOT
215  // NECESSARILY have to be identical, so please, make comparisons rather on Z instead on PID.
216  //-----------------------------------
217 
218 
219  //cout << "=============================================================================="<<endl;
220  //cout << "=" << endl;
221  //cout << "= NOW try to attach tracks to the reconstructed showers:" << endl;
222 
223  // Clear LOCAL_NewAddedBTArray to have only same MCEvts in it:
224  LOCAL_NewAddedBTArray->Clear();
225 
226  int nentr_LOCAL_TrackBTArray=LOCAL_TrackBTArray->GetEntries();
227  int nentr_GLOBAL_ShowerSegArray=GLOBAL_ShowerSegArray->GetEntries();
228 
229  int nentr2=nentr_LOCAL_TrackBTArray;
230 
231  EdbSegP* tryAttachedSegment=0;
232  EdbSegP* alreadyTakenSegment=0;
233 
234  for (Int_t icount=0; icount<nentr2; icount++ ) {
235  //for(int icount=nentr2/2; icount<(nentr2/2)+2; icount++ ) {
236 
237  tryAttachedSegment=(EdbSegP*)LOCAL_TrackBTArray->At(icount);
238 
239  // But take only segemnst with same MC Number as InBT of course!!
240  if (tryAttachedSegment->MCEvt()>0 && tryAttachedSegment->MCEvt()!=InBT->MCEvt()) continue;
241 
242  //cout << "Try to attac now segment (if array) " << icount << " with: " << endl;
243  //tryAttachedSegment->PrintNice();
244  //cout << "to any of the already attached segments: " << endl;
245 
246  for (Int_t j=0; j<GLOBAL_ShowerSegArray->GetEntries(); j++ ) {
247  alreadyTakenSegment=(EdbSegP*)GLOBAL_ShowerSegArray->At(j);
248 
249  Float_t dRTEST= GetdeltaRWithPropagation(tryAttachedSegment,alreadyTakenSegment);
250  Float_t dMinDist=GetMinimumDist(tryAttachedSegment,alreadyTakenSegment);
251  Float_t dMinDist_DT=GetdeltaThetaSingleAngles(tryAttachedSegment,alreadyTakenSegment);
252 
253  /*
254  if (gEDBDEBUGLEVEL>2) {
255  cout << " Test GLOBAL_ShowerSegArray segment (if array) " << j << " with: " << endl;
256  alreadyTakenSegment->PrintNice();
257  cout << " to connect: deltaRWith Propagation (tryAttachedSegment,alreadyTakenSegment) : ";
258  cout << dRTEST;;
259  cout << " GetMinimumDist(tryAttachedSegment,alreadyTakenSegment) : " << dMinDist << " " << dMinDist_DT << endl;
260  }
261  */
262 
263  // The testing trackBT has to satisfy both criteria:
264  // minimum Distance and deltaThetaSingleAngels
265  // CUT_PARAMETER[4]=CUT_TRACKATTACH_DISTMIN
266  // CUT_PARAMETER[5]=CUT_TRACKATTACH_DTAN_MAX
267  if (dMinDist< CUT_PARAMETER[4] && dMinDist_DT< CUT_PARAMETER[5]) {
268  LOCAL_NewAddedBTArray->Add(tryAttachedSegment);
269  //if (gEDBDEBUGLEVEL>2) cout << "Found a close connection. Add tryAttachedSegment to LOCAL_NewAddedBTArray"<<endl;
270  break;
271  }
272 
273  } // of (int j=0;)
274  } // of (int icount=0; );
275 
276  //cout << "LOCAL_NewAddedBTArray->GetEntries() = " << LOCAL_NewAddedBTArray->GetEntries() << endl;
277  //cout << "=" << endl;
278  //cout << "=============================================================================="<<endl;
279 
280 
281  //-----------------------------------
282  // 2c) Loop over (whole) local_gAli, again, but now with ONLY the new LOCAL_NewAddedBTArray as starting BTs
283  // 2c) and only if the local_gAli Z position id greater equal than LOCAL_NewAddedBTArray z position:
284  // 2c) Do this for every new added BaseTrack:
285  // 2c) Rember that not the BaseTracks of the linked_tracks.root file are NOT given into ShowerOject array,
286  // 2c) Only the intrinsic ones which come out from the gAli directly.
287  // 2c) This is to avoid duplication of tracks, since the may not be totally equal in X,Y,Z
288  // 2c) For example if tracking was done with small different par sets...
289  //-----------------------------------
290  //cout << " // 2c) Loop over (whole) local_gAli, again, but now with ONLY the new LOCAL_NewAddedBTArray as starting BTs"<<endl;
291  //cout << " // 2c) LOCAL_NewAddedBTArray->GetEntries() " << LOCAL_NewAddedBTArray->GetEntries() << endl;
292  //PrintShowerObjectArray(LOCAL_NewAddedBTArray);
293 
294  for (Int_t icount=0; icount<LOCAL_NewAddedBTArray->GetEntries(); icount++) {
295 
296  tryAttachedSegment=(EdbSegP*)LOCAL_NewAddedBTArray->At(icount);
297  if (tryAttachedSegment->MCEvt()>0 && tryAttachedSegment->MCEvt()!=InBT->MCEvt()) continue;
298 
299  //cout << "// 2c) Loop over (whole) local_gAli, again, but now with ONLY the new LOCAL_NewAddedBTArray as starting BTs"<< endl;
300  //cout << "// 2c) and only if the local_gAli Z position id greater equal than LOCAL_NewAddedBTArray z position:"<< endl;
301  //cout << " Doing this for tryAttachedSegment " << tryAttachedSegment->X() << " " << tryAttachedSegment->Y() << " " << tryAttachedSegment->Z() << " " << tryAttachedSegment->TX() << " " << tryAttachedSegment->TY() << " " << tryAttachedSegment->MCEvt() << " " << endl;
302 
303  local_gAli_npat=local_gAli->Npatterns();
304  // cout << "--- local_gAli_npat= " << local_gAli_npat << endl;
305 
306  // Loop over all plates of local_gAli, since this is already
307  // extracted with the right numbers of plates...
308  for (Int_t patterloop_cnt=local_gAli_npat-1; patterloop_cnt>=0; --patterloop_cnt) {
309 
310  float_t local_gAliZ=local_gAli->GetPattern(patterloop_cnt)->Z();
311 
312  // cout << "--- --- Doing patterloop_cnt= " << patterloop_cnt << endl;
313  // cout << "--- --- local_gAli->GetPattern(patterloop_cnt)->Z()= " << local_gAliZ << endl;
314  // cout << "--- --- Is tryAttachedSegment->Z() gtreater equal local_gAliZ()= " << tryAttachedSegment->Z() << " " << local_gAliZ << endl;
315 
316  // We do not want to search for local_gAli which has lower Z than the attacet BT itself
317  //if (tryAttachedSegment->Z() < local_gAliZ) continue;
318  //if (tryAttachedSegment->Z() > local_gAliZ) continue;
319 
320  int matches_found=0;
321  //cout << "--- --- YES its greater, searching BTs of localgAli now for matches ?? ? GREATER OR SMALLER ???"<<endl;
322 
323 
324  for (Int_t btloop_cnt=0; btloop_cnt<local_gAli->GetPattern(patterloop_cnt)->GetN(); ++btloop_cnt) {
325  seg = (EdbSegP*)local_gAli->GetPattern(patterloop_cnt)->GetSegment(btloop_cnt);
326  if (gEDBDEBUGLEVEL>3) seg->PrintNice();
327 
328  // Now what was formerly InBT is now the new tryAttachedSegment:
329  // cout << " comparing now Segment " << seg << " (Z= " << seg->Z() << ") with the tryAttachedSegment (Z= " << tryAttachedSegment->Z() << ") GetdeltaRWithPropagation: "<< GetdeltaRWithPropagation(seg,tryAttachedSegment) << endl;
330 
331  // Now apply cut conditions: TrackCone Alg --------------------
332  if (!GetConeOrTubeDistanceToInBT(seg, tryAttachedSegment, CUT_PARAMETER[0], CUT_PARAMETER[1])) continue;
333  // cout << "Passed GetConeOrTubeDistanceToInBT"<< endl;
334  if (!FindPrecedingBTsSingleThetaAngleTCDEBUG(seg, tryAttachedSegment, local_gAli, GLOBAL_ShowerSegArray)) continue;
335  // cout << "Passed FindPrecedingBTsSingleThetaAngleTCDEBUG"<< endl;
336  // end of cut conditions: TrackCone IMPLEMENTATION Alg --------------------
337 
338  // If we arrive here, Basetrack seg has passed criteria
339  // and is then added to the shower array:
340  // Check if its not the InBT which is already added:
341  Bool_t isBTadded=kFALSE;
343 
344  if (gEDBDEBUGLEVEL>2) {
345  if (isBTadded) cout << "...Yes this was a new one, and is added to shower array! ..."<< endl;
346  if (isBTadded) seg->PrintNice();
347  }
348  if (isBTadded) matches_found++;
349 
350  } // of (Int_t btloop_cnt=0; );
351 
352  //if (matches_found>0) cout << "--- --- In this plate we have found _ADDITIONAL_ (more than zero) BTs: "<< matches_found << endl;
353 
354  // Calculate Efficency numbers only for the last element of the loop,
355  // otherwise we add to much numbers...
356  if (icount==LOCAL_NewAddedBTArray->GetEntries()-1) {
357  // Calc BT density around shower:
358  EdbPattern* pat_interim=local_gAli->GetPattern(patterloop_cnt);
359  CalcTrackDensity(pat_interim,local_gAli_pat_interim_halfsize,npat_int,npat_total,npatN);
360  // Calc TrackNumbers for plate for efficency numbers:
361  CalcEfficencyNumbers(pat_interim, InBT->MCEvt(), NBT_Neff, NBTMC_Neff,NBTMCe_Neff);
362  }
363 
364  } // for (Int_t patterloop_cnt=local_gAli_npat-1; patterloop_cnt>=0; --patterloop_cnt) // end of loop over all plates of local_gAli
365 
366  } // for(int icount=0; icount<OCAL_NewAddedBTArray->GetEntries(); icount++ )
367  LOCAL_NewAddedBTArray->Clear();
368 
369 // if (gEDBDEBUGLEVEL>2) PrintShowerObjectArray(GLOBAL_ShowerSegArray);
370 
371 
372  // Quickly calculate NEW NBT and pur------------------------
373  NBT_after=0;
374  NBTMC_after=0;
375  for (int count=0; count<GLOBAL_ShowerSegArray->GetEntries(); count++) {
376  NBT_after++;
377  interim=(EdbSegP*)GLOBAL_ShowerSegArray->At(count);
378  if (interim->MCEvt()>0) NBTMC_after++;
379  }
380  pur_after=(Float_t)NBTMC_after/(Float_t)NBT_after;
381  // Quickly calculate NEW NBT and pur------------------------
382 
383  if (gEDBDEBUGLEVEL>2) {
384  cout << " Difference between before and after: " << endl;
385  cout << " NBT = " << NBT_after << " Before: "<< NBT_before << endl;
386  cout << " NBTMC = " << NBTMC_after << " Before: "<< NBTMC_before << endl;
387  cout << " pur = " << pur_after << " Before: "<< pur_before << endl;
388  }
389 
390  //-----------------------------------
391  // 4) Calculate pur/eff/NBT numbers,
392  // not needed when only reconstruction
393  // done:
394  //-----------------------------------
395  if (cmd_OUTPUTLEVEL>=2 || cmd_OUTPUTLEVEL==0 ) {
396  Int_t NBT=0;
397  Int_t NBTMC=0;
398  Int_t NBTallMC=0;
399  Int_t NBTeMC=0;
400  Double_t eff, purall, pure;
401  CalcEffPurOfShower2(GLOBAL_ShowerSegArray, NBT, NBTMC, NBTallMC, NBTeMC, purall, pure, NBT_Neff, NBTMC_Neff,NBTMCe_Neff);
402 
403  // Fill only for MC Event:
404  if (GLOBAL_InBT_MC>0) {
409  }
411  }
412 
413 
414  //-----------------------------------
415  // 5) Fill Tree:
416  //-----------------------------------
417  TREE_ShowRecEff->Fill();
418  if (gEDBDEBUGLEVEL>3) TREE_ShowRecEff->Show(TREE_ShowRecEff->GetEntries()-1);
419 
420 
421  //-----------------------------------
422  // 6a) Transfer ShowerArray to treebranchTreeEntry:
423  //-----------------------------------
424  if (cmd_OUTPUTLEVEL>0) {
426  }
427 
428 
429  //------------------------------------
430  // Reset and delete important things:
431  // also to avoid memory problems ...
432  //-----------------------------------
433 
434  GLOBAL_ShowerSegArray->Clear();
435  if (gEDBDEBUGLEVEL>3) cout << "--- ---GLOBAL_ShowerSegArray->GetEntries(): "<< GLOBAL_ShowerSegArray->GetEntries() << endl;
436  delete local_gAli;
437  local_gAli=0;
439  //------------------------------------
440  }
441  // end of loop over GLOBAL_InBTArrayEntries
442  //-----------------------------------------------------------------
443 
444 
445  delete LOCAL_TrackBTArray;
446  delete LOCAL_NewAddedBTArray;
447 
448  if (gEDBDEBUGLEVEL==2) cout << endl<<flush;
449  if (gEDBDEBUGLEVEL>3) cout << "---TREE_ShowRecEff->GetEntries() ... " << TREE_ShowRecEff->GetEntries() << endl;
450  if (gEDBDEBUGLEVEL>3) cout << "---GLOBAL_INBTSHOWERNR ... " << GLOBAL_INBTSHOWERNR<< endl;
451 
452 
453  return;
454 }
bool Log(int level, const char *location, const char *fmt,...)
Definition: EdbLog.cxx:75
TTree * tr
Definition: Shower_E_FromShowerRoot.C:5
Double_t GetdeltaThetaSingleAngles(EdbSegP *s1, EdbSegP *s2)
Definition: ShowRec.cpp:7258
Bool_t FindPrecedingBTsSingleThetaAngleTCDEBUG(EdbSegP *s, EdbSegP *InBT, EdbPVRec *gAli, TObjArray *showersegarray)
Definition: ShowRec.cpp:6903
Double_t GetdeltaRWithPropagation(EdbSegP *s, EdbSegP *stest)
Definition: ShowRec.cpp:7211
Bool_t AddBTToArrayWithCeck(EdbSegP *tryAttachedSegment, TObjArray *GLOBAL_ShowerSegArray)
Definition: ShowRec.cpp:5939
void CalcTrackDensity(EdbPattern *pat_interim, Float_t pat_interim_halfsize, Int_t &npat_int, Int_t &npat_total, Int_t &npatN)
Definition: ShowRec.cpp:8749
void TransferShowerObjectArrayIntoEntryOfTreebranchShowerTree(TTree *treebranchtree, TObjArray *segarray)
Definition: ShowRec.cpp:7940
Bool_t FindPrecedingBTsSingleThetaAngle(EdbSegP *s, EdbSegP *InBT, EdbPVRec *gAli, TObjArray *showersegarray)
Definition: ShowRec.cpp:6825
EdbPVRec * TransformEdbPVRec(EdbPVRec *gAli, EdbSegP *InitiatorBT)
DEBUG OPENMP TEST!!!!!!!
Definition: ShowRec.cpp:6299
Bool_t GetConeOrTubeDistanceToInBT(EdbSegP *sa, EdbSegP *InBT, Double_t CylinderRadius, Double_t ConeAngle)
Definition: ShowRec.cpp:6990
void CalcEffPurOfShower2(TObjArray *arr, Int_t &NBT, Int_t &NBTMC, Int_t &NBTallMC, Int_t &NBTeMC, Double_t &purall, Double_t &pure, Int_t NBT_Neff, Int_t NBTMC_Neff, Int_t NBTMCe_Neff)
Definition: ShowRec.cpp:7631
void PrintShowerObjectArray(TObjArray *segarray)
Definition: ShowRec.cpp:6967
Double_t GetMinimumDist(EdbSegP *seg1, EdbSegP *seg2)
Definition: ShowRec.cpp:8581
void CalcEfficencyNumbers(EdbPattern *pat_interim, Int_t MCCheck, Int_t &NBT_Neff, Int_t &NBTMC_Neff, Int_t &NBTMCe_Neff)
Definition: ShowRec.cpp:8771
Int_t GLOBAL_INBTSHOWERNR
Definition: ShowRec.h:80
Double_t GLOBAL_trckdens
Definition: ShowRec.h:39
EdbPVRec * GLOBAL_gAli
Definition: ShowRec.h:73
Int_t cmd_OUTPUTLEVEL
Definition: ShowRec.h:33
Int_t GLOBAL_EvtBT_FlagArray[99999]
Definition: ShowRec.h:51
TObjArray * GLOBAL_ShowerSegArray
Definition: ShowRec.h:76
Int_t GLOBAL_InBT_MC
Definition: ShowRec.h:43
Double_t GLOBAL_EvtBT_EArray[99999]
Definition: ShowRec.h:52
Int_t GLOBAL_EvtBT_MCArray[99999]
Definition: ShowRec.h:51
TTree * TREE_ShowRecEff
Definition: ShowRec.h:62
Float_t shower_trackdensb
Definition: ShowRec.h:395
Int_t GLOBAL_InBT_Flag
Definition: ShowRec.h:43
Double_t GLOBAL_EvtBT_E
Definition: ShowRec.h:50
Double_t GLOBAL_InBT_TanTheta
Definition: ShowRec.h:44
Double_t GLOBAL_InBT_E
Definition: ShowRec.h:44
Double_t CUT_PARAMETER[10]
Definition: ShowRec.h:78
Int_t GLOBAL_EvtBT_MC
Definition: ShowRec.h:49
Int_t GLOBAL_InBTArrayEntries
Definition: ShowRec.h:75
Double_t GLOBAL_EvtBT_TanThetaArray[99999]
Definition: ShowRec.h:52
Double_t GLOBAL_EvtBT_TanTheta
Definition: ShowRec.h:50
TTree * TREE_ShowShower
Definition: ShowRec.h:68
Int_t GLOBAL_EvtBT_Flag
Definition: ShowRec.h:49
TObjArray * GLOBAL_InBTArray
Definition: ShowRec.h:74
TTree * t
Definition: check_shower.C:4
Definition: EdbPVRec.h:148
Definition: EdbPattern.h:280
Int_t Npatterns() const
Definition: EdbPattern.h:380
EdbPattern * GetPattern(int id) const
Definition: EdbPattern.cxx:1887
Definition: EdbSegP.h:18
Float_t TX() const
Definition: EdbSegP.h:172
Float_t Z() const
Definition: EdbSegP.h:150
Float_t P() const
Definition: EdbSegP.h:149
void PrintNice() const
Definition: EdbSegP.cxx:418
Float_t TY() const
Definition: EdbSegP.h:173
Int_t MCEvt() const
Definition: EdbSegP.h:142
Int_t Flag() const
Definition: EdbSegP.h:146
Float_t Z() const
Definition: EdbPattern.h:87
Int_t GetN() const
Definition: EdbPattern.h:65
EdbSegP * GetSegment(int i) const
Definition: EdbPattern.h:66
Definition: EdbPattern.h:118
gEDBDEBUGLEVEL
Definition: energy.C:7
EdbSegP * s2
Definition: tlg2pattern.C:31