FEDRA emulsion software from the OPERA Collaboration
EdbDataPiece Class Reference

Edb raw data unit (scanned plate) associated with run file. More...

#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
 1-use fiducial marks transformations, 0 - do not More...
 
Int_t eCLUST
 1-use clusters, 0 - do not More...
 
TIndexCelleCouplesInd
 
TTree * eCouplesTree
 
EdbMaskeEraseMask
 id's (entries) of segments to be erased when read couples tree More...
 
TString eFileNameCP
 root-style text cuts More...
 
TString eFileNamePar
 name of the parameters file More...
 
EdbRuneRun
 

Private Attributes

TIndexCelleAreas [3]
 base/up/down surface areas list More...
 
EdbScanCondeCond [3]
 
Float_t eCutCP [6]
 
Float_t eCutGR
 grain cut (chi) More...
 
TObjArray * eCuts [3]
 array of cuts More...
 
Int_t eFlag
 0-do nothing, 1-do something More...
 
EdbLayereLayers [3]
 base(0),up(1),down(2) layers More...
 
Int_t eOUTPUT
 
Int_t ePiece
 piece id in this plate More...
 
Int_t ePlate
 plate id More...
 
TCut * eRCuts [3]
 
TObjArray eRunFiles
 

Detailed Description

Edb raw data unit (scanned plate) associated with run file.

//////////////////////////////////////////////////////////////////////// // EdbDataSet // // OPERA data set definition&reconstruction // // ////////////////////////////////////////////////////////////////////////

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();
44 ePiece=piece;
46 eFlag=flag;
47}
void AddRunFile(const char *name)
Definition: EdbDataSet.cxx:176
Int_t ePiece
piece id in this plate
Definition: EdbDataSet.h:34
Int_t eFlag
0-do nothing, 1-do something
Definition: EdbDataSet.h:35
Int_t ePlate
plate id
Definition: EdbDataSet.h:33
void Set0()
Definition: EdbDataSet.cxx:66
EdbLayer * eLayers[3]
base(0),up(1),down(2) layers
Definition: EdbDataSet.h:39
TFile * file
Definition: write_pvr.C:3
Int_t plate
Definition: merge_Energy_SytematicSources_Electron.C:1

◆ ~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();
63}
EdbScanCond * eCond[3]
Definition: EdbDataSet.h:40
void CloseCPData()
Definition: EdbDataSet.cxx:91
TIndexCell * eCouplesInd
Definition: EdbDataSet.h:52
EdbMask * eEraseMask
id's (entries) of segments to be erased when read couples tree
Definition: EdbDataSet.h:57
TObjArray eRunFiles
Definition: EdbDataSet.h:36
TCut * eRCuts[3]
Definition: EdbDataSet.h:47
TObjArray * eCuts[3]
array of cuts
Definition: EdbDataSet.h:42
TIndexCell * eAreas[3]
base/up/down surface areas list
Definition: EdbDataSet.h:41
void CloseRun()
Definition: EdbDataSet.cxx:105

Member Function Documentation

◆ AcceptViewHeader()

int EdbDataPiece::AcceptViewHeader ( const EdbViewHeader head)

1218{
1219 EdbSegP p;
1220 if(eAFID==0) {
1221 p.SetX( head->GetXview() );
1222 p.SetY( head->GetYview() );
1223 } else {
1224 p.SetX( 0. );
1225 p.SetY( 0. );
1226 p.Transform( head->GetAffine() );
1227 }
1228 p.SetX( p.X() - GetLayer(0)->X() );
1229 p.SetY( p.Y() - GetLayer(0)->Y() );
1230 p.Transform( GetLayer(0)->GetAffineXY() );
1231 if( p.X() < -GetLayer(0)->DX() ) return 0;
1232 if( p.X() > GetLayer(0)->DX() ) return 0;
1233 if( p.Y() < -GetLayer(0)->DY() ) return 0;
1234 if( p.Y() > GetLayer(0)->DY() ) return 0;
1235 return 1;
1236}
EdbLayer * GetLayer(int id)
Definition: EdbDataSet.h:87
Int_t eAFID
1-use fiducial marks transformations, 0 - do not
Definition: EdbDataSet.h:29
Definition: EdbSegP.h:21
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: tlg2couples.C:76
Double_t Y
Definition: tlg2couples.C:76
p
Definition: testBGReduction_AllMethods.C:8

◆ AddCutCP()

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

