FEDRA emulsion software from the OPERA Collaboration
EdbScanTracking Class Reference

#include <EdbScanTracking.h>

Inheritance diagram for EdbScanTracking:
Collaboration diagram for EdbScanTracking:

Public Member Functions

 EdbScanTracking ()
 
void SaveHist (EdbID idset, EdbTrackAssembler &etra)
 
void SetPredictionAng (const char *str)
 
void SetPredictionXY (const char *str)
 
void SetPredictionZ (const char *str)
 
void TrackAli (EdbPVRec &ali, TEnv &env)
 
void TrackSetBT (EdbID id, TEnv &env, Int_t ix=-1, Int_t iy=-1)
 
virtual ~EdbScanTracking ()
 

Public Attributes

bool eDoRealign
 
int eNgapMax
 
int eNsegMin
 
PredictionCut ePRC
 
EdbScanProceSproc
 

Constructor & Destructor Documentation

◆ EdbScanTracking()

EdbScanTracking::EdbScanTracking ( )
579 {
580  eNsegMin=2;
581  eNgapMax=50;
582  ePRC.doXY=0;
583  ePRC.doAng=0;
584  ePRC.doZ=0;
585 }
PredictionCut ePRC
Definition: EdbScanTracking.h:104
int eNsegMin
Definition: EdbScanTracking.h:100
int eNgapMax
Definition: EdbScanTracking.h:101
bool doAng
Definition: EdbScanTracking.h:22
bool doZ
Definition: EdbScanTracking.h:20
bool doXY
Definition: EdbScanTracking.h:18

◆ ~EdbScanTracking()

virtual EdbScanTracking::~EdbScanTracking ( )
inlinevirtual
108 {}

Member Function Documentation

◆ SaveHist()

void EdbScanTracking::SaveHist ( EdbID  idset,
EdbTrackAssembler etra 
)
781 {
782  TFile f( Form("b%s.trk.root", idset.AsString()) ,"UPDATE");
783  if(etra.eHistNcnd) etra.eHistNcnd->Write();
784  if(etra.eHistProbAll) etra.eHistProbAll->Write();
785  if(etra.eHistProbBest) etra.eHistProbBest->Write();
786  if(etra.eHistXYseg) etra.eHistXYseg->Write();
787  if(etra.eHistXYPseg) etra.eHistXYPseg->Write();
788  if(etra.eHistXYPsegNB) etra.eHistXYPsegNB->Write();
789  if(etra.eHistTXTYseg) etra.eHistTXTYseg->Write();
790  TH1F *probrest = 0, *probPurity=0;
791  if(etra.eHistProbAll&&etra.eHistProbBest) {
792  probrest = (TH1F*)(etra.eHistProbAll->Clone("ProbRest"));
793  probrest->SetTitle("prob for the other candidates");
794  probrest->Add(etra.eHistProbBest,-1);
795  probrest->Write();
796  probPurity = (TH1F*)(probrest->Clone("ProbPurity"));
797  probPurity->SetTitle("Nother/Nall vs prob");
798  probPurity->Divide(etra.eHistProbAll);
799  probPurity->Write();
800  }
801  if(etra.eHistThetaAll) etra.eHistThetaAll->Write();
802  if(etra.eHistThetaBest) etra.eHistThetaBest->Write();
803  TH1F *thetarest = 0, *thetaPurity=0;
804  if(etra.eHistThetaAll&&etra.eHistThetaBest) {
805  thetarest = (TH1F*)(etra.eHistThetaAll->Clone("ThetaRest"));
806  thetarest->SetTitle("theta for other candidates");
807  thetarest->Add(etra.eHistThetaBest,-1);
808  thetarest->Write();
809  thetaPurity = (TH1F*)(thetarest->Clone("ThetaPurity"));
810  thetaPurity->SetTitle("Nother/Nall vs theta");
811  thetaPurity->Divide(etra.eHistThetaAll);
812  thetaPurity->Write();
813  }
814 
815  gStyle->SetPalette(1);
816  gStyle->SetOptStat(1);
817  bool batch = gROOT->IsBatch();
818  gROOT->SetBatch();
819 
820  TCanvas *c = new TCanvas("purity","tracking purity",900,800);
821  c->Divide(2,3);
822 
823  c->cd(1)->SetLogy();
824  etra.eHistNcnd->SetAxisRange(0,10);
825  etra.eHistNcnd->Draw();
826 
827  c->cd(2); probrest->SetLineColor(kBlue); probrest->Draw();
828 
829  c->cd(3)->SetLogy();
830  etra.eHistProbAll->Draw();
831  etra.eHistProbBest->SetLineColor(kRed); etra.eHistProbBest->Draw("same");
832  probrest->SetLineColor(kBlue); probrest->Draw("same");
833 
834  c->cd(5);
835  probPurity->Draw();
836 
837  c->cd(4)->SetLogy();
838  etra.eHistThetaAll->Draw();
839  etra.eHistThetaBest->SetLineColor(kRed); etra.eHistThetaBest->Draw("same");
840  thetarest->SetLineColor(kBlue); thetarest->Draw("same");
841 
842  c->cd(6);
843  thetaPurity->Draw();
844 
845  c->Write();
846  SafeDelete(c);
847  gROOT->SetBatch(batch);
848  f.Close();
849 }
FILE * f
Definition: RecDispMC.C:150
char * AsString() const
Definition: EdbID.cxx:24
TH2F * eHistTXTYseg
Definition: EdbScanTracking.h:60
TH3F * eHistXYPsegNB
Definition: EdbScanTracking.h:59
TH2F * eHistXYseg
Definition: EdbScanTracking.h:57
TH1F * eHistNcnd
Definition: EdbScanTracking.h:56
TH1F * eHistProbBest
Definition: EdbScanTracking.h:52
TH3F * eHistXYPseg
Definition: EdbScanTracking.h:58
TH1F * eHistThetaAll
Definition: EdbScanTracking.h:55
TH1F * eHistThetaBest
Definition: EdbScanTracking.h:54
TH1F * eHistProbAll
Definition: EdbScanTracking.h:53
EdbID idset
Definition: emrec.cpp:35
new TCanvas()

