FEDRA emulsion software from the OPERA Collaboration
EdbDataPiece Class Reference

#include <EdbDataSet.h>

Inheritance diagram for EdbDataPiece:
Collaboration diagram for EdbDataPiece:

Public Member Functions

int AcceptViewHeader (const EdbViewHeader *head)
 
void AddCutCP (float var[6])
 
void AddRCut (int layer, TCut &cut)
 
void AddRunFile (const char *name)
 
void AddSegmentCut (int layer, int xi, float min[5], float max[5])
 
void AddSegmentCut (int layer, int xi, float var[10])
 
float CalculateSegmentChi2 (EdbSegment *seg, float sx, float sy, float sz)
 
int CheckCCD (int maxentr=2000)
 
void CloseCPData ()
 
void CloseRun ()
 
int CorrectAngles ()
 
int CorrectAngles (TTree *tree)
 
void CorrectShrinkage (int layer, float shr)
 
 EdbDataPiece ()
 
 EdbDataPiece (int plate, int piece, char *file, int flag)
 
int Flag () const
 
int GetAreaData (EdbPVRec *ali, int const area, int const side)
 
EdbScanCondGetCond (int id)
 
int GetCPData (EdbPattern *pat, EdbPattern *p1=0, EdbPattern *p2=0)
 
int GetCPData_new (EdbPattern *pat, EdbPattern *p1=0, EdbPattern *p2=0, TIndex2 *trseg=0)
 
EdbSegmentCutGetCut (int layer, int i)
 
float GetCutGR () const
 
EdbLayerGetLayer (int id)
 
int GetLinkedSegEntr (int side, int aid, int vid, int sid, TArrayI &entr) const
 
EdbScanCondGetMakeCond (int id)
 
EdbLayerGetMakeLayer (int id)
 
const char * GetNameCP () const
 
int GetOUTPUT () const
 
int GetRawData (EdbPVRec *ali)
 
float GetRawSegmentPix (EdbSegment *seg)
 
TCut * GetRCut (int layer)
 
const char * GetRunFile (int i) const
 
int InitCouplesInd ()
 
int InitCouplesTree (const char *mode="READ")
 
int MakeLinkListArea (int irun)
 
int MakeLinkListCoord (int irun)
 
const char * MakeName ()
 
const char * MakeNameCP (const char *dir)
 
void MakeNamePar (const char *dir)
 
int NCuts (int layer)
 
int Nruns () const
 
int PassCutCP (float var[6])
 
int PassCuts (int id, float var[5])
 
int Plate () const
 
void Print ()
 
int ReadPiecePar (const char *file)
 
int RemoveCCDPeak (TMatrix &matr)
 
void Set0 ()
 
void SetCouplesTree (TTree *tree)
 
void SetCutGR (float chi)
 
void SetOUTPUT (int out=1)
 
void SetVolume0 (float x0, float y0, float z0, float tx=0, float ty=0)
 
void SetVolumeA (float dx, float dy)
 
int TakeCPSegment (EdbSegCouple &cp, EdbSegP &segP)
 
int TakePiecePar ()
 
int TakeRawSegment (EdbView *view, int id, EdbSegP &segP, int side)
 
int UpdateAffPar (int layer, EdbAffine2D &aff)
 
int UpdateAffTPar (int layer, EdbAffine2D &aff)
 
int UpdateSegmentCut (EdbSegmentCut cut)
 
int UpdateShrPar (int layer)
 
int UpdateZPar (int layer, float z)
 
void WriteCuts ()
 
virtual ~EdbDataPiece ()
 

Static Public Member Functions

static TTree * InitCouplesTree (const char *file, const char *mode)
 

Public Attributes

Int_t eAFID
 
Int_t eCLUST
 
TIndexCelleCouplesInd
 
TTree * eCouplesTree
 
EdbMaskeEraseMask
 
TString eFileNameCP
 root-style text cuts More...
 
TString eFileNamePar
 
EdbRuneRun
 

Private Attributes

TIndexCelleAreas [3]
 
EdbScanCondeCond [3]
 
Float_t eCutCP [6]
 
Float_t eCutGR
 
TObjArray * eCuts [3]
 
Int_t eFlag
 
EdbLayereLayers [3]
 
Int_t eOUTPUT
 
Int_t ePiece
 
Int_t ePlate
 
TCut * eRCuts [3]
 
TObjArray eRunFiles
 

Constructor & Destructor Documentation

◆ EdbDataPiece() [1/2]

EdbDataPiece::EdbDataPiece ( )

◆ EdbDataPiece() [2/2]

EdbDataPiece::EdbDataPiece ( int  plate,
int  piece,
char *  file,
int  flag 
)

40 {
41  for(int i=0; i<3; i++) eLayers[i]=0;
42  Set0();
43  ePlate=plate;
44  ePiece=piece;
46  eFlag=flag;
47 }
void AddRunFile(const char *name)
Definition: EdbDataSet.cxx:181
Int_t ePiece
Definition: EdbDataSet.h:33
Int_t eFlag
Definition: EdbDataSet.h:34
Int_t ePlate
Definition: EdbDataSet.h:32
void Set0()
Definition: EdbDataSet.cxx:66
EdbLayer * eLayers[3]
Definition: EdbDataSet.h:38
Int_t plate
Definition: merge_Energy_SytematicSources_Electron.C:1
TFile * file
Definition: write_pvr.C:3

◆ ~EdbDataPiece()

EdbDataPiece::~EdbDataPiece ( )
virtual

51 {
52  int i;
53  for(i=0; i<3; i++) if(eLayers[i]) {delete eLayers[i]; eLayers[i]=0;}
54  for(i=0; i<3; i++) if(eAreas[i]) {delete eAreas[i]; eAreas[i] =0;}
55  for(i=0; i<3; i++) if(eCond[i]) {delete eCond[i]; eCond[i] =0;}
56  for(i=0; i<3; i++) if(eCuts[i]) {delete eCuts[i]; eCuts[i] =0;}
57  for(i=0; i<3; i++) if(eRCuts[i]) {delete eRCuts[i]; eRCuts[i] =0;}
58  if( eCouplesInd) { delete eCouplesInd; eCouplesInd=0;}
59  if( eEraseMask ) { delete eEraseMask; eEraseMask=0; }
60  eRunFiles.Delete();
61  CloseRun();
62  CloseCPData();
63 }
EdbScanCond * eCond[3]
Definition: EdbDataSet.h:39
void CloseCPData()
Definition: EdbDataSet.cxx:91
TIndexCell * eCouplesInd
Definition: EdbDataSet.h:51
EdbMask * eEraseMask
Definition: EdbDataSet.h:56
TObjArray eRunFiles
Definition: EdbDataSet.h:35
TCut * eRCuts[3]
Definition: EdbDataSet.h:46
TObjArray * eCuts[3]
Definition: EdbDataSet.h:41
TIndexCell * eAreas[3]
Definition: EdbDataSet.h:40
void CloseRun()
Definition: EdbDataSet.cxx:105

Member Function Documentation

◆ AcceptViewHeader()

int EdbDataPiece::AcceptViewHeader ( const EdbViewHeader head)

1223 {
1224  EdbSegP p;
1225  if(eAFID==0) {
1226  p.SetX( head->GetXview() );
1227  p.SetY( head->GetYview() );
1228  } else {
1229  p.SetX( 0. );
1230  p.SetY( 0. );
1231  p.Transform( head->GetAffine() );
1232  }
1233  p.SetX( p.X() - GetLayer(0)->X() );
1234  p.SetY( p.Y() - GetLayer(0)->Y() );
1235  p.Transform( GetLayer(0)->GetAffineXY() );
1236  if( p.X() < -GetLayer(0)->DX() ) return 0;
1237  if( p.X() > GetLayer(0)->DX() ) return 0;
1238  if( p.Y() < -GetLayer(0)->DY() ) return 0;
1239  if( p.Y() > GetLayer(0)->DY() ) return 0;
1240  return 1;
1241 }
Int_t eAFID
Definition: EdbDataSet.h:28
EdbLayer * GetLayer(int id)
Definition: EdbDataSet.h:86
Definition: EdbSegP.h:18
Float_t GetXview() const
Definition: EdbView.h:93
Float_t GetYview() const
Definition: EdbView.h:94
EdbAffine2D const * GetAffine() const
Definition: EdbView.h:72
Double_t X
Definition: tlg2pattern.C:77
Double_t Y
Definition: tlg2pattern.C:77
p
Definition: testBGReduction_AllMethods.C:8

◆ AddCutCP()

void EdbDataPiece::AddCutCP ( float  var[6])

251 {
252  for(int i=0; i<6; i++) eCutCP[i]=var[i];
253 }
Float_t eCutCP[6]
Definition: EdbDataSet.h:42

◆ AddRCut()

void EdbDataPiece::AddRCut ( int  layer,
TCut &  cut 
)

241 {
242  if(layer<0) return;
243  if(layer>2) return;
244 
245  if(!eRCuts[layer]) eRCuts[layer] = new TCut(cut);
246  else (*(eRCuts[layer]))+=cut;
247 }
TCut cut
Definition: check_shower.C:6

◆ AddRunFile()

void EdbDataPiece::AddRunFile ( const char *  name)

182 {
183  TObjString *str = new TObjString(name);
184  eRunFiles.Add(str);
185 }
const char * name
Definition: merge_Energy_SytematicSources_Electron.C:24

◆ AddSegmentCut() [1/2]

void EdbDataPiece::AddSegmentCut ( int  layer,
int  xi,
float  min[5],
float  max[5] 
)