246{
247 for(int i=0; i<6; i++) eCutCP[i]=var[i];
248}
Float_t eCutCP[6]
Definition: EdbDataSet.h:43

◆ AddRCut()

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

236{
237 if(layer<0) return;
238 if(layer>2) return;
239
240 if(!eRCuts[layer]) eRCuts[layer] = new TCut(cut);
241 else (*(eRCuts[layer]))+=cut;
242}
TCut cut
Definition: check_shower.C:6

◆ AddRunFile()

void EdbDataPiece::AddRunFile ( const char *  name)

177{
178 TObjString *str = new TObjString(name);
179 eRunFiles.Add(str);
180}
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] 
)

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

◆ AddSegmentCut() [2/2]

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

218{
219 if(!eCuts[layer]) eCuts[layer] = new TObjArray();
220 eCuts[layer]->Add( new EdbSegmentCut(xi,var) );
221}

◆ CalculateSegmentChi2()

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

TODO: remove this function from here (already in EdbViewRec)

654{
656
657 //assumed that clusters are attached to segments
658 double chi2=0;
659 EdbCluster *cl=0;
660 TObjArray *clusters = seg->GetElements();
661 if(!clusters) return 0;
662 int ncl = clusters->GetLast()+1;
663 if(ncl<=0) return 0;
664
665 float xyz1[3], xyz2[3]; // segment line parametrized as 2 points
666 float xyz[3];
667 bool inside=true;
668
669 xyz1[0] = seg->GetX0() /sx;
670 xyz1[1] = seg->GetY0() /sy;
671 xyz1[2] = seg->GetZ0() /sz;
672 xyz2[0] = (seg->GetX0() + seg->GetDz()*seg->GetTx()) /sx;
673 xyz2[1] = (seg->GetY0() + seg->GetDz()*seg->GetTy()) /sy;
674 xyz2[2] = (seg->GetZ0() + seg->GetDz()) /sz;
675
676 double d;
677 for(int i=0; i<ncl; i++ ) {
678 cl = (EdbCluster*)clusters->At(i);
679 xyz[0] = cl->GetX()/sx;
680 xyz[1] = cl->GetY()/sy;
681 xyz[2] = cl->GetZ()/sz;
682 d = EdbMath::DistancePointLine3(xyz,xyz1,xyz2, inside);
683 chi2 += d*d;
684 }
685
686 return TMath::Sqrt(chi2/ncl);
687}
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:43
virtual Float_t GetX0() const
Definition: EdbSegment.h:38
virtual Float_t GetTx() const
Definition: EdbSegment.h:41
virtual Float_t GetZ0() const
Definition: EdbSegment.h:40
virtual Float_t GetY0() const
Definition: EdbSegment.h:39
virtual Float_t GetTy() const
Definition: EdbSegment.h:42
TObjArray * GetElements() const
Definition: EdbSegment.h:117
Float_t chi2
Definition: testBGReduction_By_ANN.C:14

◆ CheckCCD()

int EdbDataPiece::CheckCCD ( int  maxentr = 2000)

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

◆ 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:55
#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 ( )

876{
877 int n=0;
878 TTree *cptree=0;
880 if( cptree ) n = CorrectAngles(cptree);
881 Log(2,"CorrectAngles","in piece: %s using %d basetracks",GetNameCP(),n);
882 return n;
883}
int InitCouplesTree(const char *mode="READ")
Definition: EdbDataSet.cxx:1239
int CorrectAngles()
Definition: EdbDataSet.cxx:875
const char * GetNameCP() const
Definition: EdbDataSet.h:76

◆ CorrectAngles() [2/2]

int EdbDataPiece::CorrectAngles ( TTree *  tree)