◆ SetPredictionAng()

void EdbScanTracking::SetPredictionAng ( const char *  str)
968 {
969  sscanf(str,"%d %f %f %f %f", &ePRC.doAng, &ePRC.tx, &ePRC.ty, &ePRC.dtx, &ePRC.dty );
970 }
float dtx
Definition: EdbScanTracking.h:23
float ty
Definition: EdbScanTracking.h:23
float dty
Definition: EdbScanTracking.h:23
float tx
Definition: EdbScanTracking.h:23

◆ SetPredictionXY()

void EdbScanTracking::SetPredictionXY ( const char *  str)
958 {
959  sscanf(str,"%d %f %f %f %f", &ePRC.doXY, &ePRC.x0, &ePRC.y0, &ePRC.dx, &ePRC.dy);
960 }
float y0
Definition: EdbScanTracking.h:19
float dy
Definition: EdbScanTracking.h:19
float x0
Definition: EdbScanTracking.h:19
float dx
Definition: EdbScanTracking.h:19

◆ SetPredictionZ()

void EdbScanTracking::SetPredictionZ ( const char *  str)
963 {
964  sscanf(str,"%d %f %f %f %f", &ePRC.doZ, &ePRC.z0, &ePRC.zmin, &ePRC.zmax );
965 }
float zmin
Definition: EdbScanTracking.h:21
float z0
Definition: EdbScanTracking.h:21
float zmax
Definition: EdbScanTracking.h:21

◆ TrackAli()

void EdbScanTracking::TrackAli ( EdbPVRec ali,
TEnv &  env 
)
853 {
854  EdbTrackAssembler etra;
855 
856  etra.eCond.SetSigma0( env.GetValue("fedra.track.Sigma0" , "3 3 0.005 0.005") );
857  etra.eCond.SetPulsRamp0( env.GetValue("fedra.track.PulsRamp0" , "15 20") );
858  etra.eCond.SetPulsRamp04( env.GetValue("fedra.track.PulsRamp04" , "15 20") );
859  etra.eCond.SetDegrad( env.GetValue("fedra.track.Degrad" , 4) );
860  etra.eCond.SetRadX0( env.GetValue("fedra.track.RadX0" , 5810.) );
861 
862 
863  etra.eDTmax = env.GetValue("fedra.track.DTmax" , 0.07 );
864  etra.eDRmax = env.GetValue("fedra.track.DRmax" , 45. );
865  etra.eDZGapMax = env.GetValue("fedra.track.DZGapMax" , 5000. );
866  etra.eProbMin = env.GetValue("fedra.track.probmin" , 0.001 );
867 
868  bool do_misalign = env.GetValue("fedra.track.do_misalign" , 0 );
869  int npass = env.GetValue("fedra.track.npass" , 1 );
870  float misalign_offset = env.GetValue("fedra.track.misalign_offset", 500. );
871  //bool do_local_corr = env.GetValue("fedra.track.do_local_corr" , 1 );
872  bool eDoRealign = env.GetValue("fedra.track.do_realign" , 0 );
873  bool do_comb = env.GetValue("fedra.track.do_comb" , 0 );
874  eNsegMin = env.GetValue("fedra.track.NsegMin" , 2 );
875  float momentum = env.GetValue("fedra.track.momentum", 2. );
876  etra.InitTrZMap( env.GetValue("fedra.track.TrZmap", "2400 0 120000 2000 0 100000 30" ) );
877 
878  EdbAffine2D misalign[60];
879  if(do_misalign) {
880  // 1 2 3 4 5 6 7 8 9
881  int dx[9] = {0,0,1,1,1,0,-1,-1,-1};
882  int dy[9] = {0,1,1,0,-1,-1,-1,0,1};
883  for(int i=0; i<60; i++) {
884  misalign[i].ShiftX( dx[i%9] * misalign_offset );
885  misalign[i].ShiftY( dy[i%9] * misalign_offset );
886  if(gEDBDEBUGLEVEL>1) printf("%d | %d %d\n",i, dx[i%9], dy[i%9]);
887  }
888  }
889 
890  int npl = ali.Npatterns();
891 
892  // read segments and use them for tracking
893  for(int ipass=0; ipass<npass; ipass++) {
894  if(gEDBDEBUGLEVEL>1) printf("\n\n*************** ipass=%d ************\n",ipass);
895  etra.eCollisionsRate=0;
896  for(int i=0; i<npl; i++) {
897 
898  EdbPattern &p = *ali.GetPattern(i);
899 
900  //p.SetZ(plate->Z());
901  p.SetSegmentsZ();
902  p.SetID(i);
903  p.SetPID(i);
904  p.SetSegmentsPID();
905 // p.SetSegmentsPlate(id->ePlate);
906  if(gEDBDEBUGLEVEL>1) printf("pattern with z: %f\n", p.Z());
907 
908  if(do_misalign) {
909  p.Transform(&misalign[i]);
910  Log(2,"EdbScanTracking::TrackSetBT","apply misalignment of %f",misalign_offset);
911  }
912 
913  if(i>0)
914  if(etra.eDoUseMCS==3) etra.ExtrapolateTracksToZ_mcs3(p.Z());
915  else etra.ExtrapolateTracksToZ(p.Z());
916  etra.FillTrZMap();
917  etra.AddPattern(p);
918  }
919  }
920 
921  int ntr = etra.Tracks().GetEntriesFast();
922 
923  for(int i=0; i<ntr; i++) {
924  EdbTrackP *t = (EdbTrackP *)(etra.Tracks().At(i));
925  if(t->N()<eNsegMin) t->SetFlag(-10);
926  }
927 
928  etra.SetSegmentsErrors();
929  etra.FitTracks();
930 
931  TObjArray selectedTracks(ntr);
932  if(do_comb) {
933  etra.CombTracks(selectedTracks);
934  } else {
935  int cnt=0;
936  for(int i=0; i<ntr; i++) {
937  EdbTrackP *t = (EdbTrackP *)(etra.Tracks().At(i));
938  if(t->Flag()!=-10) {
939  t->SetID(cnt++);
940  t->SetCounters();
941  t->SetSegmentsTrack();
942  t->SetP(momentum);
943  selectedTracks.Add(t);
944  }
945  }
946  }
947 
948  EdbID idset;
949  EdbDataProc::MakeTracksTree( selectedTracks, 0., 0., Form("b%s.trk.root", idset.AsString()) );
950  TFile f( Form("b%s.trk.root", idset.AsString()) ,"UPDATE");
951  env.Write();
952  f.Close();
953 
954  SaveHist(idset,etra);
955 }
bool Log(int level, const char *location, const char *fmt,...)
Definition: EdbLog.cxx:75
EdbPVRec * ali
Definition: align.C:1
TTree * t
Definition: check_shower.C:4
Definition: EdbAffine.h:17
void ShiftX(float d)
Definition: EdbAffine.h:64
void ShiftY(float d)
Definition: EdbAffine.h:65
static int MakeTracksTree(EdbPVRec *ali=0, const char *file="linked_tracks.root")
Definition: EdbDataSet.cxx:2511
Definition: EdbID.h:7
Definition: EdbPattern.h:280
Int_t Npatterns() const
Definition: EdbPattern.h:380
EdbPattern * GetPattern(int id) const
Definition: EdbPattern.cxx:1887
void SetPulsRamp0(float p1, float p2)
Definition: EdbScanCond.h:74
void SetDegrad(float d)
Definition: EdbScanCond.h:71
void SetSigma0(float x, float y, float tx, float ty)
Definition: EdbScanCond.h:62
void SetPulsRamp04(float p1, float p2)
Definition: EdbScanCond.h:75
void SetRadX0(float x0)
Definition: EdbScanCond.h:57
bool eDoRealign
Definition: EdbScanTracking.h:103
void SaveHist(EdbID idset, EdbTrackAssembler &etra)
Definition: EdbScanTracking.cxx:780
Definition: EdbScanTracking.h:27
void FillTrZMap()
Definition: EdbScanTracking.cxx:417
TObjArray & Tracks()
Definition: EdbScanTracking.h:91
EdbScanCond eCond
Definition: EdbScanTracking.h:50
void SetSegmentsErrors()
Definition: EdbScanTracking.cxx:466
float eDZGapMax
Definition: EdbScanTracking.h:45
void ExtrapolateTracksToZ(float z, int nsegmin=0)
Definition: EdbScanTracking.cxx:390
void InitTrZMap(const char *str)
Definition: EdbScanTracking.cxx:431
int eDoUseMCS
Definition: EdbScanTracking.h:47
void ExtrapolateTracksToZ_mcs3(float z, int nsegmin=0)
Definition: EdbScanTracking.cxx:366
void AddPattern(EdbPattern &p)
Definition: EdbScanTracking.cxx:182
float eProbMin
Definition: EdbScanTracking.h:46
void FitTracks()
Definition: EdbScanTracking.cxx:484
float eDRmax
Definition: EdbScanTracking.h:44
float eDTmax
Definition: EdbScanTracking.h:43
void CombTracks(TObjArray &selected)
Definition: EdbScanTracking.cxx:500
int eCollisionsRate
Definition: EdbScanTracking.h:49
Definition: EdbPattern.h:118
gEDBDEBUGLEVEL
Definition: energy.C:7
float momentum
Definition: check_vertex.C:20
p
Definition: testBGReduction_AllMethods.C:8

◆ TrackSetBT()

void EdbScanTracking::TrackSetBT ( EdbID  id,
TEnv &  env,
Int_t  ix = -1,
Int_t  iy = -1 
)
589 {
590 
591  // read scanset object
593  if(!ss) { Log(1,"EdbScanTracking::TrackSetBT",
594  "Error! set for %s do not found",idset.AsString()); return; }
595 
596  int npl = ss->eIDS.GetSize();
597  if(npl<2) { Log(1,"EdbScanTracking::TrackSetBT", "Warning! npl<2 : %d stop tracking!",npl); return; }
598 
599  // create and init tracking object
600  EdbTrackAssembler etra;
601 
602  etra.eCond.SetSigma0( env.GetValue("fedra.track.Sigma0" , "3 3 0.005 0.005") );
603  etra.eCond.SetPulsRamp0( env.GetValue("fedra.track.PulsRamp0" , "15 20") );
604  etra.eCond.SetPulsRamp04( env.GetValue("fedra.track.PulsRamp04" , "15 20") );
605  etra.eCond.SetDegrad( env.GetValue("fedra.track.Degrad" , 4) );
606  etra.SetRadLength( env.GetValue("fedra.track.RadX0" , 5810.) );
607  etra.eDoUseMCS = env.GetValue("fedra.track.do_use_mcs" , 0 );
608 
609  etra.eDTmax = env.GetValue("fedra.track.DTmax" , 0.07 );
610  etra.eDRmax = env.GetValue("fedra.track.DRmax" , 45. );
611  etra.eDZGapMax = env.GetValue("fedra.track.DZGapMax" , 5000. );
612  etra.eProbMin = env.GetValue("fedra.track.probmin" , 0.001 );
613  bool do_track = env.GetValue("fedra.track.do_track" , true );
614  bool do_erase = env.GetValue("fedra.track.erase" , false );
615  bool do_shtag = env.GetValue("fedra.track.do_shtag" , false ); // no tracking only shower tag info
616  TCut cut = env.GetValue("fedra.readCPcut" , "1" ); //changed from const char* to TCut used by ReadPatCPnopar
617  bool do_misalign = env.GetValue("fedra.track.do_misalign" , 0 );
618  int npass = env.GetValue("fedra.track.npass" , 1 );
619  float misalign_offset = env.GetValue("fedra.track.misalign_offset", 500. );
620  bool do_local_corr = env.GetValue("fedra.track.do_local_corr" , 1 );
621  bool eDoRealign = env.GetValue("fedra.track.do_realign" , 0 );
622  bool do_comb = env.GetValue("fedra.track.do_comb" , 0 );
623  eNsegMin = env.GetValue("fedra.track.NsegMin" , 2 );
624  float momentum = env.GetValue("fedra.track.momentum" , 2. );
625  etra.SetMomentum (momentum);
626 
627  SetPredictionXY( env.GetValue("fedra.track.PredictionCutXY" , "0 0. 0. 0. 0.") );
628  SetPredictionZ( env.GetValue("fedra.track.PredictionCutZ" , "0 0. 0. 0.") );
629  SetPredictionAng( env.GetValue("fedra.track.PredictionCutAng" , "0 0. 0. 0. 0.") );
630 
631  etra.InitTrZMap( env.GetValue("fedra.track.TrZmap", "2400 0 120000 2000 0 100000 30" ) );
632 
633  //adding cell selection
634  if (ix >= 0 && iy >= 0){
635 
636  int ncellsX = env.GetValue("fedra.track.map.NX" , 19);
637  int ncellsY = env.GetValue("fedra.track.map.NY" , 19);
638 
639  float xmin = env.GetValue("fedra.track.map.xmin" , 0.);
640  float xmax = env.GetValue("fedra.track.map.xmax" , 190000.);
641  float ymin = env.GetValue("fedra.track.map.ymin" , 0.);
642  float ymax = env.GetValue("fedra.track.map.ymax" , 190000.);
643 
644  float overlap_fraction = env.GetValue("fedra.track.map.overlapfraction" , 0.); //how much should they overlap (for each side)
645 
646  printf("EdbScanProc::TrackSetBT ** processing cell %d %d\n", ix , iy);
647  EdbCell2 * emulsioncell = new EdbCell2();
648  Log(2,"EdbScanProc::TrackSetBT","cell layout, %d x cells from %f to %f, %d y cells from %f to %f",ncellsX, xmin, xmax, ncellsY, ymin, ymax );
649  emulsioncell->InitCell(ncellsX,xmin,xmax,ncellsY,ymin,ymax,1); //1 is the maximum number for cells. In this case I use the cells only to map positions
650  //setting header cut manually
651  cut += Form("TMath::Abs(s.eX-%f) < %f && TMath::Abs(s.eY-%f) < %f",
652  emulsioncell->X(ix),emulsioncell->Xbin()*(1.+overlap_fraction)/2.,emulsioncell->Y(iy),emulsioncell->Ybin()*(1.+overlap_fraction)/2.);
653  }
654 
655  EdbAffine2D misalign[60];
656  if(do_misalign) {
657  // 1 2 3 4 5 6 7 8 9
658  int dx[9] = {0,0,1,1,1,0,-1,-1,-1};
659  int dy[9] = {0,1,1,0,-1,-1,-1,0,1};
660  for(int i=0; i<60; i++) {
661  misalign[i].ShiftX( dx[i%9] * misalign_offset );
662  misalign[i].ShiftY( dy[i%9] * misalign_offset );
663  if(gEDBDEBUGLEVEL>1) printf("%d | %d %d\n",i, dx[i%9], dy[i%9]);
664  }
665  }
666 
667  // read segments and use them for tracking
668  int all_volume_segments=0;
669  for(int ipass=0; ipass<npass; ipass++) {
670  if(gEDBDEBUGLEVEL>1) printf("\n\n*************** ipass=%d ************\n",ipass);
671  etra.eCollisionsRate=0;
672  EdbAffine2D acorr;
673  for(int i=0; i<npl; i++) {
674  EdbID *id = ss->GetID(i);
675  if (ix >= 0 && iy >= 0){ //we want (for now) to read the same couples for all cells
676  id->eMajor = 0;
677  id->eMinor = 0;
678  }
679  EdbPlateP *plate = ss->GetPlate(id->ePlate);
680 
681  EdbPattern p;
682  p.SetScanID(*id);
683  //all_volume_segments += eSproc->ReadPatCPnopar(p,*id, cut, do_erase);
684  int nread = eSproc->ReadPatCPnopar(p,*id, cut, do_erase);
685  all_volume_segments += nread;
686  if (nread == 0){
687  printf("skipping plate, %i, nread is zero", id->ePlate);
688  continue;
689  }
690  p.SetZ(plate->Z());
691  p.SetSegmentsZ();
692  p.SetID(i);
693  p.SetPID(i);
694  p.SetSegmentsPID();
695  p.Transform( plate->GetAffineXY() );
696  p.TransformShr( plate->Shr() );
697  p.TransformA( plate->GetAffineTXTY() );
698  p.SetSegmentsPlate(id->ePlate);
699 
700  if(do_local_corr) {
701  int nseg = p.N();
702  for(int j=0; j<nseg; j++) {
703  EdbSegP *s = p.GetSegment(j);
704  plate->CorrectSegLocal(*s);
705  }
706  }
707 
708  if(ePRC.doXY ) p.RemovePosMargins( ePRC.x0, ePRC.y0, ePRC.dx, ePRC.dy );
709  if(ePRC.doAng) p.RemoveAngMargins( ePRC.tx, ePRC.ty, ePRC.dtx, ePRC.dty );
710  // TODO doZ
711 
712  if(do_misalign) {
713  p.Transform(&misalign[i]);
714  Log(2,"EdbScanTracking::TrackSetBT","apply misalignment of %f",misalign_offset);
715  }
716 
717  if(eDoRealign)
718  {
719  if( i>=1 ) etra.CheckPatternAlignment(p,*plate, 0, acorr);
720 // if( i>=1 ) etra.CheckPatternAlignment(p,*plate,1);
721  //if( i>=5 ) etra.CheckPatternAlignment(p,*plate,2);
722  //if( i>=10 ) etra.CheckPatternAlignment(p,*plate,(int)(Sqrt(i)));
723  }
724  if(do_track)
725  {
726  Log(1,"EdbScanTracking::TrackSetBT","AddPattern with ScanID: %s and %d segments",id->AsString(),p.N());
727  if(i>0)
728  if(etra.eDoUseMCS==3) etra.ExtrapolateTracksToZ_mcs3(p.Z());
729  else etra.ExtrapolateTracksToZ(p.Z());
730 
731  etra.FillTrZMap();
732  etra.AddPattern(p);
733  }
734  if(do_shtag) etra.FillXYseg(p);
735  }
736  }
737 
739 
740  int ntr = etra.Tracks().GetEntriesFast();
741 
742  for(int i=0; i<ntr; i++) {
743  EdbTrackP *t = (EdbTrackP *)(etra.Tracks().At(i));
744  if(t->N()<eNsegMin) t->SetFlag(-10);
745  }
746 
747  etra.SetSegmentsErrors();
748  etra.FitTracks();
749 
750  int cnt_badtrk=0;
751  int cnt_attached_segments=0;
752  TObjArray selectedTracks(ntr);
753  if(do_comb) {
754  etra.CombTracks(selectedTracks);
755  } else {
756  int cnt=0;
757  for(int i=0; i<ntr; i++) {
758  EdbTrackP *t = (EdbTrackP *)(etra.Tracks().At(i));
759  if(t->Flag()!=-10) {
760  t->SetID(cnt++);
761  t->SetCounters();
762  t->SetSegmentsTrack();
763  t->SetP(momentum);
764  selectedTracks.Add(t);
765  cnt_attached_segments += t->N();
766  } else cnt_badtrk++;
767  }
768  }
769  printf("\n segments all/attached: %d/%d tracks selected/bad = %d/%d\n",
770  all_volume_segments, cnt_attached_segments, selectedTracks.GetEntriesFast(), cnt_badtrk );
771  EdbDataProc::MakeTracksTree( selectedTracks, 0., 0., Form("b%s.trk.root", idset.AsString()) );
772  TFile f( Form("b%s.trk.root", idset.AsString()) ,"UPDATE");
773  env.Write();
774  f.Close();
775 
776  SaveHist(idset,etra);
777 }
TCut cut
Definition: check_shower.C:6
Definition: EdbCell2.h:151
int InitCell(EdbCell2 &c)
Definition: EdbCell2.h:170
float X(int ix) const
Definition: EdbCell2.h:60
float Ybin() const
Definition: EdbCell2.h:78
float Y(int iy) const
Definition: EdbCell2.h:61
float Xbin() const
Definition: EdbCell2.h:77
Definition: EdbBrick.h:13
int ReadPatCPnopar(EdbPattern &pat, EdbID id, TCut cut="1", bool do_erase=false, bool read_mt=false)
Definition: EdbScanProc.cxx:719
int WriteScanSet(EdbID id, EdbScanSet &ss)
Definition: EdbScanProc.cxx:1467
EdbScanSet * ReadScanSet(EdbID id)
Definition: EdbScanProc.cxx:1521
Definition: EdbScanSet.h:11
void SetPredictionZ(const char *str)
Definition: EdbScanTracking.cxx:962
EdbScanProc * eSproc
Definition: EdbScanTracking.h:102
void SetPredictionXY(const char *str)
Definition: EdbScanTracking.cxx:957
void SetPredictionAng(const char *str)
Definition: EdbScanTracking.cxx:967
Definition: EdbSegP.h:18
void CheckPatternAlignment(EdbPattern &p, EdbPlateP &plate, int nsegmin, EdbAffine2D &acorr)
Definition: EdbScanTracking.cxx:77
void SetMomentum(float p)
Definition: EdbScanTracking.h:66
void FillXYseg(EdbPattern &p)
Definition: EdbScanTracking.cxx:116
void SetRadLength(float x0)
Definition: EdbScanTracking.h:67
float xmin
Definition: emthickness.cpp:61
float ymin
Definition: emthickness.cpp:63
float xmax
Definition: emthickness.cpp:61
float ymax
Definition: emthickness.cpp:63
ss
Definition: energy.C:62
Int_t plate
Definition: merge_Energy_SytematicSources_Electron.C:1
UInt_t id
Definition: tlg2pattern.C:118
EdbSegP * s
Definition: tlg2pattern.C:32

Member Data Documentation

◆ eDoRealign

bool EdbScanTracking::eDoRealign

◆ eNgapMax

int EdbScanTracking::eNgapMax

◆ eNsegMin

int EdbScanTracking::eNsegMin

◆ ePRC

PredictionCut EdbScanTracking::ePRC

◆ eSproc

EdbScanProc* EdbScanTracking::eSproc

The documentation for this class was generated from the following files: