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

Functions

void ReconstructShowers_BW ()
 

Function Documentation

◆ ReconstructShowers_BW()

void ReconstructShowers_BW ( )

return; -----------------------------------------------------------------------—

3 {
4  Log(2, "ShowRec.cpp", "--- void ReconstructShowers_BW() ---");
5 
6  //-----------------------------------------------------------------
7  // Main function for reconstruction of "BackWard" Algorithm
8  //-----------------------------------------------------------------
9 
10  //-----------------------------------
11  // For each InitiatorBT this is
12  // divided in several small parts:
13  //
14  // 1) Make local_gAli with cut parameters, Make GetPID of InBT and corresponding of plates
15  // 3) Loop over (whole) local_gAli, check BT for Cuts
16  // 4) Calculate pur/eff/NBT numbers
17  // 5) Fill Trees
18  //-----------------------------------
19 
20  //-----------------------------------
21  // Algorithm Iteration Steps:
22  //
23  // 0) Start Adjust Shower Axis, Virtual Vertex
24  // 0) Calc dR/dT/dIP(trk,trk) to same plate.
25  // ---Loop up to firstplate;
26  // // ---Loop for deltaN (plate)=1,2,3:
27  // // // 1) Calc dR/dT/dIP(trk,trk) to backward plate.
28  // // // 1) Check for already in shower array; add BT to shower
29  // // // 1) Adjust Shower Axis, Adjust Virtual Vertex
30  // // ---Loop for deltaN (plate)=1,2,3:
31  // ---Loop up to firstplate;
32  // 2) Adjust Shower Axis, Virtual Vertex.
33  //
34  //-----------------------------------
35 
36 
37  // Define Helper Variables:
38  EdbPVRec* local_gAli;
39  EdbSegP* InBT;
40  EdbSegP* seg;
41  EdbSegP* segShower;
42  EdbSegP* ShowerAxis;
43  EdbVertex* VirtualVertex;
44  Float_t local_gAli_pat_interim_halfsize=0;
45  Double_t dR,dT,dminDist;
46 
49 
50  //-----------------------------------------------------------------
51  // Since GLOBAL_InBTArray is filled in ascending ordering by zpositon
52  // We use the descending loop to begin with BT with lowest z first.
53  for (Int_t i=GLOBAL_InBTArrayEntries-1; i>=0; --i) {
54 
55  //-----------------------------------
56  // CounterOutPut
57  if (gEDBDEBUGLEVEL==2) if ((i%1)==0) cout << GLOBAL_InBTArrayEntries <<" InBT in total, still to do:"<<Form("%4d",i)<< "\r\r\r\r"<<flush;
58  //-----------------------------------
59 
60  //-----------------------------------
61  // Get InitiatorBT from GLOBAL_InBTArray
62  InBT=(EdbSegP*)GLOBAL_InBTArray->At(i);
63  //--------
64  GLOBAL_InBT_E=InBT->P();
65  GLOBAL_InBT_TanTheta=TMath::Sqrt(InBT->TX()*InBT->TX()+InBT->TY()*InBT->TY());
66  GLOBAL_InBT_Flag=InBT->Flag();
67  GLOBAL_InBT_MC=InBT->MCEvt();
68  //--------
69  Int_t local_NBT=0;
70  Int_t local_NBTMC=0;
71  Int_t local_NBTallMC=0;
72  Int_t local_NBTeMC=0;
73  float_t local_pure=-1;
74  float_t local_purall=-1;
75  Int_t npat_int=0;
76  Int_t npat_total=0;
77  Int_t npatN=0;
78  Int_t show_NP=0;
79  Int_t npat_Neff=0;
80  Int_t NBT_Neff=0;
81  Int_t NBTMC_Neff=0;
82  Int_t NBTMCe_Neff=0;
83  //--------
84 
85  if (gEDBDEBUGLEVEL!=2) {
86  cout << endl << endl << "--- Starting Shower for Number " << i << " (MCEvt=" << InBT->MCEvt() << ") now: "<<endl;
87  InBT->PrintNice();
88  cout << "InBT->P() " << InBT->P() << endl;
89  }
90  //-----------------------------------
91 
92  //-----------------------------------
93  // 1) Make local_gAli with cut parameters:
94  //-----------------------------------
95  local_gAli = TransformEdbPVRec_BackWard(GLOBAL_gAli, InBT);
96  // Add InBT to GLOBAL_ShowerSegArray
97  GLOBAL_ShowerSegArray -> Add(InBT);
98  if (gEDBDEBUGLEVEL>2) cout << "--- TransformEdbPVRec done."<<endl;
99  //-----------------------------------
100 
101 
102  //-----------------------------------
103  // 2) Start at plate for Initator BT:
104  //-----------------------------------
105  Int_t local_gAli_npat=local_gAli->Npatterns();
106  Int_t btloop_cnt_N=0;
107  // if (gEDBDEBUGLEVEL>2)
108  cout << "--- Starting BACKWARD Reco... ---" << endl;
109  if (gEDBDEBUGLEVEL>2) cout << "--- local_gAli_npat= " << local_gAli_npat << endl;
110 
111  Int_t patterloop_cnt_InBT=-1;
112  Float_t patterloop_cnt_InBT_Z=0;
113  for (Int_t patterloop_cnt=0; patterloop_cnt<local_gAli_npat; patterloop_cnt++) {
114  if (gEDBDEBUGLEVEL>3) cout << "--- --- Doing patterloop_cnt= " << patterloop_cnt << endl;
115  // if pattern is after the Initiator BT->Z() position we stop:
116  if (local_gAli->GetPattern(patterloop_cnt)->Z()<InBT->Z()) continue;
117  patterloop_cnt_InBT=patterloop_cnt;
118  patterloop_cnt_InBT_Z=local_gAli->GetPattern(patterloop_cnt)->Z();
119  }
120  if (gEDBDEBUGLEVEL>2) cout << "--- patterloop_cnt_InBT= " << patterloop_cnt_InBT << endl;
121  if (gEDBDEBUGLEVEL>2) cout << "--- patterloop_cnt_InBT_Z= " << patterloop_cnt_InBT_Z << endl;
122 
123  // Check wich Steptype is needed for BackwardStepping:
124  // Convention: -1 if Patter(0)_Z<Pattern(npat)_Z
125  // Convention: +1 if Patter(0)_Z>Pattern(npat)_Z
126  Int_t StepNr=0;
127  if (gEDBDEBUGLEVEL>2) cout << "local_gAli->GetPattern(0)->Z() " << local_gAli->GetPattern(0)->Z() << endl;
128  if (gEDBDEBUGLEVEL>2) cout << "local_gAli->GetPattern(local_gAli_npat-1)->Z() " << local_gAli->GetPattern(local_gAli_npat-1)->Z() << endl;
129  if (local_gAli->GetPattern(0)->Z() > local_gAli->GetPattern(local_gAli_npat-1)->Z()) {
130  StepNr=1;
131  }
132  else {
133  StepNr=-1;
134  }
135  if (gEDBDEBUGLEVEL>2) cout << "--- StepNr for going backwards (decreasing Z) to next plate= " << StepNr << endl;
136 
137  // return;
138  Bool_t FP_reached=kFALSE;
139  Int_t patterloop_cnt=patterloop_cnt_InBT;
140  if (StepNr==1) patterloop_cnt=patterloop_cnt_InBT;
141  if (StepNr==-1) cout << "DONT KNOW HERE WHICH patterloop_cnt=local_gAli_npat-1; to calculate!!! " << endl;
142 
143  // Loop over all plates of local_gAli, since this is already
144  // extracted with the right numbers of plates...
145  while (!FP_reached) {
146  if (gEDBDEBUGLEVEL>2) cout << " FP NOT YET REACHED .... << doing patterloop_cnt = " << patterloop_cnt << endl;
147  btloop_cnt_N=local_gAli->GetPattern(patterloop_cnt)->GetN();
148  if (gEDBDEBUGLEVEL>2) cout << " FP NOT YET REACHED .... << with btloop_cnt_N = " << btloop_cnt_N << endl;
149 
150  // Loop over all BTs in the actual plate. Calculate dR/dT/dIP to
151  // all BTs which are already in the shower (at beginning it is
152  // only the InBT.
153  for (Int_t btloop_cnt=0; btloop_cnt<btloop_cnt_N; ++btloop_cnt) {
154  seg = (EdbSegP*)local_gAli->GetPattern(patterloop_cnt)->GetSegment(btloop_cnt);
155  if (gEDBDEBUGLEVEL>3) seg->PrintNice();
156 
157  Bool_t add_seg=kFALSE;
158  if (gEDBDEBUGLEVEL>3) cout << "btloop_cnt (ot of ) " << btloop_cnt << " ( " << btloop_cnt_N << " ) " << endl;
159 
160  // Now apply cut conditions: BACKWARD Alg --------------------
161  // Check for dTheta to tracks already in shower:
162  Int_t actualEntries=GLOBAL_ShowerSegArray->GetEntries();
163  if (gEDBDEBUGLEVEL>3) cout << "actualEntries of GLOBAL_ShowerSegArray: " << actualEntries << endl;
164  for (int i=0; i<actualEntries; ++i) {
165  segShower=(EdbSegP*)GLOBAL_ShowerSegArray->At(i);
166  Float_t dZ=TMath::Abs(segShower->Z()-seg->Z());
167  dT=GetdeltaThetaSingleAngles(seg,segShower); // DO NOT TAKE GetdeltaTheta since this is calculation based on absolute theta differences (not on TX,TY relative ones) !!
168  dR=GetdR(seg,segShower);
169  dminDist=GetMinimumDist(seg,segShower);
170  if (gEDBDEBUGLEVEL>3) cout << "btloop_cnt i dT dR dminDist dZ: " << btloop_cnt << " " << i << " " << dT << " " << dR << " " << dminDist << " " << dZ << endl;
171  if (TMath::Abs(dZ)>CUT_PARAMETER[3]) continue;
172  if (TMath::Abs(dT)>CUT_PARAMETER[1]) continue;
173  if (TMath::Abs(dR)>CUT_PARAMETER[2]) continue;
174  if (TMath::Abs(dminDist)>CUT_PARAMETER[0]) continue;
175  if (gEDBDEBUGLEVEL>3) cout << "try to add this BT (if not already in there...) "<< endl;
176  add_seg=kTRUE;
177  break;
178  } // of for (int i=0; i<actualEntries; ++i)
179  if (add_seg) {
181  EdbSegP* BT_1=(EdbSegP*)GLOBAL_ShowerSegArray->At(0);
182  EdbSegP* BT_2=(EdbSegP*)GLOBAL_ShowerSegArray->At(GLOBAL_ShowerSegArray->GetEntries()-1);
183  show_NP=TMath::Max(show_NP,TMath::Abs(BT_1->PID()-BT_2->PID())+1);
184  //cout << "show_NP = " << show_NP << endl;
185  }
186  } // of for (Int_t btloop_cnt=0; btloop_cnt<btloop_cnt_N; ++btloop_cnt)
187 
188  // Now goto next plate:
189  patterloop_cnt=patterloop_cnt+StepNr;
190  if (patterloop_cnt<0) FP_reached=kTRUE;
191  if (patterloop_cnt>=local_gAli_npat) FP_reached=kTRUE;
192  // Or we stop also if the number of plates is more than cmd_NP
193  if (show_NP>=cmd_NP) FP_reached=kTRUE;
194  } // while (!FP_reached)
195 
196 
198  if (cmd_OUTPUTLEVEL>=2 || cmd_OUTPUTLEVEL==0 ) {
199  Int_t NBT=0;
200  Int_t NBTMC=0;
201  Int_t NBTallMC=0;
202  Int_t NBTeMC=0;
203  Double_t purall, pure;
204  CalcEffPurOfShower(GLOBAL_ShowerSegArray, NBT, NBTMC, NBTallMC, NBTeMC, purall, pure);
210  }
211 
212  if (gEDBDEBUGLEVEL>2) cout << " Check if its sorted: GLOBAL_ShowerSegArray->At(0)->Z() should be the lowest one...continue;" << endl;
213  if (gEDBDEBUGLEVEL>2) cout << " IsShowerSortedZ(GLOBAL_ShowerSegArray) " << IsShowerSortedZ(GLOBAL_ShowerSegArray) << endl;
215 
216  // After Sort Shower we can build axis right now...
218  ShowerAxis->PrintNice();
219  Float_t mindTTT=999999;
220  Int_t mindTTT_h=0;
221  for (int h=0; h<GLOBAL_ShowerSegArray->GetEntries(); ++h) {
222  segShower=(EdbSegP*)GLOBAL_ShowerSegArray->At(h);
223  // segShower->PrintNice();
224  if (segShower->Z()!=ShowerAxis->Z()) continue;
225  Float_t dTTT = GetdeltaTheta(ShowerAxis,segShower); //cout << "dTTT = " << dTTT << endl;
226  if (dTTT<mindTTT) {
227  mindTTT=dTTT;
228  mindTTT_h=h;
229  }
230  }
231 
232  // Now here comes the forward (==downstream==inbeamdirection) reconstruction
233  if (gEDBDEBUGLEVEL>2) cout << "--- Starting FORWARD Reco... ---" << endl;
234 
235  // Just take the BT which is closest to shower axis:
236  ShowerAxis=(EdbSegP*)GLOBAL_ShowerSegArray->At(mindTTT_h);
237  GLOBAL_ShowerSegArray->Clear();
238  // The First we have to add by hand because in the reco routine there has to be at least one BT to check.
239  GLOBAL_ShowerSegArray->Add(ShowerAxis);
240  if (gEDBDEBUGLEVEL>3) ShowerAxis->PrintNice();
241 
242  for (Int_t patterloop_cnt=0; patterloop_cnt<local_gAli_npat; patterloop_cnt++) {
243  if (gEDBDEBUGLEVEL>3) cout << "--- --- Doing patterloop_cnt= " << patterloop_cnt << endl;
244  // if pattern is after the ShowerAxis BT->Z() position we stop:
245  if (local_gAli->GetPattern(patterloop_cnt)->Z()<ShowerAxis->Z()) continue;
246  patterloop_cnt_InBT=patterloop_cnt;
247  patterloop_cnt_InBT_Z=local_gAli->GetPattern(patterloop_cnt)->Z();
248  }
249  if (gEDBDEBUGLEVEL>2) cout << "--- patterloop_cnt_InBT= " << patterloop_cnt_InBT << endl;
250  if (gEDBDEBUGLEVEL>2) cout << "--- patterloop_cnt_InBT_Z= " << patterloop_cnt_InBT_Z << endl;
251 
252  // InvertSpeNr now for forward Step:
253  Int_t StepNrForward=StepNr*-1;
254  StepNr=StepNrForward;
255  show_NP=0;
256 
257  Bool_t LP_reached=kFALSE;
258  patterloop_cnt=patterloop_cnt_InBT;
259 
260  while (!LP_reached) {
261  if (gEDBDEBUGLEVEL>2) cout << " LP NOT YET REACHED .... << doing patterloop_cnt = " << patterloop_cnt << endl;
262  btloop_cnt_N=local_gAli->GetPattern(patterloop_cnt)->GetN();
263  if (gEDBDEBUGLEVEL>2) cout << " LP NOT YET REACHED .... << with btloop_cnt_N = " << btloop_cnt_N << endl;
264 
265  // Loop over all BTs in the actual plate. Calculate dR/dT/dIP to
266  // all BTs which are already in the shower (at beginning it is
267  // only the InBT.
268  for (Int_t btloop_cnt=0; btloop_cnt<btloop_cnt_N; ++btloop_cnt) {
269  seg = (EdbSegP*)local_gAli->GetPattern(patterloop_cnt)->GetSegment(btloop_cnt);
270  if (gEDBDEBUGLEVEL>3) seg->PrintNice();
271  Bool_t add_seg=kFALSE;
272  if (gEDBDEBUGLEVEL>3) cout << "btloop_cnt (ot of ) " << btloop_cnt << " ( " << btloop_cnt_N << " ) " << endl;
273 
274  // Now apply cut conditions: BACKWARD Alg --------------------
275  // Check for dTheta to tracks already in shower:
276  Int_t actualEntries=GLOBAL_ShowerSegArray->GetEntries();
277  if (gEDBDEBUGLEVEL>3) cout << "actualEntries of GLOBAL_ShowerSegArray: " << actualEntries << endl;
278  for (int i=0; i<actualEntries; ++i) {
279  segShower=(EdbSegP*)GLOBAL_ShowerSegArray->At(i);
280  Float_t dZ=TMath::Abs(segShower->Z()-seg->Z());
281  dT=GetdeltaThetaSingleAngles(seg,segShower); // DO NOT TAKE GetdeltaTheta since this is calculation based on absolute theta differences (not on TX,TY relative ones) !!
282  dR=GetdR(seg,segShower);
283  dminDist=GetMinimumDist(seg,segShower);
284  if (gEDBDEBUGLEVEL>3) cout << "btloop_cnt i dT dR dminDist dZ: " << btloop_cnt << " " << i << " " << dT << " " << dR << " " << dminDist << " " << dZ << endl;
285  if (TMath::Abs(dZ)>CUT_PARAMETER[7]) continue;
286  if (TMath::Abs(dT)>CUT_PARAMETER[5]) continue;
287  if (TMath::Abs(dR)>CUT_PARAMETER[6]) continue;
288  if (TMath::Abs(dminDist)>CUT_PARAMETER[4]) continue;
289  if (gEDBDEBUGLEVEL>3) cout << "try to add this BT (if not already in there...) "<< endl;
290  add_seg=kTRUE;
291  break;
292  } // of for (int i=0; i<actualEntries; ++i)
293  if (add_seg) {
295  EdbSegP* BT_1=(EdbSegP*)GLOBAL_ShowerSegArray->At(0);
296  EdbSegP* BT_2=(EdbSegP*)GLOBAL_ShowerSegArray->At(GLOBAL_ShowerSegArray->GetEntries()-1);
297  show_NP=TMath::Max(show_NP,TMath::Abs(BT_1->PID()-BT_2->PID())+1);
298  //cout << "show_NP = " << show_NP << endl;
299  }
300  } // of for (Int_t btloop_cnt=0; btloop_cnt<btloop_cnt_N; ++btloop_cnt)
301 
302 
303  // Calc BT density around shower:
304  EdbPattern* pat_interim=local_gAli->GetPattern(patterloop_cnt);
305  CalcTrackDensity(pat_interim,local_gAli_pat_interim_halfsize,npat_int,npat_total,npatN);
306 
307  // Calc TrackNumbers for plate for efficency numbers:
308  CalcEfficencyNumbers(pat_interim, InBT->MCEvt(), NBT_Neff, NBTMC_Neff,NBTMCe_Neff);
309 
310  // Now goto next plate:
311  patterloop_cnt=patterloop_cnt+StepNr;
312  if (patterloop_cnt<0) LP_reached=kTRUE;
313  if (patterloop_cnt>=local_gAli_npat) LP_reached=kTRUE;
314  // Or we stop also if the number of plates is more than cmd_NP
315  if (show_NP>=cmd_NP) LP_reached=kTRUE;
316 
317  } // of while (!LP_reached)
319 
320  //-----------------------------------
321  // 4) Calculate pur/eff/NBT numbers,
322  // not needed when only reconstruction
323  // done:
324  //-----------------------------------
325  if (cmd_OUTPUTLEVEL>=2 || cmd_OUTPUTLEVEL==0 ) {
326  Int_t NBT=0;
327  Int_t NBTMC=0;
328  Int_t NBTallMC=0;
329  Int_t NBTeMC=0;
330  Double_t eff, purall, pure;
331  CalcEffPurOfShower2(GLOBAL_ShowerSegArray, NBT, NBTMC, NBTallMC, NBTeMC, purall, pure, NBT_Neff, NBTMC_Neff,NBTMCe_Neff);
332 
333  // Fill only for MC Event:
334  if (GLOBAL_InBT_MC>0) {
339  }
341  }
342 
343 
344 
345  //-----------------------------------
346  // 5) Fill Tree:
347  //-----------------------------------
348  TREE_ShowRecEff->Fill();
349  if (gEDBDEBUGLEVEL>3) TREE_ShowRecEff->Show(TREE_ShowRecEff->GetEntries()-1);
350 
351 
352  //-----------------------------------
353  // 6a) Transfer ShowerArray to treebranchTreeEntry:
354  //-----------------------------------
355  if (cmd_OUTPUTLEVEL>0) {
357  }
358 
359  //------------------------------------
360  // Reset and delete important things:
361  // also to avoid memory problems ...
362  //-----------------------------------
363  GLOBAL_ShowerSegArray->Clear();
364  if (gEDBDEBUGLEVEL>3) cout << "--- ---GLOBAL_ShowerSegArray->GetEntries(): "<< GLOBAL_ShowerSegArray->GetEntries() << endl;
365  delete local_gAli;
366  local_gAli=0;
368  //------------------------------------
369  }
370  // end of loop over GLOBAL_InBTArrayEntries
371  //-----------------------------------------------------------------
372 
373  if (gEDBDEBUGLEVEL==2) cout << endl<<flush;
374  if (gEDBDEBUGLEVEL>3) cout << "---TREE_ShowRecEff->GetEntries() ... " << TREE_ShowRecEff->GetEntries() << endl;
375  if (gEDBDEBUGLEVEL>3) cout << "---GLOBAL_INBTSHOWERNR ... " << GLOBAL_INBTSHOWERNR<< endl;
376 
377 
378  return;
379 }
bool Log(int level, const char *location, const char *fmt,...)
Definition: EdbLog.cxx:75
Double_t GetdeltaThetaSingleAngles(EdbSegP *s1, EdbSegP *s2)
Definition: ShowRec.cpp:7258
void CalcEffPurOfShower(TObjArray *arr, Int_t &NBT, Int_t &NBTMC, Int_t &NBTallMC, Int_t &NBTeMC, Double_t &purall, Double_t &pure)
Definition: ShowRec.cpp:7597
EdbPVRec * TransformEdbPVRec_BackWard(EdbPVRec *gAli, EdbSegP *InitiatorBT)
Definition: ShowRec.cpp:6413
Bool_t IsShowerSortedZ(TObjArray *showerarray)
Definition: ShowRec.cpp:8801
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 SortShowerZ(TObjArray *showerarray)
Definition: ShowRec.cpp:8816
void TransferShowerObjectArrayIntoEntryOfTreebranchShowerTree(TTree *treebranchtree, TObjArray *segarray)
Definition: ShowRec.cpp:7940
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
Double_t GetdeltaTheta(EdbSegP *s1, EdbSegP *s2)
Definition: ShowRec.cpp:7239
EdbSegP * BuildShowerAxis(TObjArray *ShowerSegArray)
Definition: ShowRec.cpp:8629
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 GetdR(EdbSegP *s1, EdbSegP *s2)
Definition: ShowRec.h:167
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
Int_t cmd_NP
Definition: ShowRec.h:18
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
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
Int_t PID() const
Definition: EdbSegP.h:145
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: EdbVertex.h:68
gEDBDEBUGLEVEL
Definition: energy.C:7