887{
888 EdbSegCouple *cp = 0;
889 EdbSegP *s1 = 0;
890 EdbSegP *s2 = 0;
891 EdbSegP *s = 0;
892 tree->SetBranchAddress("cp" , &cp );
893 tree->SetBranchAddress("s1." , &s1 );
894 tree->SetBranchAddress("s2." , &s2 );
895 tree->SetBranchAddress("s." , &s );
896
897 EdbAffine2D *aff = new EdbAffine2D();
898
899 int nentr = (int)(tree->GetEntries());
900 TArrayF x(nentr);
901 TArrayF y(nentr);
902 TArrayF x1(nentr);
903 TArrayF y1(nentr);
904 TArrayF x2(nentr);
905 TArrayF y2(nentr);
906
907 int nseg = 0;
908 Log(2,"EdbDataPiece::CorrectAngles","nentr = %d",nentr);
909 for(int i=0; i<nentr; i++ ) {
910 tree->GetEntry(i);
911
912 if(cp->N1tot()>1) continue;
913 if(cp->N2tot()>1) continue;
914 if(cp->CHI2()>1.5) continue;
915
916 x1[nseg] = s1->TX();
917 y1[nseg] = s1->TY();
918 x2[nseg] = s2->TX();
919 y2[nseg] = s2->TY();
920 x[nseg] = (s2->X()-s1->X()) / (s2->Z()-s1->Z());
921 y[nseg] = (s2->Y()-s1->Y()) / (s2->Z()-s1->Z());
922 nseg++;
923 }
924
925 aff->CalculateTurn( nseg,x1.fArray,y1.fArray,x.fArray,y.fArray );
926 UpdateAffTPar(1,*aff);
927 aff->CalculateTurn( nseg,x2.fArray,y2.fArray,x.fArray,y.fArray );
928 UpdateAffTPar(2,*aff);
929
930 delete aff;
931
932 // Closing tree and file. A.C.
933
934 TFile *f = tree->GetDirectory()->GetFile();
935 SafeDelete(tree);
936 if (f) SafeDelete(f);
937
938 return nseg;
939}
Definition: EdbAffine.h:17
Int_t CalculateTurn(int n, float *x0, float *y0, float *x1, float *y1)
Definition: EdbAffine.cxx:420
int UpdateAffTPar(int layer, EdbAffine2D &aff)
Definition: EdbDataSet.cxx:529
Definition: EdbSegCouple.h:17
int N2tot() const
Definition: EdbSegCouple.h:60
int N1tot() const
Definition: EdbSegCouple.h:59
float CHI2() const
Definition: EdbSegCouple.h:61
Float_t TX() const
tangens = deltaX/deltaZ
Definition: EdbSegP.h:175
Float_t X() const
Definition: EdbSegP.h:173
Float_t Z() const
Definition: EdbSegP.h:153
Float_t Y() const
Definition: EdbSegP.h:174
Float_t TY() const
tangens = deltaY/deltaZ
Definition: EdbSegP.h:176
s
Definition: check_shower.C:55
EdbSegP * s1
Definition: tlg2couples.C:29
EdbSegP * s2
Definition: tlg2couples.C:30
EdbSegCouple * cp
Definition: tlg2couples.C:28

◆ CorrectShrinkage()

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

464{
465 GetLayer(layer)->SetShrinkage( shr*GetLayer(layer)->Shr() );
466}
void SetShrinkage(float shr)
Definition: EdbLayer.h:99

◆ Flag()

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

◆ GetAreaData()

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

1138{
1139 TIndexCell *elist = eAreas[side]->At(aid);
1140 if(!elist) return 0;
1141 EdbPattern *pat = new EdbPattern( 0.,0., GetLayer(side)->Z() );
1142 pat->SetID(side);
1143
1144
1145 EdbSegP segP;
1146 EdbView *view = eRun->GetView();
1147 int nseg=0, nrej=0;
1148 int entry;
1149 int nsegV;
1150
1151 int niu=elist->N();
1152 for(int iu=0; iu<niu; iu++) {
1153 entry = elist->At(iu)->Value();
1154 if(eCLUST) {
1155 view = eRun->GetEntry(entry,1,1,1);
1157 }
1158 else view = eRun->GetEntry(entry);
1159
1160 nsegV = view->Nsegments();
1161
1162 for(int j=0;j<nsegV;j++) {
1163 if(!TakeRawSegment(view,j,segP,side)) {
1164 nrej++;
1165 continue;
1166 }
1167 nseg++;
1168 segP.SetVid(entry,j);
1169 segP.SetAid(view->GetAreaID(),view->GetViewID(),side);
1170 pat->AddSegment( segP);
1171 }
1172 }
1173
1174 Log(2,"EdbDataPiece::GetAreaData","Area: %d ( %d%%) %d \t views: %d \t nseg: %d \t rejected: %d",
1175 aid,100*aid/eAreas[side]->N(1),side,niu,nseg, nrej );
1176 pat->SetSegmentsZ();
1177 ali->AddPattern(pat);
1178 return nseg;
1179}
TLegendEntry * entry
Definition: Canv_SYSTEMATICS_ALLCOMBINED__RMSEnergy__vs__Energy__ELECTRON.C:130
int TakeRawSegment(EdbView *view, int id, EdbSegP &segP, int side)
Definition: EdbDataSet.cxx:597
Int_t eCLUST
1-use clusters, 0 - do not
Definition: EdbDataSet.h:30
Definition: EdbPattern.h:273
void SetID(int id)
Definition: EdbPattern.h:309
void AddPattern(EdbPattern *pat)
Definition: EdbPattern.cxx:1707
void SetVid(int vid, int sid)
Definition: EdbSegP.h:137
void SetAid(int a, int v, int side=0)
Definition: EdbSegP.h:138
void SetSegmentsZ()
Definition: EdbPattern.cxx:250
EdbSegP * AddSegment(int i, EdbSegP &s)
Definition: EdbPattern.cxx:72
Int_t GetViewID() const
Definition: EdbView.h:190
int AttachClustersToSegments()
Definition: EdbView.cxx:360
Int_t GetAreaID() const
Definition: EdbView.h:191
sort collection with attributes
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
EdbPVRec * ali
Definition: test_oracle.C:9
Double_t Z
Definition: tlg2couples.C:104

◆ GetCond()

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

◆ GetCPData()

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

TO CHECK !!!

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

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

◆ GetCut()

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

◆ GetCutGR()

float EdbDataPiece::GetCutGR ( ) const
inline
106{return eCutGR;}
Float_t eCutGR
grain cut (chi)
Definition: EdbDataSet.h:44

◆ GetLayer()

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

◆ 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 entr.Set(n);
156 for(int i=0; i<n; i++) entr.AddAt( (int)(c->At(i)->Value()), i);
157 return n;
158}
TIndexCell * Find(Int_t narg, Long_t varg[]) const
Definition: TIndexCell.cpp:613

◆ GetMakeCond()

EdbScanCond * EdbDataPiece::GetMakeCond ( int  id)

259{
260 if(id<0) return 0;
261 if(id>2) return 0;
262 if(!GetCond(id)) eCond[id] = new EdbScanCond();
263 return GetCond(id);
264}
EdbScanCond * GetCond(int id)
Definition: EdbDataSet.h:90

◆ GetMakeLayer()

EdbLayer * EdbDataPiece::GetMakeLayer ( int  id)

209{
210 if(id<0) return 0;
211 if(id>2) return 0;
212 if(!GetLayer(id)) eLayers[id] = new EdbLayer();
213 return GetLayer(id);
214}

◆ GetNameCP()

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

◆ GetOUTPUT()

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

◆ GetRawData()

int EdbDataPiece::GetRawData ( EdbPVRec ali)

TODO: irun logic

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

assumed that clusters are attached to segments

691{
693 float pix=0;
694 EdbCluster *cl=0;
695 TObjArray *clusters = seg->GetElements();
696 if(!clusters) return 0;
697 int ncl = clusters->GetLast()+1;
698 for(int i=0; i<ncl; i++ ) {
699 cl = (EdbCluster*)clusters->At(i);
700 pix += cl->GetArea();
701 }
702 return pix;
703}
Float_t GetArea() const
Definition: EdbCluster.h:54

◆ GetRCut()

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

◆ GetRunFile()

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

184{
185 if(Nruns()<i+1) return 0;
186 return ((TObjString *)eRunFiles.At(i))->GetName();
187}
int Nruns() const
Definition: EdbDataSet.h:84

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

◆ InitCouplesTree() [2/2]

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

1240{
1241 if ((eCouplesTree=InitCouplesTree(eFileNameCP,mode))) return 1;
1242 return 0;
1243}

◆ MakeLinkListArea()

int EdbDataPiece::MakeLinkListArea ( int  irun)

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

◆ MakeLinkListCoord()

int EdbDataPiece::MakeLinkListCoord ( int  irun)

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

◆ MakeName()

const char * EdbDataPiece::MakeName ( )

191{
192 char name[8];
193 sprintf(name,"%2.2d_%3.3d", ePlate,ePiece);
194 SetName(name);
195 return GetName();
196}
graph SetName("Graph")

◆ MakeNameCP()

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

200{
201 eFileNameCP=dir;
203 eFileNameCP+=".cp.root";
204 return eFileNameCP.Data();
205}
const char * MakeName()
Definition: EdbDataSet.cxx:190

◆ MakeNamePar()

