283{
284 cout << "EdbShowAlgClean::SimpleRemoveTrackSegmentsFromShower()" << endl;
285 cout << "EdbShowAlgClean::SimpleRemoveTrackSegmentsFromShower() Using source : TObjArray of EdbShowerP..." << endl;
286 cout << "EdbShowAlgClean::SimpleRemoveTrackSegmentsFromShower() Using dirt : TObjArray of EdbTrackP..." << endl;
287
288
290
293
294 Int_t Nbefore=0;
295 Int_t Nafter=0;
296 Int_t Nsrc=src->GetEntries();
297 Int_t Ndrt=drt->GetEntries();
298 if (
gEDBDEBUGLEVEL>3) cout <<
"EdbShowAlgClean::SimpleRemoveTrackSegmentsFromShower() " << Nsrc << endl;
299 if (
gEDBDEBUGLEVEL>3) cout <<
"EdbShowAlgClean::SimpleRemoveTrackSegmentsFromShower() " << Ndrt << endl;
300
301 Int_t NshowersChanged=0;
302 Int_t NsrcChanged=0;
303 Int_t NsrcStep=Nsrc/20;
304 if (NsrcStep<=2) NsrcStep=1;
305
307
308 for (int i=0; i<src->GetEntries(); ++i) {
312 NshowersChanged=0;
313 int debug_cnt_0=0;
314 int debug_cnt_1=0;
315 int debug_cnt_2=0;
316 int debug_cnt_3=0;
319 Float_t trLastZ=0;
320 Float_t trFirstZ=0;
321
322 for (int j=0; j<drt->GetEntries(); ++j) {
324 if (j%5==0) cout << "2% more done... j= "<< j << endl;
325
328 trLastZ=
tr->GetSegment(
tr->N()-1)->
Z();
329 debug_cnt_0++;
330
331
332
333
334 if (
gEDBDEBUGLEVEL>3) cout <<
"XXX:Cut0 sh:(i,Z0,Z1) "<< i <<
" "<< shFirstZ <<
" "<< shLastZ <<
" tr (j,Z0,Z1) " << j <<
" "<< trFirstZ <<
" "<< trLastZ <<
" Cut0." << endl;
335
336
337
338
339 if (
tr->N()<3)
continue;
340
341
342 if (trFirstZ>shLastZ) continue;
343 debug_cnt_1++;
344 if (
gEDBDEBUGLEVEL>3) cout <<
"XXX:XXX:Cut1 sh:(i,Z0,Z1) "<< i <<
" "<< shFirstZ <<
" "<< shLastZ <<
" tr (j,Z0,Z1) " << j <<
" "<< trFirstZ <<
" "<< trLastZ <<
" Cut1." << endl;
345
346
347
348
349 if (trLastZ<shFirstZ) continue;
350 debug_cnt_2++;
351 if (
gEDBDEBUGLEVEL>3) cout <<
"XXX:XXX:XXX:Cut2 sh:(i,Z0,Z1) "<< i <<
" "<< shFirstZ <<
" "<< shLastZ <<
" tr (j,Z0,Z1) " << j <<
" "<< trFirstZ <<
" "<< trLastZ <<
" Cut2." << endl;
352
353
354
355
356 if (
gEDBDEBUGLEVEL>3) cout <<
"Is this track within the cone w.r.t. the 1st segment of the shower???" << endl;
357 if (
gEDBDEBUGLEVEL>3) cout <<
"IsInConeTube(EdbSegP* sTest, EdbSegP* sStart, Double_t CylinderRadius, Double_t ConeAngle)"<<endl;
358 Bool_t inConeTube = fEdbShowAlg.
IsInConeTube(
tr->GetSegment(0), showerstart, 1000 , 0.75);
359 if (inConeTube) continue;
360 debug_cnt_3++;
361
362 if (
gEDBDEBUGLEVEL>3) cout <<
"XXX:XXX:XXX:XXX:Cut3 sh:(i,Z0,Z1) "<< i <<
" "<< shFirstZ <<
" "<< shLastZ <<
" tr (j,Z0,Z1) " << j <<
" "<< trFirstZ <<
" "<< trLastZ <<
" Cut3." << endl;
363 debug_cnt_3++;
364
365
366
367
368 if (sh->
MCEvt()>0 &&
tr->MCEvt()>0 && (sh->
MCEvt()-
tr->MCEvt()!=0))
continue;
369
370
371
373 if (NshowersChanged>0) cout <<
"SimpleRemoveTrackSegmentsFromShower("<<sh->
ID()<<
","<<
tr->ID()<<
") : YES. Removed" << NshowersChanged <<
" segments." << endl;
374
375 }
377
378
379 if (Nbefore!=Nafter) {
380 cout << "EdbShowAlgClean::SimpleRemoveTrackSegmentsFromShower() Shower has been modified! Show details: " << endl;
381 cout << "EdbShowAlgClean::SimpleRemoveTrackSegmentsFromShower() Nbefore: " << Nbefore << endl;
382 cout << "EdbShowAlgClean::SimpleRemoveTrackSegmentsFromShower() Nafter: " << Nafter << endl;
383 cout << "EdbShowAlgClean::SimpleRemoveTrackSegmentsFromShower() NRemoved: " << Nafter-Nbefore << endl;
384 NsrcChanged++;
385 }
386
387 cout << debug_cnt_0 << endl;
388 cout << debug_cnt_1 << endl;
389 cout << debug_cnt_2 << endl;
390 cout << debug_cnt_3 << endl;
391
392 }
393
394 cout << "RunStatistics: src->GetEntries() : " << src->GetEntries() << " src changed: " << NsrcChanged << endl;
395
398 return;
399}
TTree * tr
Definition: Shower_E_FromShowerRoot.C:5
Int_t ID() const
Definition: EdbSegP.h:147
TObjArray * GetDirt() const
Definition: EdbShowAlgClean.h:69
void SimpleRemoveTrackSegmentsFromShower()
Definition: EdbShowAlgClean.cxx:282
Definition: EdbShowAlg.h:40
Bool_t IsInConeTube(EdbSegP *sTest, EdbSegP *sStart, Double_t CylinderRadius, Double_t ConeAngle)
Definition: EdbShowAlg.cxx:248
Float_t GetSegmentFirstZ() const
Definition: EdbShowerP.h:439
Float_t GetSegmentLastZ() const
Definition: EdbShowerP.h:442
Double_t Z
Definition: tlg2couples.C:104