230 {
231  if(!eCuts[layer]) eCuts[layer] = new TObjArray();
233  cut->SetXI(xi);
234  cut->SetMin(min);
235  cut->SetMax(max);
236  eCuts[layer]->Add( cut );
237 }
float min(TClonesArray *t)
Definition: bitview.cxx:275
int max
Definition: check_shower.C:41
Definition: EdbSegmentCut.h:6

◆ AddSegmentCut() [2/2]

void EdbDataPiece::AddSegmentCut ( int  layer,
int  xi,
float  var[10] 
)

223 {
224  if(!eCuts[layer]) eCuts[layer] = new TObjArray();
225  eCuts[layer]->Add( new EdbSegmentCut(xi,var) );
226 }

◆ CalculateSegmentChi2()

float EdbDataPiece::CalculateSegmentChi2 ( EdbSegment seg,
float  sx,
float  sy,
float  sz 
)

659 {
660  //TODO: remove this function from here (already in EdbViewRec)
661 
662  //assumed that clusters are attached to segments
663  double chi2=0;
664  EdbCluster *cl=0;
665  TObjArray *clusters = seg->GetElements();
666  if(!clusters) return 0;
667  int ncl = clusters->GetLast()+1;
668  if(ncl<=0) return 0;
669 
670  float xyz1[3], xyz2[3]; // segment line parametrized as 2 points
671  float xyz[3];
672  bool inside=true;
673 
674  xyz1[0] = seg->GetX0() /sx;
675  xyz1[1] = seg->GetY0() /sy;
676  xyz1[2] = seg->GetZ0() /sz;
677  xyz2[0] = (seg->GetX0() + seg->GetDz()*seg->GetTx()) /sx;
678  xyz2[1] = (seg->GetY0() + seg->GetDz()*seg->GetTy()) /sy;
679  xyz2[2] = (seg->GetZ0() + seg->GetDz()) /sz;
680 
681  double d;
682  for(int i=0; i<ncl; i++ ) {
683  cl = (EdbCluster*)clusters->At(i);
684  xyz[0] = cl->GetX()/sx;
685  xyz[1] = cl->GetY()/sy;
686  xyz[2] = cl->GetZ()/sz;
687  d = EdbMath::DistancePointLine3(xyz,xyz1,xyz2, inside);
688  chi2 += d*d;
689  }
690 
691  return TMath::Sqrt(chi2/ncl);
692 }
void d()
Definition: RecDispEX.C:381
Definition: EdbCluster.h:19
Float_t GetX() const
Definition: EdbCluster.h:51
Float_t GetY() const
Definition: EdbCluster.h:52
Float_t GetZ() const
Definition: EdbCluster.h:53
static double DistancePointLine3(float Point[3], float LineStart[3], float LineEnd[3], bool inside)
Definition: EdbMath.cxx:61
virtual Float_t GetDz() const
Definition: EdbSegment.h:42
virtual Float_t GetX0() const
Definition: EdbSegment.h:37
virtual Float_t GetTx() const
Definition: EdbSegment.h:40
virtual Float_t GetZ0() const
Definition: EdbSegment.h:39
virtual Float_t GetY0() const
Definition: EdbSegment.h:38
virtual Float_t GetTy() const
Definition: EdbSegment.h:41
TObjArray * GetElements() const
Definition: EdbSegment.h:115
Float_t chi2
Definition: testBGReduction_By_ANN.C:14

◆ CheckCCD()

int EdbDataPiece::CheckCCD ( int  maxentr = 2000)

948 {
949  if (eRun ) delete eRun;
950  eRun = new EdbRun( GetRunFile(0),"READ" );
951  if(!eRun) { Log(1,"EdbDataPiece::CheckCCD","ERROR open file: %s",GetRunFile(0)); return -1; }
952  EdbView *view = eRun->GetView();
953  EdbSegment *seg;
954 
955  int npeak=0;
956 
957  TMatrix matr(1000,1000);
958  int ix,iy;
959 
960  int i,j;
961  for(i=0; i<1000; i++)
962  for(j=0; j<1000; j++)
963  matr[i][j]=0;
964 
965  int ncheck=0;
966  int nentr = TMath::Min(maxentr,eRun->GetEntries());
967  Log(2,"EdbDataPiece::CheckCCD","nentr=%d",nentr);
968  for (i=0; i<nentr; i++) {
969  view = eRun->GetEntry(i);
970  int nseg=view->Nsegments();
971  for (j=0; j<nseg; j++) {
972  seg = view->GetSegment(j);
973  if( seg->GetTx() > .05 ) continue;
974  if( seg->GetTx() < -.05 ) continue;
975  if( seg->GetTy() > .05 ) continue;
976  if( seg->GetTy() < -.05 ) continue;
977  ix = (Int_t)(seg->GetX0()+500.);
978  iy = (Int_t)(seg->GetY0()+500.);
979  (matr[ix][iy])++;
980  ncheck++;
981  }
982  }
983 
984  Log(2,"EdbDataPiece::CheckCCD","ncheck=%d",ncheck);
985  for(i=0; i<200; i++ ) { //eliminate upto 200 CCD defects
986  if(!RemoveCCDPeak(matr)) break;
987  npeak++;
988  }
989  return npeak;
990 }
bool Log(int level, const char *location, const char *fmt,...)
Definition: EdbLog.cxx:75
const char * GetRunFile(int i) const
Definition: EdbDataSet.cxx:188
int RemoveCCDPeak(TMatrix &matr)
Definition: EdbDataSet.cxx:993
EdbRun * eRun
Definition: EdbDataSet.h:53
Definition: EdbRun.h:74
int GetEntries() const
Definition: EdbRun.h:135
EdbView * GetEntry(int entry, int ih=1, int icl=0, int iseg=1, int itr=0, int ifr=0)
Definition: EdbRun.cxx:489
EdbView * GetView() const
Definition: EdbRun.h:109
Definition: EdbSegment.h:61
Definition: EdbView.h:134
Int_t Nsegments() const
Definition: EdbView.h:216
EdbSegment * GetSegment(int i) const
Definition: EdbView.h:219

◆ CloseCPData()

void EdbDataPiece::CloseCPData ( )

92 {
93  if (eCouplesTree) {
94  TFile *f = eCouplesTree->GetDirectory()->GetFile();
95  if (f) {
96  if(f->IsWritable()) eCouplesTree->AutoSave();
97  SafeDelete(eCouplesTree);
98  SafeDelete(f);
99  }
101  }
102 }
FILE * f
Definition: RecDispMC.C:150
TTree * eCouplesTree
Definition: EdbDataSet.h:54
#define NULL
Definition: nidaqmx.h:84

◆ CloseRun()

void EdbDataPiece::CloseRun ( )

106 {
107  if(eRun) delete eRun;
108  eRun=0;
109 }

◆ CorrectAngles() [1/2]

int EdbDataPiece::CorrectAngles ( )

881 {
882  int n=0;
883  TTree *cptree=0;
884  cptree=EdbDataPiece::InitCouplesTree(GetNameCP(),"READ");
885  if( cptree ) n = CorrectAngles(cptree);
886  Log(2,"CorrectAngles","in piece: %s using %d basetracks",GetNameCP(),n);
887  return n;
888 }
int InitCouplesTree(const char *mode="READ")
Definition: EdbDataSet.cxx:1244
const char * GetNameCP() const
Definition: EdbDataSet.h:75
int CorrectAngles()
Definition: EdbDataSet.cxx:880

◆ CorrectAngles() [2/2]

int EdbDataPiece::CorrectAngles ( TTree *  tree)

892 {
893  EdbSegCouple *cp = 0;
894  EdbSegP *s1 = 0;
895  EdbSegP *s2 = 0;
896  EdbSegP *s = 0;
897  tree->SetBranchAddress("cp" , &cp );
898  tree->SetBranchAddress("s1." , &s1 );
899  tree->SetBranchAddress("s2." , &s2 );
900  tree->SetBranchAddress("s." , &s );
901 
902  EdbAffine2D *aff = new EdbAffine2D();
903 
904  int nentr = (int)(tree->GetEntries());
905  TArrayF x(nentr);
906  TArrayF y(nentr);
907  TArrayF x1(nentr);
908  TArrayF y1(nentr);
909  TArrayF x2(nentr);
910  TArrayF y2(nentr);
911 
912  int nseg = 0;
913  Log(2,"EdbDataPiece::CorrectAngles","nentr = %d",nentr);
914  for(int i=0; i<nentr; i++ ) {
915  tree->GetEntry(i);
916 
917  if(cp->N1tot()>1) continue;
918  if(cp->N2tot()>1) continue;
919  if(cp->CHI2()>1.5) continue;
920 
921  x1[nseg] = s1->TX();
922  y1[nseg] = s1->TY();
923  x2[nseg] = s2->TX();
924  y2[nseg] = s2->TY();
925  x[nseg] = (s2->X()-s1->X()) / (s2->Z()-s1->Z());
926  y[nseg] = (s2->Y()-s1->Y()) / (s2->Z()-s1->Z());
927  nseg++;
928  }
929 
930  aff->CalculateTurn( nseg,x1.fArray,y1.fArray,x.fArray,y.fArray );
931  UpdateAffTPar(1,*aff);
932  aff->CalculateTurn( nseg,x2.fArray,y2.fArray,x.fArray,y.fArray );
933  UpdateAffTPar(2,*aff);
934 
935  delete aff;
936 
937  // Closing tree and file. A.C.
938 
939  TFile *f = tree->GetDirectory()->GetFile();
940  SafeDelete(tree);
941  if (f) SafeDelete(f);
942 
943  return nseg;
944 }
Definition: EdbAffine.h:17
Int_t CalculateTurn(int n, float *x0, float *y0, float *x1, float *y1)
Definition: EdbAffine.cxx:449
int UpdateAffTPar(int layer, EdbAffine2D &aff)
Definition: EdbDataSet.cxx:534
Definition: EdbSegCouple.h:14
int N2tot() const
Definition: EdbSegCouple.h:57
int N1tot() const
Definition: EdbSegCouple.h:56
float CHI2() const
Definition: EdbSegCouple.h:58
Float_t TX() const
Definition: EdbSegP.h:172
Float_t X() const
Definition: EdbSegP.h:170
Float_t Z() const
Definition: EdbSegP.h:150
Float_t Y() const
Definition: EdbSegP.h:171
Float_t TY() const
Definition: EdbSegP.h:173
EdbSegP * s1
Definition: tlg2pattern.C:30
EdbSegP * s2
Definition: tlg2pattern.C:31
EdbSegP * s
Definition: tlg2pattern.C:32
EdbSegCouple * cp
Definition: tlg2pattern.C:29

◆ CorrectShrinkage()

void EdbDataPiece::CorrectShrinkage ( int  layer,
float  shr 
)

469 {
470  GetLayer(layer)->SetShrinkage( shr*GetLayer(layer)->Shr() );
471 }
void SetShrinkage(float shr)
Definition: EdbLayer.h:100

◆ Flag()

int EdbDataPiece::Flag ( ) const
inline
84 {return eFlag;}

◆ GetAreaData()

int EdbDataPiece::GetAreaData ( EdbPVRec ali,
int const  area,
int const  side 
)

1143 {
1144  TIndexCell *elist = eAreas[side]->At(aid);
1145  if(!elist) return 0;
1146  EdbPattern *pat = new EdbPattern( 0.,0., GetLayer(side)->Z() );
1147  pat->SetID(side);
1148 
1149 
1150  EdbSegP segP;
1151  EdbView *view = eRun->GetView();
1152  int nseg=0, nrej=0;
1153  int entry;
1154  int nsegV;
1155 
1156  int niu=elist->N();
1157  for(int iu=0; iu<niu; iu++) {
1158  entry = elist->At(iu)->Value();
1159  if(eCLUST) {
1160  view = eRun->GetEntry(entry,1,1,1);
1161  view->AttachClustersToSegments();
1162  }
1163  else view = eRun->GetEntry(entry);
1164 
1165  nsegV = view->Nsegments();
1166 
1167  for(int j=0;j<nsegV;j++) {
1168  if(!TakeRawSegment(view,j,segP,side)) {
1169  nrej++;
1170  continue;
1171  }
1172  nseg++;
1173  segP.SetVid(entry,j);
1174  segP.SetAid(view->GetAreaID(),view->GetViewID(),side);
1175  pat->AddSegment( segP);
1176  }
1177  }
1178 
1179  Log(2,"EdbDataPiece::GetAreaData","Area: %d ( %d%%) %d \t views: %d \t nseg: %d \t rejected: %d",
1180  aid,100*aid/eAreas[side]->N(1),side,niu,nseg, nrej );
1181  pat->SetSegmentsZ();
1182  ali->AddPattern(pat);
1183  return nseg;
1184 }
TLegendEntry * entry
Definition: Canv_SYSTEMATICS_ALLCOMBINED__RMSEnergy__vs__Energy__ELECTRON.C:130
EdbPVRec * ali
Definition: align.C:1
int TakeRawSegment(EdbView *view, int id, EdbSegP &segP, int side)
Definition: EdbDataSet.cxx:602
Int_t eCLUST
Definition: EdbDataSet.h:29
Definition: EdbPattern.h:280
void SetID(int id)
Definition: EdbPattern.h:318
void AddPattern(EdbPattern *pat)
Definition: EdbPattern.cxx:1867
void SetVid(int vid, int sid)
Definition: EdbSegP.h:134
void SetAid(int a, int v, int side=0)
Definition: EdbSegP.h:135
void SetSegmentsZ()
Definition: EdbPattern.cxx:275
EdbSegP * AddSegment(int i, EdbSegP &s)
Definition: EdbPattern.cxx:71
Int_t GetViewID() const
Definition: EdbView.h:190
int AttachClustersToSegments()
Definition: EdbView.cxx:360
Int_t GetAreaID() const
Definition: EdbView.h:191
Definition: TIndexCell.h:19
Long_t Value() const
Definition: TIndexCell.h:79
TIndexCell const * At(Int_t narg, Int_t vind[]) const
Definition: TIndexCell.cpp:519
Int_t N() const
Definition: TIndexCell.cpp:344
struct @8 Z

◆ GetCond()

EdbScanCond* EdbDataPiece::GetCond ( int  id)
inline
90  { if(eCond[id]) return (EdbScanCond *)eCond[id]; else return 0; }
Definition: EdbScanCond.h:10
UInt_t id
Definition: tlg2pattern.C:118

◆ GetCPData()

int EdbDataPiece::GetCPData ( EdbPattern pat,
EdbPattern p1 = 0,
EdbPattern p2 = 0 
)

TO CHECK !!!

737 {
738  Log(2,"EdbDataPiece::GetCPData","z = %f", GetLayer(0)->Z());
739  pat->SetID(0);
740  EdbSegP segP;
741 
742  TTree *tree=eCouplesTree;
743  EdbSegCouple *cp = 0;
744  EdbSegP *s1 = 0;
745  EdbSegP *s2 = 0;
746  EdbSegP *s = 0;
747 
748  TBranch *b_cp=0, *b_s=0, *b_s1=0, *b_s2=0;
749  b_cp = tree->GetBranch("cp");
750  b_s = tree->GetBranch("s.");
751  b_s1 = tree->GetBranch("s1.");
752  b_s2 = tree->GetBranch("s2.");
753 
754  b_cp->SetAddress( &cp );
755  b_s->SetAddress( &s );
756  b_s1->SetAddress( &s1 );
757  b_s2->SetAddress( &s2 );
758 
759 
760  int nseg = 0;
761  int nentr = (int)(tree->GetEntries());
762  for(int i=0; i<nentr; i++ ) {
763  tree->GetEntry(i);
764  b_cp->GetEntry(i);
765  b_s->GetEntry(i);
766  if( !TakeCPSegment(*cp,*s) ) continue;
767  if(pat) {
768  s->SetZ( s->Z() + pat->Z() );
769  //s->SetPID( ePlate*10 ); /// TO CHECK !!!
771  s->SetChi2(cp->CHI2P());
772  pat->AddSegment( *s );
773  nseg++;
774  }
775  if(p1) {
776  b_s1->GetEntry(i); // !!!
777  s1->SetZ( s1->Z() + pat->Z() );
778  //s1->SetPID( ePlate*10 +1 ); /// TO CHECK !!!
779  p1->AddSegment( *s1 );
780  nseg++;
781  }
782  if(p2) {
783  b_s2->GetEntry(i); // !!!
784  s2->SetZ( s2->Z() + pat->Z() );
785  //s2->SetPID( ePlate*10 + 2 ); /// TO CHECK !!!
786  p2->AddSegment( *s2 );
787  nseg++;
788  }
789  }
790 
791  Log(2,"EdbDataPiece::GetCPData","%d (of %d) segments are readed", nseg,nentr );
792 
793  return nseg;
794 }
int TakeCPSegment(EdbSegCouple &cp, EdbSegP &segP)
Definition: EdbDataSet.cxx:711
float CHI2P() const
Definition: EdbSegCouple.h:59
void SetZ(float z)
Definition: EdbSegP.h:122
void SetChi2(float chi2)
Definition: EdbSegP.h:132
Float_t Z() const
Definition: EdbPattern.h:87
static void SetBaseTrackVid(EdbSegP &s, int plate, int piece, int entry)

◆ GetCPData_new()

int EdbDataPiece::GetCPData_new ( EdbPattern pat,
EdbPattern p1 = 0,
EdbPattern p2 = 0,
TIndex2 trseg = 0 
)

TO CHECK !!!

798 {
799  Log(3,"EdbDataPiece::GetCPData_new","z = %f ", GetLayer(0)->Z());
800  if(!eCouplesTree) return 0;
801  pat->SetID(0);
802  EdbSegP segP;
803 
804  TTree *tree=eCouplesTree;
805  EdbSegCouple *cp = 0;
806  EdbSegP *s1 = 0;
807  EdbSegP *s2 = 0;
808  EdbSegP *s = 0;
809 
810  TBranch *b_cp=0, *b_s=0, *b_s1=0, *b_s2=0; // !!!
811  b_cp = tree->GetBranch("cp"); // !!!
812  b_s = tree->GetBranch("s."); // !!!
813  b_s1 = tree->GetBranch("s1."); // !!!
814  b_s2 = tree->GetBranch("s2."); // !!!
815 
816  b_cp->SetAddress( &cp );
817  b_s->SetAddress( &s );
818  b_s1->SetAddress( &s1 );
819  b_s2->SetAddress( &s2 );
820 
821  int nseg = 0;
822  int nentr = (int)(tree->GetEntries()); if(nentr<1) return 0;
823 
824  TCut *cut = GetRCut(0);
825  TEventList *lst =0;
826  if(cut) tree->Draw(">>lst", *cut );
827  else tree->Draw(">>lst", "" );
828  lst = (TEventList*)(gDirectory->GetList()->FindObject("lst"));
829 
830  if(!lst) {Log(1,"EdbDataPiece::GetCPData_new","ERROR!: lst do not found! empty couples tree??"); return 0;}
831 
832  int nlst =lst->GetN();
833 
834  int entr=0;
835  for(int i=0; i<nlst; i++ ) {
836  entr = lst->GetEntry(i);
837 
838  if(trseg) { //exclude segments participating in tracks
839  if( (trseg->Find(ePlate*1000+ePiece,entr) >= 0) ) continue;
840  }
841 
842  if(eEraseMask) if(eEraseMask->At(entr)) continue;
843 
844  b_cp->GetEntry(entr); // !!!
845  b_s->GetEntry(entr); // !!!
846  if( !TakeCPSegment(*cp,*s) ) continue;
847  if(pat) {
848  s->SetZ( s->Z() + pat->Z() );
849  //s->SetPID( ePlate*10 ); /// TO CHECK !!!
850  s->SetVid(ePlate*1000+ePiece,entr);
851  s->SetChi2(cp->CHI2P());
852  pat->AddSegment( *s );
853  nseg++;
854  }
855  if(p1) {
856  b_s1->GetEntry(entr); // !!!
857  s1->SetZ( s1->Z() + pat->Z() );
858  //s1->SetPID( ePlate*10 +1 ); /// TO CHECK !!!
859  p1->AddSegment( *s1 );
860  nseg++;
861  }
862  if(p2) {
863  b_s2->GetEntry(entr); // !!!
864  s2->SetZ( s2->Z() + pat->Z() );
865  //s2->SetPID( ePlate*10 + 2 ); /// TO CHECK !!!
866  p2->AddSegment( *s2 );
867  nseg++;
868  }
869  }
870 
871  SafeDelete(lst);
872 
873  if(cut) Log(2,"EdbDataPiece::GetCPData_new","select %d of %d segments by cut %s",nlst, nentr, cut->GetTitle() );
874  else Log(2,"EdbDataPiece::GetCPData_new","%d (of %d) segments accepted", nseg,nentr );
875 
876  return nseg;
877 }
void trseg(int event=40, const char *def)
Definition: check_vertex.C:44
TCut * GetRCut(int layer)
Definition: EdbDataSet.h:103
int At(int i)
Definition: EdbMask.h:19

◆ GetCut()

EdbSegmentCut* EdbDataPiece::GetCut ( int  layer,
int  i 
)
inline
100  { return (EdbSegmentCut *)(eCuts[layer]->UncheckedAt(i)); }

◆ GetCutGR()

float EdbDataPiece::GetCutGR ( ) const
inline
105 {return eCutGR;}
Float_t eCutGR
Definition: EdbDataSet.h:43

◆ GetLayer()

EdbLayer* EdbDataPiece::GetLayer ( int  id)
inline
87  { if(eLayers[id]) return (EdbLayer *)eLayers[id]; else return 0; }
Definition: EdbLayer.h:40

◆ GetLinkedSegEntr()

int EdbDataPiece::GetLinkedSegEntr ( int  side,
int  aid,
int  vid,
int  sid,
TArrayI &  entr 
) const

148 {
149  if(!eCouplesInd) return 0;
150  Long_t v[4];
151  v[0]=side; v[1]=aid; v[2]=vid; v[3]=sid;
152  TIndexCell *c = eCouplesInd->Find(4,v);
153  if(!c) return 0;
154  int n = c->N();
155  if(n>=0&&n<800000000)
156  {
157  entr.Set(n);
158  for(int i=0; i<n; i++) entr.AddAt( (int)(c->At(i)->Value()), i);
159  return n;
160  } else
161  {
162  Log(1,"EdbDataPiece::GetLinkedSegEntr","Error: n = %d out of range!",n);
163  }
164 }
TIndexCell * Find(Int_t narg, Long_t varg[]) const
Definition: TIndexCell.cpp:613

◆ GetMakeCond()

EdbScanCond * EdbDataPiece::GetMakeCond ( int  id)

264 {
265  if(id<0) return 0;
266  if(id>2) return 0;
267  if(!GetCond(id)) eCond[id] = new EdbScanCond();
268  return GetCond(id);
269 }
EdbScanCond * GetCond(int id)
Definition: EdbDataSet.h:89

◆ GetMakeLayer()

EdbLayer * EdbDataPiece::GetMakeLayer ( int  id)

214 {
215  if(id<0) return 0;
216  if(id>2) return 0;
217  if(!GetLayer(id)) eLayers[id] = new EdbLayer();
218  return GetLayer(id);
219 }

◆ GetNameCP()

const char* EdbDataPiece::GetNameCP ( ) const
inline
75 {return eFileNameCP.Data();}
TString eFileNameCP
root-style text cuts
Definition: EdbDataSet.h:49

◆ GetOUTPUT()

int EdbDataPiece::GetOUTPUT ( ) const
inline
106 {return eOUTPUT;}
Int_t eOUTPUT
Definition: EdbDataSet.h:44

◆ GetRawData()

int EdbDataPiece::GetRawData ( EdbPVRec ali)

1089 {
1090  //TODO: irun logic
1091 
1092  CloseRun();
1093  eRun = new EdbRun( GetRunFile(0),"READ" );
1094  if(!eRun) { Log(1,"EdbDataPiece::GetRawData","ERROR open file: %s",GetRunFile(0)); return -1; }
1095 
1096  EdbPattern *pat1 = new EdbPattern( 0.,0., GetLayer(1)->Z() + GetLayer(0)->Z() );
1097  EdbPattern *pat2 = new EdbPattern( 0.,0., GetLayer(2)->Z() + GetLayer(0)->Z() );
1098 
1099  EdbViewHeader *head=0;
1100  EdbSegP segP;
1101  EdbView *view = eRun->GetView();
1102  int nseg=0, nrej=0;
1103  int nsegV=0;
1104  int side=0;
1105 
1106  int nentr = eRun->GetEntries();
1107  for(int iv=0; iv<nentr; iv++ ) {
1108  head = eRun->GetEntryHeader(iv);
1109  if( head->GetNframesTop()==0 ) side=2;
1110  else if( head->GetNframesBot()==0 ) side=1;
1111 
1112  if( !AcceptViewHeader(head) ) continue;
1113 
1114 
1115  if(eCLUST) {
1116  view = eRun->GetEntry(iv,1,1,1);
1117  view->AttachClustersToSegments();
1118  }
1119  else view = eRun->GetEntry(iv);
1120 
1121  nsegV = view->Nsegments();
1122  for(int j=0;j<nsegV;j++) {
1123  if(!TakeRawSegment(view,j,segP,side)) {
1124  nrej++;
1125  continue;
1126  }
1127  nseg++;
1128  segP.SetVid(iv,j);
1129  segP.SetAid(view->GetAreaID(),view->GetViewID(),side);
1130 
1131  if(side==1) pat1->AddSegment( segP );
1132  else if(side==2) pat2->AddSegment( segP );
1133  }
1134 
1135  }
1136  ali->AddPattern(pat1);
1137  ali->AddPattern(pat2);
1138  return nseg;
1139 }
int AcceptViewHeader(const EdbViewHeader *head)
Definition: EdbDataSet.cxx:1222
EdbViewHeader * GetEntryHeader(int entry) const
Definition: EdbRun.cxx:548
Definition: EdbView.h:26
Int_t GetNframesTop() const
Definition: EdbView.h:120
Int_t GetNframesBot() const
Definition: EdbView.h:121

◆ GetRawSegmentPix()

float EdbDataPiece::GetRawSegmentPix ( EdbSegment seg)

696 {
697  //assumed that clusters are attached to segments
698  float pix=0;
699  EdbCluster *cl=0;
700  TObjArray *clusters = seg->GetElements();
701  if(!clusters) return 0;
702  int ncl = clusters->GetLast()+1;
703  for(int i=0; i<ncl; i++ ) {
704  cl = (EdbCluster*)clusters->At(i);
705  pix += cl->GetArea();
706  }
707  return pix;
708 }
Float_t GetArea() const
Definition: EdbCluster.h:54

◆ GetRCut()

TCut* EdbDataPiece::GetRCut ( int  layer)
inline
103 { return eRCuts[layer]; }

◆ GetRunFile()

const char * EdbDataPiece::GetRunFile ( int  i) const

189 {
190  if(Nruns()<i+1) return 0;
191  return ((TObjString *)eRunFiles.At(i))->GetName();
192 }
int Nruns() const
Definition: EdbDataSet.h:83

◆ InitCouplesInd()

int EdbDataPiece::InitCouplesInd ( )

113 {
114  if(eCouplesInd) delete eCouplesInd;
115  eCouplesInd = new TIndexCell();
116 
117  if(!eCouplesTree) if(!InitCouplesTree("READ")) return 0;
118  EdbSegP *s1 = 0;
119  EdbSegP *s2 = 0;
120  eCouplesTree->SetBranchAddress("s1." , &s1 );
121  eCouplesTree->SetBranchAddress("s2." , &s2 );
122 
123  Long_t v[5]; // side:aid:vid:sid:entry
124 
125  int nentr = (int)(eCouplesTree->GetEntries());
126 
127  for(int i=0; i<nentr; i++) {
128  eCouplesTree->GetEntry(i);
129  v[0] = 1;
130  v[1] = s1->Aid(0);
131  v[2] = s1->Aid(1);
132  v[3] = s1->Vid(1);
133  v[4] = i;
134  eCouplesInd->Add(5,v);
135  v[0] = 2;
136  v[1] = s2->Aid(0);
137  v[2] = s2->Aid(1);
138  v[3] = s2->Vid(1);
139  v[4] = i;
140  eCouplesInd->Add(5,v);
141  }
142  eCouplesInd->Sort();
143  return eCouplesInd->N();
144 }
Int_t Aid(int i) const
Definition: EdbSegP.h:166
Int_t Vid(int i) const
Definition: EdbSegP.h:165
void Sort(Int_t upto=kMaxInt)
Definition: TIndexCell.cpp:539
Int_t Add(Int_t narg, Long_t varg[])
Definition: TIndexCell.cpp:602

◆ InitCouplesTree() [1/2]

TTree * EdbDataPiece::InitCouplesTree ( const char *  file,
const char *  mode 
)
static
1252 {
1253  static TString tree_name("couples");
1254  TTree *tree = NULL;
1255 
1256  // checking for the existing directory
1257 
1258  FileStat_t buf;
1259 
1260  if (gSystem->GetPathInfo(gSystem->DirName(file_name), buf)) {
1261  if (gEDBDEBUGLEVEL > 0) {
1262  cout << "ERROR! Directory " << gSystem->DirName(file_name)
1263  << " does not exist.\n";
1264  cout << "Please run scanning procedure first for the plate "
1265  << gSystem->BaseName(gSystem->DirName(file_name)) << endl;
1266  }
1267  return 0;
1268 
1269  }
1270 
1271 
1272  TFile *f = new TFile(file_name, mode);
1273 
1274  if (f->IsOpen()) tree = (TTree*)f->Get(tree_name);
1275  else return 0;
1276 
1277  if (!tree) {
1278  f->cd();
1279  tree = new TTree(tree_name, tree_name);
1280  tree->SetMaxTreeSize(15000000000LL); //set 15 Gb file size limit)
1281  //tree->SetMaxVirtualSize( 512 * 1024 * 1024 ); // default is 64000000
1282 
1283  int pid1=0,pid2=0;
1284  float xv=0,yv=0;
1285  EdbSegCouple *cp=0;
1286  EdbSegP *s1=0;
1287  EdbSegP *s2=0;
1288  EdbSegP *s=0;
1289 
1290  tree->Branch("pid1",&pid1,"pid1/I");
1291  tree->Branch("pid2",&pid2,"pid2/I");
1292  tree->Branch("xv",&xv,"xv/F");
1293  tree->Branch("yv",&yv,"yv/F");
1294  tree->Branch("cp","EdbSegCouple",&cp,32000,99);
1295  tree->Branch("s1.","EdbSegP",&s1,32000,99);
1296  tree->Branch("s2.","EdbSegP",&s2,32000,99);
1297  tree->Branch("s." ,"EdbSegP",&s,32000,99);
1298  tree->Write();
1299  // tree->SetAutoSave(2000000);
1300  }
1301 
1302  if(!tree) Log(1,"EdbDataPiece::InitCouplesTree","ERROR!!! InitCouplesTree: can't initialize tree at %s as %s",file_name,mode);
1303 
1304  return tree;
1305 }
gEDBDEBUGLEVEL
Definition: energy.C:7

◆ InitCouplesTree() [2/2]

int EdbDataPiece::InitCouplesTree ( const char *  mode = "READ")

1245 {
1246  if ((eCouplesTree=InitCouplesTree(eFileNameCP,mode))) return 1;
1247  return 0;
1248 }

◆ MakeLinkListArea()

int EdbDataPiece::MakeLinkListArea ( int  irun)

1188 {
1189  if (eRun ) delete eRun;
1190  eRun = new EdbRun( GetRunFile(irun),"READ" );
1191  if(!eRun) { Log(1," EdbDataPiece::MakeLinkListArea","ERROR open file: %s",GetRunFile(irun)); return -1; }
1192 
1193  for(int i=0; i<3; i++) {
1194  if(eAreas[i]) delete eAreas[i];
1195  eAreas[i]= new TIndexCell();
1196  }
1197 
1198  int nentr = eRun->GetEntries();
1199  Log(2,"EdbDataPiece::MakeLinkListArea","Make views entry map, nentr = %d",nentr);
1200 
1201  Long_t v[2]; // areaID,entry
1202  EdbViewHeader *head=0;
1203 
1204  for(int iv=0; iv<nentr; iv++ ) {
1205  head = eRun->GetEntryHeader(iv);
1206  v[0]=head->GetAreaID();
1207  v[1]=iv;
1208  if(head->GetNframesTop()==0) { // fill down views
1209  eAreas[2]->Add(2,v);
1210  }
1211  else if(head->GetNframesBot()==0) { // fill up views
1212  eAreas[1]->Add(2,v);
1213  }
1214  }
1215 
1216  eAreas[1]->Sort();
1217  eAreas[2]->Sort();
1218  return eAreas[1]->N(1);
1219 }
Int_t GetAreaID() const
Definition: EdbView.h:91

◆ MakeLinkListCoord()

int EdbDataPiece::MakeLinkListCoord ( int  irun)

1310 {
1311  if(eRun) delete eRun;
1312  eRun = new EdbRun( GetRunFile(irun),"READ" );
1313  if(!eRun) { Log(1,"EdbDataPiece::MakeLinkListCoord","ERROR open file: %s",GetRunFile(0)); return -1; }
1314 
1315 
1316  for(int i=0; i<3; i++) {
1317  if(eAreas[i]) delete eAreas[i];
1318  eAreas[i]= new TIndexCell();
1319  }
1320 
1321  int nentr = eRun->GetEntries();
1322  Log(2,"EdbDataPiece::MakeLinkListCoord","Make views coordinate map, nentr = %d",nentr);
1323 
1324  TIndexCell upc;
1325  TIndexCell downc;
1326  Long_t v[3]; // x,y,entry
1327  EdbViewHeader *head=0;
1328 
1329  Long_t xx=0, yy=0;
1330  float cx = 2000., cy = 2000.; // 2x2 mm cells
1331  float dx = 400. , dy = 400.; // 400 microns margins
1332  float xv=0,yv=0;
1333  int mx[9] = {0, 0, 0,-1, 1, -1,-1, 1, 1};
1334  int my[9] = {0,-1, 1, 0, 0, -1, 1,-1, 1};
1335 
1336  for(int iv=0; iv<nentr; iv++ ) {
1337 
1338  head = eRun->GetEntryHeader(iv);
1339  if( !AcceptViewHeader(head) ) continue;
1340 
1341  yv = head->GetXview();
1342  xv = head->GetYview();
1343  xx = (Long_t)(xv/cx);
1344  yy = (Long_t)(yv/cx);
1345  v[0] = xx;
1346  v[1] = yy;
1347  v[2] = iv;
1348 
1349  if(head->GetNframesBot()==0) { // fill up views
1350  upc.Add(3,v);
1351  }
1352  else if(head->GetNframesTop()==0) { // fill down views
1353  downc.Add(3,v); // add center
1354  int im;
1355  for( im=1; im<5; im++ ) { // add sides margins
1356  v[0] = (Long_t)(( xv+dx*mx[im] ) / cx);
1357  v[1] = (Long_t)(( yv+dy*my[im] ) / cy);
1358  if( (v[0] != xx) || (v[1] != yy) )
1359  downc.Add(3,v);
1360  }
1361  for( im=5; im<9; im++ ) { // add angles margins
1362  v[0] = (Long_t)(( xv+dx*mx[im] ) / cx);
1363  v[1] = (Long_t)(( yv+dy*my[im] ) / cy);
1364  if( (v[0] != xx) && (v[1] != yy) )
1365  // if(!downc.Find(3,v))
1366  downc.Add(3,v);
1367  }
1368 
1369  }
1370 
1371  }
1372 
1373  upc.Sort();
1374  downc.Sort();
1375 
1376  TIndexCell *clx=0;
1377  TIndexCell *cly=0;
1378 
1379  int areac=0;
1380  int nix,niy,nie;
1381  nix=upc.N(1);
1382  for(int ix=0; ix<nix; ix++) {
1383  clx = upc.At(ix);
1384  xx = clx->Value();
1385  niy=clx->N(1);
1386  for(int iy=0; iy<niy; iy++) {
1387  cly = clx->At(iy);
1388  yy = cly->Value();
1389  areac++;
1390 
1391  nie = cly->N(1);
1392  int ie;
1393  for(ie=0; ie<nie; ie++) {
1394  v[0]=areac;
1395  v[1] = cly->At(ie)->Value();
1396  eAreas[1]->Add(2,v);
1397  }
1398 
1399  cly = downc.Find(xx)->Find(yy);
1400  if(!cly) continue;
1401  nie=cly->N(1);
1402  for(ie=0; ie<nie; ie++) {
1403  v[0] = areac;
1404  v[1] = cly->At(ie)->Value();
1405  eAreas[2]->Add(2,v);
1406  }
1407  }
1408  }
1409 
1410  eAreas[1]->Sort();
1411  eAreas[2]->Sort();
1412 
1413  return eAreas[1]->N(1);
1414 }

◆ MakeName()

const char * EdbDataPiece::MakeName ( )

196 {
197  char name[8];
198  sprintf(name,"%2.2d_%3.3d", ePlate,ePiece);
199  SetName(name);
200  return GetName();
201 }
graph SetName("Graph")

◆ MakeNameCP()

const char * EdbDataPiece::MakeNameCP ( const char *  dir)

205 {
206  eFileNameCP=dir;
208  eFileNameCP+=".cp.root";
209  return eFileNameCP.Data();
210 }
const char * MakeName()
Definition: EdbDataSet.cxx:195

◆ MakeNamePar()

void EdbDataPiece::MakeNamePar ( const char *  dir)

274 {
275  eFileNamePar=dir;
276  eFileNamePar += MakeName();
277  eFileNamePar += ".par";
278 }
TString eFileNamePar
Definition: EdbDataSet.h:50

◆ NCuts()

int EdbDataPiece::NCuts ( int  layer)

257 {
258  if(!eCuts[layer]) return 0;
259  return eCuts[layer]->GetEntriesFast();
260 }

◆ Nruns()

int EdbDataPiece::Nruns ( ) const
inline
83 { return eRunFiles.GetEntriesFast(); }

◆ PassCutCP()

int EdbDataPiece::PassCutCP ( float  var[6])

586 {
587  if(eCutCP[0]<0) return 1;
588  for(int i=0; i<6; i++) if(var[i]>eCutCP[i]) return 0;
589  return 1;
590 }

◆ PassCuts()

int EdbDataPiece::PassCuts ( int  id,
float  var[5] 
)

594 {
595  int nc = NCuts(id);
596  for(int i=0; i<nc; i++)
597  if( !(GetCut(id,i)->PassCut(var)) ) return 0;
598  return 1;
599 }
EdbSegmentCut * GetCut(int layer, int i)
Definition: EdbDataSet.h:99
int NCuts(int layer)
Definition: EdbDataSet.cxx:256

◆ Plate()

int EdbDataPiece::Plate ( ) const
inline
65 {return ePlate;}

◆ Print()

void EdbDataPiece::Print ( )

167 {
168  printf("Piece: %s\n",GetName());
169  printf("%d %d \n", ePlate,ePiece);
170  int i;
171  for(i=0; i<Nruns(); i++)
172  printf("%s\n",GetRunFile(i));
173  for(i=0; i<3; i++) if(eLayers[i]) eLayers[i]->Print();
174  for(i=0; i<3; i++) if(eCond[i]) eCond[i]->Print();
175  for(i=0; i<3; i++)
176  if(eCuts[i])
177  for(int j=0; j<NCuts(i); j++) GetCut(i,j)->Print();
178 }
void Print()
Definition: EdbLayer.cxx:150
void Print() const
Definition: EdbScanCond.cxx:50
void Print()
Definition: EdbSegmentCut.cxx:66

◆ ReadPiecePar()

int EdbDataPiece::ReadPiecePar ( const char *  file)

288 {
289  // read parameters from par-file
290  // return: 0 if ok
291  // -1 if file access failed
292 
293  char buf[512];
294  char key[256];
295  char name[512];
296 
297  FILE *fp = fopen(file,"r");
298  if (!fp) {
299  Log(2,"ReadPiecePar","ERROR open file: %s", file);
300  return -1;
301  }
302  else Log(3,"ReadPiecePar","Read piece parameters from file: %s", file );
303 
304  int id,mode;
305  float z,zmin,zmax,shr;
306  float a11,a12,a21,a22,b1,b2;
307  float x1,x2,x3,x4;
308  float var[10];
309 
310  while (fgets(buf, sizeof(buf), fp)) {
311  for (Int_t i = 0; i < (Int_t)strlen(buf); i++)
312  if (buf[i]=='#') {
313  buf[i]='\0'; // cut out comments starting from #
314  break;
315  }
316 
317  if( sscanf(buf,"%s",key)!=1 ) continue;
318 
319  if ( !strcmp(key,"INCLUDE") )
320  {
321  sscanf(buf+strlen(key),"%s",name);
323  }
324  else if ( !strcmp(key,"ZLAYER") )
325  {
326  sscanf(buf+strlen(key),"%d %f %f %f",&id,&z,&zmin,&zmax);
327  GetMakeLayer(id)->SetZlayer(z,zmin,zmax);
328  }
329  else if ( !strcmp(key,"SHRINK") )
330  {
331  sscanf(buf+strlen(key),"%d %f",&id,&shr);
332  GetMakeLayer(id)->SetShrinkage(shr);
333  }
334  else if ( !strcmp(key,"AFFXY") )
335  {
336  sscanf(buf+strlen(key),"%d %f %f %f %f %f %f",&id,&a11,&a12,&a21,&a22,&b1,&b2);
337  GetMakeLayer(id)->SetAffXY(a11,a12,a21,a22,b1,b2);
338  }
339  else if ( !strcmp(key,"AFFTXTY") )
340  {
341  sscanf(buf+strlen(key),"%d %f %f %f %f %f %f",&id,&a11,&a12,&a21,&a22,&b1,&b2);
342  GetMakeLayer(id)->SetAffTXTY(a11,a12,a21,a22,b1,b2);
343  }
344  else if ( !strcmp(key,"SIGMA0") )
345  {
346  sscanf(buf+strlen(key),"%d %f %f %f %f",&id,&x1,&x2,&x3,&x4);
347  GetMakeCond(id)->SetSigma0(x1,x2,x3,x4);
348  }
349  else if ( !strcmp(key,"DEGRAD") )
350  {
351  sscanf(buf+strlen(key),"%d %f",&id,&x1);
352  GetMakeCond(id)->SetDegrad(x1);
353  }
354  else if ( !strcmp(key,"BINS") )
355  {
356  sscanf(buf+strlen(key),"%d %f %f %f %f",&id,&x1,&x2,&x3,&x4);
357  GetMakeCond(id)->SetBins(x1,x2,x3,x4);
358  }
359  else if ( !strcmp(key,"RAMP0") )
360  {
361  sscanf(buf+strlen(key),"%d %f %f",&id,&x1,&x2);
362  GetMakeCond(id)->SetPulsRamp0(x1,x2);
363  }
364  else if ( !strcmp(key,"RAMP04") )
365  {
366  sscanf(buf+strlen(key),"%d %f %f",&id,&x1,&x2);
367  GetMakeCond(id)->SetPulsRamp04(x1,x2);
368  }
369  else if ( !strcmp(key,"CHI2MAX") )
370  {
371  sscanf(buf+strlen(key),"%d %f",&id,&x1);
372  GetMakeCond(id)->SetChi2Max(x1);
373  }
374  else if ( !strcmp(key,"CHI2PMAX") )
375  {
376  sscanf(buf+strlen(key),"%d %f",&id,&x1);
377  GetMakeCond(id)->SetChi2PMax(x1);
378  }
379  else if ( !strcmp(key,"CHI2MODE") )
380  {
381  sscanf(buf+strlen(key),"%d %d",&id,&mode);
382  GetMakeCond(id)->SetChi2Mode(mode);
383  }
384  else if ( !strcmp(key,"OFFSET") )
385  {
386  sscanf(buf+strlen(key),"%d %f %f",&id,&x1,&x2);
387  GetMakeCond(id)->SetOffset(x1,x2);
388  }
389  else if ( !strcmp(key,"SIGMAGR") )
390  {
391  sscanf(buf+strlen(key),"%d %f %f %f %f",&id,&x1,&x2,&x3,&x4);
392  GetMakeCond(id)->SetSigmaGR(x1,x2,x3);
393  SetCutGR(x4);
394  }
395  else if ( !strcmp(key,"RADX0") )
396  {
397  sscanf(buf+strlen(key),"%d %f",&id,&x1);
398  GetMakeCond(id)->SetRadX0(x1);
399  }
400  else if ( !strcmp(key,"XCUT") )
401  {
402  sscanf(buf+strlen(key),"%d %f %f %f %f %f %f %f %f %f %f",&id,
403  var,var+1,var+2,var+3,var+4,var+5,var+6,var+7,var+8,var+9);
404  AddSegmentCut(id,0,var);
405  }
406  else if ( !strcmp(key,"ICUT") )
407  {
408  sscanf(buf+strlen(key),"%d %f %f %f %f %f %f %f %f %f %f",&id,
409  var,var+1,var+2,var+3,var+4,var+5,var+6,var+7,var+8,var+9);
410  AddSegmentCut(id,1,var);
411  }
412  else if ( !strcmp(key,"RCUT") )
413  {
414  char rcut[256];
415  sscanf(buf+strlen(key),"%d %s",&id, rcut );
416  TCut cut(rcut);
417  AddRCut(id,cut);
418  }
419  else if ( !strcmp(key,"CUTCP") )
420  {
421  sscanf(buf+strlen(key),"%d %f %f %f %f %f %f",&id,
422  var,var+1,var+2,var+3,var+4,var+5);
423  AddCutCP(var);
424  }
425  else if ( !strcmp(key,"AFID") )
426  {
427  sscanf(buf+strlen(key),"%d",&id);
428  eAFID=id;
429  }
430  else if ( !strcmp(key,"OUTPUT") )
431  {
432  sscanf(buf+strlen(key),"%d",&id);
433  eOUTPUT=id;
434  }
435  else if ( !strcmp(key,"VOLUME0") )
436  {
437  float x0=0,y0=0,z0=0,tx=0,ty=0;
438  sscanf(buf+strlen(key),"%f %f %f %f %f",&x0,&y0,&z0,&tx,&ty);
439  SetVolume0(x0,y0,z0,tx,ty);
440  }
441  else if ( !strcmp(key,"VOLUMEA") )
442  {
443  float dx=0,dy=0;
444  sscanf(buf+strlen(key),"%f %f",&dx,&dy);
445  SetVolumeA(dx,dy);
446  }
447  else if ( !strcmp(key,"CLUST") )
448  {
449  int icl=0;
450  sscanf(buf+strlen(key),"%d",&icl);
451  eCLUST=icl;
452  }
453  }
454  fclose(fp);
455 
456  return 0;
457 }
brick z0
Definition: RecDispMC.C:106
void SetCutGR(float chi)
Definition: EdbDataSet.h:94
void AddRCut(int layer, TCut &cut)
Definition: EdbDataSet.cxx:240
void AddSegmentCut(int layer, int xi, float var[10])
Definition: EdbDataSet.cxx:222
EdbScanCond * GetMakeCond(int id)
Definition: EdbDataSet.cxx:263
void SetVolume0(float x0, float y0, float z0, float tx=0, float ty=0)
Definition: EdbDataSet.cxx:460
void SetVolumeA(float dx, float dy)
Definition: EdbDataSet.h:69
EdbLayer * GetMakeLayer(int id)
Definition: EdbDataSet.cxx:213
int ReadPiecePar(const char *file)
Definition: EdbDataSet.cxx:287
void AddCutCP(float var[6])
Definition: EdbDataSet.cxx:250
void SetAffTXTY(float a11, float a12, float a21, float a22, float b1, float b2)
Definition: EdbLayer.h:105
void SetAffXY(float a11, float a12, float a21, float a22, float b1, float b2)
Definition: EdbLayer.h:103
void SetZlayer(float z, float zmin, float zmax)
Definition: EdbLayer.h:102
void SetOffset(float x, float y)
Definition: EdbScanCond.h:68
void SetPulsRamp0(float p1, float p2)
Definition: EdbScanCond.h:74
void SetChi2Max(float chi2)
Definition: EdbScanCond.h:83
void SetDegrad(float d)
Definition: EdbScanCond.h:71
void SetChi2Mode(int mode)
Definition: EdbScanCond.h:88
void SetSigmaGR(float sx, float sy, float sz)
Definition: EdbScanCond.h:60
void SetSigma0(float x, float y, float tx, float ty)
Definition: EdbScanCond.h:62
void SetBins(float bx, float by, float btx, float bty)
Definition: EdbScanCond.h:65
void SetPulsRamp04(float p1, float p2)
Definition: EdbScanCond.h:75
void SetRadX0(float x0)
Definition: EdbScanCond.h:57
void SetChi2PMax(float chi2)
Definition: EdbScanCond.h:84
fclose(pFile)

◆ RemoveCCDPeak()

int EdbDataPiece::RemoveCCDPeak ( TMatrix &  matr)

994 {
995  double mean=0;
996  int filled=0;
997  float max=0;
998  int ix=0, iy=0;
999  int nc = matr.GetNcols();
1000  int nr = matr.GetNrows();
1001  for(int i=0; i<nc; i++)
1002  for(int j=0; j<nr; j++) {
1003  if(matr[i][j]<=0) continue;
1004  filled++;
1005  mean+=matr[i][j];
1006  if(max<matr[i][j]) {
1007  max = matr[i][j];
1008  ix = i;
1009  iy = j;
1010  }
1011  }
1012  mean/=filled;
1013  Log(2,"EdbDataPiece::RemoveCCDPeak","mean = %f \t max[%d,%d]=%d",mean,ix,iy,(int)max);
1014 
1015  float vmin[5],vmax[5];
1017  if( max > 10.*mean ) {
1018  matr[ix][iy]=0;
1019  vmin[0] = ix-500.; vmax[0] = vmin[0]+1;
1020  vmin[1] = iy-500.; vmax[1] = vmin[1]+1;
1021  vmin[2] = -.6; vmax[2] = .6;
1022  vmin[3] = -.6; vmax[3] = .6;
1023  vmin[4] = 0; vmax[4] = 17;
1024  cut.SetXI(0);
1025  cut.SetMin(vmin);
1026  cut.SetMax(vmax);
1028  return 1;
1029  }
1030  return 0;
1031 }
int UpdateSegmentCut(EdbSegmentCut cut)
Definition: EdbDataSet.cxx:1034

◆ Set0()

void EdbDataPiece::Set0 ( )

67 {
68  eOUTPUT=0;
69  ePlate=0;
70  ePiece=0;
71  eFlag=0;
72  eAFID=0;
73  eCLUST=0;
74  eCutCP[0]=-1;
75  int i;
76  for(i=0; i<3; i++) {
77  if(eLayers[i]) delete eLayers[i];
78  eLayers[i]=new EdbLayer();
79  }
80  for(i=0; i<3; i++) eCond[i]=0;
81  for(i=0; i<3; i++) eAreas[i]=0;
82  for(i=0; i<3; i++) eCuts[i]=0;
83  for(i=0; i<3; i++) eRCuts[i]=0;
84  eRun = 0;
85  eCouplesTree=0;
86  eCouplesInd=0;
87  eEraseMask=0;
88 }

◆ SetCouplesTree()

void EdbDataPiece::SetCouplesTree ( TTree *  tree)
inline
82 {eCouplesTree=tree;}

◆ SetCutGR()

void EdbDataPiece::SetCutGR ( float  chi)
inline
94 {eCutGR=chi;}

◆ SetOUTPUT()

void EdbDataPiece::SetOUTPUT ( int  out = 1)
inline
93 {eOUTPUT=out;}

◆ SetVolume0()

void EdbDataPiece::SetVolume0 ( float  x0,
float  y0,
float  z0,
float  tx = 0,
float  ty = 0 
)

461 {
462  float z = GetLayer(0)->Z();
463  GetLayer(0)->SetXY( x0+(z-z0)*tx, y0+(z-z0)*ty );
464  GetLayer(0)->SetTXTY(tx,ty);
465 }
void SetXY(float x, float y)
Definition: EdbLayer.h:97
void SetTXTY(float tx, float ty)
Definition: EdbLayer.h:99
float Z() const
Definition: EdbLayer.h:78

◆ SetVolumeA()

void EdbDataPiece::SetVolumeA ( float  dx,
float  dy 
)
inline
69 { GetLayer(0)->SetDXDY( dx, dy); }
void SetDXDY(float dx, float dy)
Definition: EdbLayer.h:98

◆ TakeCPSegment()

int EdbDataPiece::TakeCPSegment ( EdbSegCouple cp,
EdbSegP seg 
)

712 {
713  float var[6];
714 
715  var[0] = cp.N1();
716  var[1] = cp.N1tot();
717  var[2] = cp.N2();
718  var[3] = cp.N2tot();
719  var[4] = cp.CHI2();
720  var[5] = cp.CHI2P();
721 
722  if( !PassCutCP(var) ) return 0;
723 
724  var[0] = seg.X();
725  var[1] = seg.Y();
726  var[2] = seg.TX();
727  var[3] = seg.TY();
728  var[4] = seg.W();
729 
730  if( !PassCuts(0,var) ) return 0;
731 
732  return 1;
733 }
int PassCuts(int id, float var[5])
Definition: EdbDataSet.cxx:593
int PassCutCP(float var[6])
Definition: EdbDataSet.cxx:585
int N1() const
Definition: EdbSegCouple.h:54
int N2() const
Definition: EdbSegCouple.h:55
Float_t W() const
Definition: EdbSegP.h:148

◆ TakePiecePar()

int EdbDataPiece::TakePiecePar ( )

282 {
283  return ReadPiecePar( eFileNamePar.Data() );
284 }

◆ TakeRawSegment()

int EdbDataPiece::TakeRawSegment ( EdbView view,
int  id,
EdbSegP segP,
int  side 
)

603 {
604  EdbSegment *seg = view->GetSegment(id);
605 
606  float var[5];
607  var[0] = seg->GetX0();
608  var[1] = seg->GetY0();
609  var[2] = seg->GetTx();
610  var[3] = seg->GetTy();
611  var[4] = seg->GetPuls();
612 
613  if( !PassCuts(side,var) ) return 0;
614 
615  float pix, chi2;
616  if(eCLUST) {
617  pix = GetRawSegmentPix(seg);
618  segP.SetVolume( pix );
619  chi2 = CalculateSegmentChi2( seg,
620  GetCond(1)->SigmaXgr(), //TODO: side logic
621  GetCond(1)->SigmaYgr(),
622  GetCond(1)->SigmaZgr());
623 
624  if(chi2>GetCutGR()) return 0;
625  segP.SetChi2( chi2 );
626  }
627 
628  EdbLayer *layer=GetLayer(side);
629  seg->Transform(layer->GetAffineXY()); //internal view transformation
630  if(eAFID) seg->Transform( view->GetHeader()->GetAffine() );
631 
632  float x,y,z,tx,ty,puls;
633  tx = seg->GetTx()/layer->Shr();
634  ty = seg->GetTy()/layer->Shr();
635  x = seg->GetX0() + layer->Zmin()*tx;
636  y = seg->GetY0() + layer->Zmin()*ty;
637  z = layer->Z() + layer->Zmin();
638  if(eAFID==0) {
639  x+=view->GetXview();
640  y+=view->GetYview();
641  }
642  puls = seg->GetPuls();
643 
644  EdbAffine2D *aff = layer->GetAffineTXTY();
645  float txx = aff->A11()*tx+aff->A12()*ty+aff->B1();
646  float tyy = aff->A21()*tx+aff->A22()*ty+aff->B2();
647  segP.Set( seg->GetID(),x,y,txx,tyy,puls,0);
648  segP.SetZ( z );
649  segP.SetDZ( seg->GetDz()*layer->Shr() );
650  segP.SetW( puls );
651  segP.SetVolume( seg->GetVolume() );
652  segP.SetChi2( seg->GetSigmaY() ); // make sence in case of fedra tracking
653  segP.SetMC( view->GetHeader()->GetEvent(),view->GetHeader()->GetTrack() );
654  return 1;
655 }
Float_t B2() const
Definition: EdbAffine.h:48
Float_t A22() const
Definition: EdbAffine.h:46
Float_t A21() const
Definition: EdbAffine.h:45
Float_t A12() const
Definition: EdbAffine.h:44
Float_t B1() const
Definition: EdbAffine.h:47
Float_t A11() const
Definition: EdbAffine.h:43
float CalculateSegmentChi2(EdbSegment *seg, float sx, float sy, float sz)
Definition: EdbDataSet.cxx:658
float GetRawSegmentPix(EdbSegment *seg)
Definition: EdbDataSet.cxx:695
float GetCutGR() const
Definition: EdbDataSet.h:105
EdbAffine2D * GetAffineXY()
Definition: EdbLayer.h:120
float Shr() const
Definition: EdbLayer.h:90
float Zmin() const
Definition: EdbLayer.h:81
EdbAffine2D * GetAffineTXTY()
Definition: EdbLayer.h:121
virtual void Transform(const EdbAffine2D *aff)
Definition: EdbSegment.cxx:58
void SetVolume(float w)
Definition: EdbSegP.h:133
void SetW(float w)
Definition: EdbSegP.h:129
void SetMC(int mEvt, int mTrack)
Definition: EdbSegP.h:138
void SetDZ(float dz)
Definition: EdbSegP.h:123
void Set(int id, float x, float y, float tx, float ty, float w, int flag)
Definition: EdbSegP.h:86
Int_t GetVolume() const
Definition: EdbSegment.h:89
Int_t GetPuls() const
Definition: EdbSegment.h:88
Int_t GetID() const
Definition: EdbSegment.h:90
float GetSigmaY() const
Definition: EdbSegment.h:85
Int_t GetEvent() const
Definition: EdbView.h:127
Int_t GetTrack() const
Definition: EdbView.h:126
EdbViewHeader * GetHeader() const
Definition: EdbView.h:163
Float_t GetXview() const
Definition: EdbView.h:193
Float_t GetYview() const
Definition: EdbView.h:194

◆ UpdateAffPar()

int EdbDataPiece::UpdateAffPar ( int  layer,
EdbAffine2D aff 
)

494 {
495  const char *file=eFileNamePar.Data();
496 
497  FILE *fp=fopen(file,"a");
498  if (!fp) {
499  Log(1,"EdbDataPiece::UpdateAffPar","ERROR open file: %s", file);
500  return -1;
501  } else Log(2,"EdbDataPiece::UpdateAffPar","Update parameters file with AFFXY: %s", file );
502 
503  char str[124];
504  sprintf(str,"AFFXY \t %d \t %f %f %f %f %f %f\n",layer,
505  aff.A11(),aff.A12(),aff.A21(),aff.A22(),aff.B1(),aff.B2() );
506  fprintf(fp,"\n%s",str);
507 
508  fclose(fp);
509  return 1;
510 }

◆ UpdateAffTPar()

int EdbDataPiece::UpdateAffTPar ( int  layer,
EdbAffine2D aff 
)

535 {
536 
537  EdbAffine2D *a = GetLayer(layer)->GetAffineTXTY();
538  a->Transform(&aff);
539 
540  const char *file=eFileNamePar.Data();
541 
542  FILE *fp=fopen(file,"a");
543  if (!fp) {
544  Log(1,"EdbDataPiece::UpdateAffTPar","ERROR open file: %s", file);
545  return -1;
546  }
547  else Log(2,"EdbDataPiece::UpdateAffTPar","\nUpdate parameters file with AFFTXTY: %s\n\n", file );
548 
549  char str[124];
550  sprintf(str,"AFFTXTY \t %d \t %f %f %f %f %f %f\n",layer,
551  a->A11(),a->A12(),a->A21(),a->A22(),a->B1(),a->B2() );
552  fprintf(fp,"\n%s",str);
553 
554  fclose(fp);
555  return 1;
556 }
void a()
Definition: check_aligned.C:59

◆ UpdateSegmentCut()

int EdbDataPiece::UpdateSegmentCut ( EdbSegmentCut  cut)

1035 {
1036  const char *file=eFileNamePar.Data();
1037 
1038  FILE *fp=fopen(file,"a");
1039  if (!fp) {
1040  Log(1,"EdbDataPiece::UpdateSegmentCut","ERROR open file: %s", file);
1041  return -1;
1042  }
1043 
1044  char str[124];
1045  if(cut.XI()==0) {
1046  Log(2,"EdbDataPiece::UpdateSegmentCut","Update parameters file with XCUT: %s", file );
1047  sprintf(str,"XCUT \t %d \t %f %f %f %f %f %f %f %f %f %f\n",1,
1048  cut.Min(0),cut.Max(0),
1049  cut.Min(1),cut.Max(1),
1050  cut.Min(2),cut.Max(2),
1051  cut.Min(3),cut.Max(3),
1052  cut.Min(4),cut.Max(4)
1053  );
1054  fprintf(fp,"\n%s",str);
1055  sprintf(str,"XCUT \t %d \t %f %f %f %f %f %f %f %f %f %f\n",2,
1056  cut.Min(0),cut.Max(0),
1057  cut.Min(1),cut.Max(1),
1058  cut.Min(2),cut.Max(2),
1059  cut.Min(3),cut.Max(3),
1060  cut.Min(4),cut.Max(4)
1061  );
1062  fprintf(fp,"\n%s",str);
1063  } else if(cut.XI()==1) {
1064  Log(2,"EdbDataPiece::UpdateSegmentCut","Update parameters file with ICUT: %s", file );
1065  sprintf(str,"ICUT \t %d \t %f %f %f %f %f %f %f %f %f %f\n",1,
1066  cut.Min(0),cut.Max(0),
1067  cut.Min(1),cut.Max(1),
1068  cut.Min(2),cut.Max(2),
1069  cut.Min(3),cut.Max(3),
1070  cut.Min(4),cut.Max(4)
1071  );
1072  fprintf(fp,"\n%s",str);
1073  sprintf(str,"XCUT \t %d \t %f %f %f %f %f %f %f %f %f %f\n",2,
1074  cut.Min(0),cut.Max(0),
1075  cut.Min(1),cut.Max(1),
1076  cut.Min(2),cut.Max(2),
1077  cut.Min(3),cut.Max(3),
1078  cut.Min(4),cut.Max(4)
1079  );
1080  fprintf(fp,"\n%s",str);
1081  }
1082 
1083  fclose(fp);
1084  return 1;
1085 }

◆ UpdateShrPar()

int EdbDataPiece::UpdateShrPar ( int  layer)

475 {
476  const char *file=eFileNamePar.Data();
477 
478  FILE *fp=fopen(file,"a");
479  if (fp==NULL) {
480  Log(1,"EdbDataPiece::UpdateShrPar","ERROR open file: %s", file);
481  return -1;
482  }else Log(2,"EdbDataPiece::UpdateShrPar","Update parameters file with SHRINK %d: %s", layer, file );
483 
484  char str[64];
485  sprintf(str,"SHRINK \t %d \t %f \n",layer, GetLayer(layer)->Shr() );
486  fprintf(fp,"\n%s",str);
487 
488  fclose(fp);
489  return 1;
490 }

◆ UpdateZPar()

int EdbDataPiece::UpdateZPar ( int  layer,
float  z 
)

514 {
515  const char *file=eFileNamePar.Data();
516 
517  FILE *fp=fopen(file,"a");
518  if (!fp) {
519  Log(1,"EdbDataPiece::UpdateZPar", "ERROR open file: %s", file);
520  return -1;
521  }
522  else Log(2,"EdbDataPiece::UpdateZPar", "Update parameters file with ZLAYER: %s", file );
523 
524  char str[124];
525  sprintf(str,"ZLAYER \t %d \t %f %f %f\n",layer,
526  z,0.,0. );
527  fprintf(fp,"\n%s",str);
528 
529  fclose(fp);
530  return 1;
531 }

◆ WriteCuts()

void EdbDataPiece::WriteCuts ( )

560 {
561  TString file = eFileNamePar+".C";
562 
563  FILE *fp=fopen(file,"w");
564  if (!fp) {
565  Log(1," EdbDataPiece::WriteCuts","ERROR open file: %s", file.Data());
566  return;
567  }
568  else Log(2,"EdbDataPiece::WriteCuts","Put Cuts to file: %s", file.Data() );
569 
570  fprintf(fp,"{\n");
571 
572  char str[256];
573  for(int i=0; i<3; i++)
574  if(eCuts[i])
575  for(int j=0; j<NCuts(i); j++) {
576  GetCut(i,j)->CutLine(str,i,j);
577  fprintf(fp,"%s",str);
578  }
579 
580  fprintf(fp,"}\n");
581  fclose(fp);
582 }
const char * CutLine(char *str, int i=0, int j=0) const
Definition: EdbSegmentCut.cxx:36

Member Data Documentation

◆ eAFID

Int_t EdbDataPiece::eAFID

◆ eAreas

TIndexCell* EdbDataPiece::eAreas[3]
private

◆ eCLUST

Int_t EdbDataPiece::eCLUST

◆ eCond

EdbScanCond* EdbDataPiece::eCond[3]
private

◆ eCouplesInd

TIndexCell* EdbDataPiece::eCouplesInd

◆ eCouplesTree

TTree* EdbDataPiece::eCouplesTree

◆ eCutCP

Float_t EdbDataPiece::eCutCP[6]
private

◆ eCutGR

Float_t EdbDataPiece::eCutGR
private

◆ eCuts

TObjArray* EdbDataPiece::eCuts[3]
private

◆ eEraseMask

EdbMask* EdbDataPiece::eEraseMask

◆ eFileNameCP

TString EdbDataPiece::eFileNameCP

root-style text cuts

◆ eFileNamePar

TString EdbDataPiece::eFileNamePar

◆ eFlag

Int_t EdbDataPiece::eFlag
private

◆ eLayers

EdbLayer* EdbDataPiece::eLayers[3]
private

◆ eOUTPUT

Int_t EdbDataPiece::eOUTPUT
private

◆ ePiece

Int_t EdbDataPiece::ePiece
private

◆ ePlate

Int_t EdbDataPiece::ePlate
private

◆ eRCuts

TCut* EdbDataPiece::eRCuts[3]
private

◆ eRun

EdbRun* EdbDataPiece::eRun

◆ eRunFiles

TObjArray EdbDataPiece::eRunFiles
private

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