void EdbDataPiece::MakeNamePar ( const char *  dir)

269{
270 eFileNamePar=dir;
272 eFileNamePar += ".par";
273}
TString eFileNamePar
name of the parameters file
Definition: EdbDataSet.h:51

◆ NCuts()

int EdbDataPiece::NCuts ( int  layer)

252{
253 if(!eCuts[layer]) return 0;
254 return eCuts[layer]->GetEntriesFast();
255}

◆ Nruns()

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

◆ PassCutCP()

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

581{
582 if(eCutCP[0]<0) return 1;
583 for(int i=0; i<6; i++) if(var[i]>eCutCP[i]) return 0;
584 return 1;
585}

◆ PassCuts()

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

589{
590 int nc = NCuts(id);
591 for(int i=0; i<nc; i++)
592 if( !(GetCut(id,i)->PassCut(var)) ) return 0;
593 return 1;
594}
EdbSegmentCut * GetCut(int layer, int i)
Definition: EdbDataSet.h:100
int NCuts(int layer)
Definition: EdbDataSet.cxx:251

◆ Plate()

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

◆ Print()

void EdbDataPiece::Print ( )

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

◆ ReadPiecePar()

int EdbDataPiece::ReadPiecePar ( const char *  file)

read parameters from par-file
return: 0 if ok
-1 if file access failed

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

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

◆ 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;
87 eEraseMask=0;
88}

◆ SetCouplesTree()

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

◆ SetCutGR()

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

◆ SetOUTPUT()

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

◆ SetVolume0()

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

456{
457 float z = GetLayer(0)->Z();
458 GetLayer(0)->SetXY( x0+(z-z0)*tx, y0+(z-z0)*ty );
459 GetLayer(0)->SetTXTY(tx,ty);
460}
void SetXY(float x, float y)
Definition: EdbLayer.h:96
void SetTXTY(float tx, float ty)
Definition: EdbLayer.h:98
float Z() const
Definition: EdbLayer.h:77

◆ SetVolumeA()

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

◆ TakeCPSegment()

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

707{
708 float var[6];
709
710 var[0] = cp.N1();
711 var[1] = cp.N1tot();
712 var[2] = cp.N2();
713 var[3] = cp.N2tot();
714 var[4] = cp.CHI2();
715 var[5] = cp.CHI2P();
716
717 if( !PassCutCP(var) ) return 0;
718
719 var[0] = seg.X();
720 var[1] = seg.Y();
721 var[2] = seg.TX();
722 var[3] = seg.TY();
723 var[4] = seg.W();
724
725 if( !PassCuts(0,var) ) return 0;
726
727 return 1;
728}
int PassCuts(int id, float var[5])
Definition: EdbDataSet.cxx:588
int PassCutCP(float var[6])
Definition: EdbDataSet.cxx:580
int N1() const
Definition: EdbSegCouple.h:57
int N2() const
Definition: EdbSegCouple.h:58
Float_t W() const
Definition: EdbSegP.h:151

◆ TakePiecePar()

int EdbDataPiece::TakePiecePar ( )

277{
278 return ReadPiecePar( eFileNamePar.Data() );
279}

◆ TakeRawSegment()

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

598{
599 EdbSegment *seg = view->GetSegment(id);
600
601 float var[5];
602 var[0] = seg->GetX0();
603 var[1] = seg->GetY0();
604 var[2] = seg->GetTx();
605 var[3] = seg->GetTy();
606 var[4] = seg->GetPuls();
607
608 if( !PassCuts(side,var) ) return 0;
609
610 float pix, chi2;
611 if(eCLUST) {
612 pix = GetRawSegmentPix(seg);
613 segP.SetVolume( pix );
615 GetCond(1)->SigmaXgr(), //TODO: side logic
616 GetCond(1)->SigmaYgr(),
617 GetCond(1)->SigmaZgr());
618
619 if(chi2>GetCutGR()) return 0;
620 segP.SetChi2( chi2 );
621 }
622
623 EdbLayer *layer=GetLayer(side);
624 seg->Transform(layer->GetAffineXY()); //internal view transformation
625 if(eAFID) seg->Transform( view->GetHeader()->GetAffine() );
626
627 float x,y,z,tx,ty,puls;
628 tx = seg->GetTx()/layer->Shr();
629 ty = seg->GetTy()/layer->Shr();
630 x = seg->GetX0() + layer->Zmin()*tx;
631 y = seg->GetY0() + layer->Zmin()*ty;
632 z = layer->Z() + layer->Zmin();
633 if(eAFID==0) {
634 x+=view->GetXview();
635 y+=view->GetYview();
636 }
637 puls = seg->GetPuls();
638
639 EdbAffine2D *aff = layer->GetAffineTXTY();
640 float txx = aff->A11()*tx+aff->A12()*ty+aff->B1();
641 float tyy = aff->A21()*tx+aff->A22()*ty+aff->B2();
642 segP.Set( seg->GetID(),x,y,txx,tyy,puls,0);
643 segP.SetZ( z );
644 segP.SetDZ( seg->GetDz()*layer->Shr() );
645 segP.SetW( puls );
646 segP.SetVolume( seg->GetVolume() );
647 segP.SetChi2( seg->GetSigmaY() ); // make sence in case of fedra tracking
648 segP.SetMC( view->GetHeader()->GetEvent(),view->GetHeader()->GetTrack() );
649 return 1;
650}
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:653
float GetRawSegmentPix(EdbSegment *seg)
Definition: EdbDataSet.cxx:690
float GetCutGR() const
Definition: EdbDataSet.h:106
float Shr() const
Definition: EdbLayer.h:89
float Zmin() const
Definition: EdbLayer.h:80
EdbAffine2D * GetAffineTXTY()
Definition: EdbLayer.h:120
EdbAffine2D * GetAffineXY()
Definition: EdbLayer.h:119
virtual void Transform(const EdbAffine2D *aff)
Definition: EdbSegment.cxx:59
void SetVolume(float w)
Definition: EdbSegP.h:136
void SetW(float w)
Definition: EdbSegP.h:132
void SetChi2(float chi2)
Definition: EdbSegP.h:135
void SetMC(int mEvt, int mTrack)
Definition: EdbSegP.h:141
void SetDZ(float dz)
Definition: EdbSegP.h:126
void Set(int id, float x, float y, float tx, float ty, float w, int flag)
Definition: EdbSegP.h:87
Int_t GetVolume() const
Definition: EdbSegment.h:91
Int_t GetPuls() const
Definition: EdbSegment.h:90
Int_t GetID() const
Definition: EdbSegment.h:92
float GetSigmaY() const
Definition: EdbSegment.h:87
Int_t GetEvent() const
Definition: EdbView.h:127
Int_t GetTrack() const
Definition: EdbView.h:126
Float_t GetXview() const
Definition: EdbView.h:193
EdbViewHeader * GetHeader() const
Definition: EdbView.h:163
Float_t GetYview() const
Definition: EdbView.h:194

◆ UpdateAffPar()

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

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

◆ UpdateAffTPar()

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

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

◆ UpdateSegmentCut()

int EdbDataPiece::UpdateSegmentCut ( EdbSegmentCut  cut)

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

◆ UpdateShrPar()

int EdbDataPiece::UpdateShrPar ( int  layer)

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

◆ UpdateZPar()

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

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

◆ WriteCuts()

void EdbDataPiece::WriteCuts ( )

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

Member Data Documentation

◆ eAFID

Int_t EdbDataPiece::eAFID

1-use fiducial marks transformations, 0 - do not

◆ eAreas

TIndexCell* EdbDataPiece::eAreas[3]
private

base/up/down surface areas list

◆ eCLUST

Int_t EdbDataPiece::eCLUST

1-use clusters, 0 - do not

◆ 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

grain cut (chi)

◆ eCuts

TObjArray* EdbDataPiece::eCuts[3]
private

array of cuts

◆ eEraseMask

EdbMask* EdbDataPiece::eEraseMask

id's (entries) of segments to be erased when read couples tree

◆ eFileNameCP

TString EdbDataPiece::eFileNameCP

root-style text cuts

name of the couples data file

◆ eFileNamePar

TString EdbDataPiece::eFileNamePar

name of the parameters file

◆ eFlag

Int_t EdbDataPiece::eFlag
private

0-do nothing, 1-do something

◆ eLayers

EdbLayer* EdbDataPiece::eLayers[3]
private

base(0),up(1),down(2) layers

◆ eOUTPUT

Int_t EdbDataPiece::eOUTPUT
private

◆ ePiece

Int_t EdbDataPiece::ePiece
private

piece id in this plate

◆ ePlate

Int_t EdbDataPiece::ePlate
private

plate id

◆ 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: