FEDRA emulsion software from the OPERA Collaboration
EdbPattern.h
Go to the documentation of this file.
1#ifndef ROOT_EdbPattern
2#define ROOT_EdbPattern
3/*
5// //
6// EdbPattern //
7// //
8// pattern of segments //
9// //
11*/
12#include "TMath.h"
13#include "TTree.h"
14#include "TObjArray.h"
15#include "TSortedList.h"
16#include "TArrayL.h"
17#include "TClonesArray.h"
18#include "EdbSegP.h"
19
20class EdbAffine2D;
21class TIndexCell;
22class EdbVTA;
23class EdbVertex;
24
25
26//______________________________________________________________________________
27class EdbSegmentsBox : public TObject, public EdbPointsBox2D {
28
29 private:
30
31 Float_t eX,eY,eZ;
32
33 TClonesArray *eSegments;
34
35 Float_t eDZkeep;
36
37 // void (*PF_COUPLE)(EdbSegP *seg1,EdbSegP *seg2); //pointer to the function
38
39 //protected:
40 public:
41 void SetZ(float z) { eZ=z; }
42
43 public:
44 EdbSegmentsBox(int nseg=0);
46 {
47 eX=box.X();
48 eY=box.Y();
49 eZ=box.Z();
50 int n=box.N();
51 eSegments = new TClonesArray("EdbSegP",n);
52 for(int i=0; i<n; i++)
53 AddSegment( *(box.GetSegment(i)) );
54 }
55
56 EdbSegmentsBox(float x0, float y0, float z0, int nseg=0);
57 virtual ~EdbSegmentsBox();
58
59 EdbSegP *AddSegment(int i, EdbSegP &s);
62 EdbSegP *AddSegment(int id, float x, float y, float tx, float ty,
63 float w=0, int flag=0);
65 Int_t GetN() const {return eSegments ? eSegments->GetEntriesFast() : 0;}
66 EdbSegP *GetSegment(int i) const {return (EdbSegP*)eSegments->At(i); }
67 EdbSegP *GetSegmentLast() const {return GetN() ? (EdbSegP*)eSegments->Last() : 0;}
68
69 TClonesArray *GetSegments() const { return eSegments; }
70 void *GetSegmentsAddr() { return &eSegments; }
71
72 void SetSegmentsZ();
73 void SetSegmentsDZ(float dz);
74
75 void SetSegmentsPlate(int plate);
76
78
79 void SetX(float x) { eX=x; }
80 void SetY(float y) { eY=y; }
81
82 Float_t X() const {return eX;}
83 Float_t Y() const {return eY;}
84 Float_t Z() const {return eZ;}
85 Float_t DZ() const {return eDZkeep;}
86 Int_t N() const {return GetN();}
87 EdbPoint *At(int i) const {return (EdbPoint*)GetSegment(i);}
88
90
91 void Print( Option_t *opt="") const;
92 void Set0();
93 void Reset();
94 void ProjectTo(const float dz);
95 void TransformA( const EdbAffine2D *affA );
96 void TransformARot( const EdbAffine2D *affA );
97 void TransformShr( const float shr );
98 Int_t CalculateXY( EdbSegmentsBox *p , EdbAffine2D *aff );
100 Float_t DiffAff( EdbAffine2D *aff );
101 Float_t Diff( EdbSegmentsBox &p );
102 Float_t GetSize(Int_t XorY);
103 Float_t GetSizeX() { return GetSize(0); }
104 Float_t GetSizeY() { return GetSize(1); }
105 Float_t GetSizeXY();
106 Float_t GetTrackDensity();
107 Float_t GetTrackDensitymm2();
108
109 ClassDef(EdbSegmentsBox,1) // collection of segments
110};
111
112//______________________________________________________________________________
113class EdbTrackP : public EdbSegP {
114
115 private:
116
117 TSortedList *eS;
118 TSortedList *eSF;
119 Int_t eNpl;
120 Int_t eN0;
121 Float_t eM;
122 Float_t eDE;
123 Int_t ePDG;
124 Float_t ePerrUp;
125 Float_t ePerrDown;
128
129 public:
130
131 EdbTrackP(int nseg=0);
132 EdbTrackP(EdbSegP &seg);
133 EdbTrackP(EdbSegP *seg, float m=0.12);
135
136 virtual ~EdbTrackP();
137
138 void Set0();
139 void SetOwner() { if(eS) eS->SetOwner(true); }
140 void AddVTA(EdbVTA *vta);
141 void ClearVTA();
142 void ClearVTA(EdbVTA *vta);
143 EdbVTA *VTAS() const {return eVTAS;}
144 EdbVTA *VTAE() const {return eVTAE;}
147 EdbVertex *Vertex(int zpos) {return zpos? VertexS(): VertexE();}
148
149 void SetPDG( int pdg ) { ePDG=pdg; }
150 Int_t PDG() const {return ePDG;}
151
152 Float_t Wmean() const;
153
154 void SetM( float m ) { eM=m; }
155 Float_t M() const {return eM;}
156
157
158 //void SetErrorsCOV(EdbScanCond &cond);
159 void SetCounters() { SetNpl(); SetN0(); }
160
161 void SetN0( int n0 ) { eN0 = n0; }
162 void SetN0() { eN0 = eNpl-N(); }
163 Int_t N0() const {return eN0;}
164
165 void SetDE( float de ) { eDE=de; }
166 Float_t DE() const {return eDE;}
167
168 void SetNpl( int npl ) { eNpl=npl; }
169 void SetNpl()
170 { if(eS) eNpl = 1+TMath::Abs(GetSegment(0)->PID() - GetSegment(N()-1)->PID()); }
171 Int_t Npl() const {return eNpl;}
172
173 // TList *S() const { return eS; }
174 // TList *SF() const { return eSF; }
175
176 //int N() const { if(eS) return eS->GetEntries(); else return 0; } //TODO fast
177 Int_t N() const { return (eS) ? eS->GetSize() : 0; }
178 Int_t NF() const { return (eSF)? eSF->GetSize() : 0; }
179
180 Double_t GetBTEfficiency();
181
182 Float_t Wgrains() const;
183 Int_t GetSegmentsFlag( int &nseg ) const;
184 Int_t GetSegmentsAid( int &nseg ) const;
185 Int_t GetSegmentsMCTrack( int &nseg ) const;
186
187 EdbSegP *GetSegmentWithClosestZ( float z, float dz);
188
189 EdbSegP *GetSegmentFirst() const {return (eS) ? (EdbSegP*)(eS->First()) : 0;}
190 EdbSegP *GetSegmentLast() const {return (eS) ? (EdbSegP*)(eS->Last()) : 0;}
191
192 EdbSegP *GetSegmentFFirst() const {return (eSF) ? (EdbSegP*)(eSF->First()) : 0;}
193 EdbSegP *GetSegmentFLast() const {return (eSF) ? (EdbSegP*)(eSF->Last()) : 0;}
194
195 EdbSegP *GetSegment(int i) const {return (eS) ? (EdbSegP*)(eS->At(i)) : 0; }
196 EdbSegP *GetSegmentF(int i) const {return (eSF) ? (EdbSegP*)(eSF->At(i)) : 0;}
197
198 EdbSegP *TrackZmin(bool usesegpar=false) const { if(usesegpar || (!eSF)) return GetSegmentFirst(); else return GetSegmentFFirst(); }
199 EdbSegP *TrackZmax(bool usesegpar=false) const { if(usesegpar || (!eSF)) return GetSegmentLast(); else return GetSegmentFLast(); }
200
201 EdbSegP *TrackExtremity(bool zpos, bool usesegpar=false)
202 const { return zpos? TrackZmin(usesegpar) : TrackZmax(usesegpar); } // 0-end, 1-start (as in vertex class)
203
204 const EdbSegP *TrackStart() const;
205 const EdbSegP *TrackEnd() const;
206
207 Int_t Dir() const {return (DZ()<0) ? -1 : 1;}
208 Float_t Zmax() const;
209 Float_t Zmin() const;
210 Float_t Zstart() const {return TrackStart()->Z();}
211 Float_t Zend() const {return TrackEnd()->Z();}
212 void AddTrack(const EdbTrackP &tr);
213
215 {
216 if(!eS) eS = new TSortedList();
217 eS->Add(s);
218 }
220 {
221 if(!eS) return;
222 eS->Remove(s);
223 s->SetTrack(-1);
224 SetCounters();
225 }
226 void SubstituteSegment( EdbSegP *sold, EdbSegP *snew )
227 {
228 if(!eS) return;
229 eS->Remove(sold);
230 eS->Add(snew);
231 sold->SetTrack(-1);
232 }
234 {
235 if(!eSF)
236 {
237 eSF = new TSortedList();
238 eSF->SetOwner();
239 }
240 eSF->Add(s);
241 }
242
244 int CheckMaxGap();
245 int CheckAliasSegments();
246 int SetSegmentsTrack(int id) {for(int i=0; i<N(); i++) GetSegment(i)->SetTrack(id); return N();}
248 int FitTrackKFS( bool zmax=false, float X0=5810., int design = 0 );
249 int MakeSelector( EdbSegP &ss, bool followZ=true );
250 float MakePredictionTo( Float_t z, EdbSegP &ss );
251 float CHI2();
252 float CHI2F();
253 void FitTrack();
254 void Copy(const EdbTrackP &tr);
255 void Transform(const EdbAffine2D &tr);
256
257 void SetPerrUp(Float_t perrUp);
258 void SetPerrDown(Float_t perrDown);
259 void SetPerr(Float_t perrDown, Float_t perrUp);
260 Float_t PerrUp() const {return ePerrUp;}
261 Float_t PerrDown() const {return ePerrDown;}
262
263
264 void Clear() { if(eS) eS->Clear(); if(eSF) eSF->Clear(); }
265 void ClearF() { if(eSF) eSF->Clear(); }
266 void Print();
267 void PrintNice();
268
269 ClassDef(EdbTrackP,7) // track consists of segments
270};
271
272//______________________________________________________________________________
274
275 private:
276
277 Int_t eID;
278 Int_t ePID;
280 Float_t eStepX ,eStepY;
281 Float_t eStepTX,eStepTY;
282 Float_t eSigma[4];
283 Int_t eFlag;
284 Int_t eNAff;
286 Int_t eSide;
287
288 public:
289
290 EdbPattern();
292 EdbPattern(float x0, float y0, float z0, int n=0 );
293 virtual ~EdbPattern();
294
295 void Set0();
297 void SetSigma(float sx,float sy,float stx,float sty)
298 {eSigma[0]=sx; eSigma[1]=sy; eSigma[2]=stx; eSigma[3]=sty;}
299 void SetStep(float stepx, float stepy, float steptx, float stepty )
300 {eStepX=stepx; eStepY=stepy; eStepTX=steptx; eStepTY=stepty;}
301 void Reset();
302 float SummaryPath();
303 void FillCell( float stepx, float stepy, float steptx, float stepty );
304 int FindCompliments(EdbSegP &s, TObjArray &arr, float nsig, float nsigt);
305 void SetSegmentsPID();
306 void SetSegmentsScanID(EdbID id);
307 EdbPattern *ExtractSubPattern(float min[5], float max[5], int MCevt=-1);
308
309 void SetID(int id) {eID=id;}
310 void SetPID(int pid) {ePID=pid;}
311 void SetNAff(int n) {eNAff=n;}
312 void SetSide(int side) {eSide=side;}
313
314 Int_t NAff() const {return eNAff;}
315 float StepX() const {return eStepX;}
316 float StepY() const {return eStepY;}
317 float StepTX() const {return eStepTX;}
318 float StepTY() const {return eStepTY;}
319 int ID() const {return eID;}
320 int PID() const {return ePID;}
321 TIndexCell *Cell() const {return eCell;}
322 EdbSegP *FindSegment(int id);
323 float Xmean();
324 float Ymean();
325
326 EdbID ScanID() const {return eScanID;}
327 Int_t Plate() const {return eScanID.ePlate;}
328 Int_t Side() const {return eSide;}
329
330 ClassDef(EdbPattern,2) // pattern of segments
331};
332
333//______________________________________________________________________________
334class EdbPatternsVolume : public TObject {
335
336 private:
337
338 Float_t eX,eY,eZ;
339
340 public:
341
342 TObjArray *ePatterns;
343
346
348
349 public:
352 virtual ~EdbPatternsVolume();
353
354 void Set0();
355 void SetPatternsID();
356
357 void Transform( const EdbAffine2D *aff );
358 void Shift(float x, float y);
359 void Centralize();
360 void Centralize(float xc, float yc);
361 void SetXYZ( float x, float y, float z ) { eX=x; eY=y; eZ=z; }
362
363 Float_t X() const {return eX;}
364 Float_t Y() const {return eY;}
365 Float_t Z() const {return eZ;}
366 Int_t Npatterns() const { if(ePatterns)
367 return ePatterns->GetEntriesFast();
368 else return 0; }
369 Float_t Xmean();
370 Float_t Ymean();
371
373
374 void AddPattern( EdbPattern *pat );
375 void AddPatternAt( EdbPattern *pat, int id );
376 EdbPattern *GetPattern( int id ) const;
377 EdbPattern *GetPatternZLowestHighest(Bool_t lowestZ=kTRUE) const;
380 EdbPattern* NextPattern(float z, int dir) const;
381 EdbPattern* GetPatternNext(float z, int dir) const;
382 EdbPattern* GetPatternByPID(int pid) const;
384 EdbPattern* GetPatternByZ(float z, float tolerance=5) const;
385
386 void DropCell();
387
388 void PrintStat( Option_t *opt="") const;
389 void PrintStat( EdbPattern &pat ) const;
390 void PrintAff() const;
391 int DropCouples();
392
393 Long_t Vid(int pid, int sid) const { return pid*1000000+sid; }
394 Int_t Pid(Long_t vid) const { return vid/1000000; }
395 Int_t Sid(Long_t vid) const { return vid%1000000; }
396
397 EdbSegP *GetSegment(Long_t vid) const
398 {return GetPattern(Pid(vid))->GetSegment( Sid(vid) );}
399
400 int FindComplimentsVol(EdbSegP &s, TObjArray &arr, float nsig, float nsigt, int dpat);
401
402 EdbPattern *GetPatternByPlate(int plate, int side);
403 EdbPattern *InsertPattern(EdbPattern *pat, Bool_t descendingZ=0);
404 void SortPatternsByZ(Bool_t descendingZ=0);
405
406 void Print() const;
407
408 ClassDef(EdbPatternsVolume,1) // patterns nostri
409};
410
411#endif /* ROOT_EdbPattern */
brick z0
Definition: RecDispMC.C:106
brick dz
Definition: RecDispMC.C:107
brick X0
Definition: RecDispMC.C:112
int design
Definition: RecDispMC.C:90
TTree * tr
Definition: Shower_E_FromShowerRoot.C:5
float min(TClonesArray *t)
Definition: bitview.cxx:275
Definition: EdbAffine.h:17
Definition: EdbID.h:7
Int_t ePlate
Definition: EdbID.h:11
Definition: EdbPattern.h:273
void Reset()
Definition: EdbPattern.cxx:1509
void SetSegmentsPID()
Definition: EdbPattern.cxx:1455
float Xmean()
Definition: EdbPattern.cxx:1517
void SetSide(int side)
Definition: EdbPattern.h:312
void SetID(int id)
Definition: EdbPattern.h:309
void SetPID(int pid)
Definition: EdbPattern.h:310
void SetSigma(float sx, float sy, float stx, float sty)
Definition: EdbPattern.h:297
int PID() const
Definition: EdbPattern.h:320
Int_t eID
pattern id in the volume
Definition: EdbPattern.h:277
Float_t eStepY
bin size for the index cell
Definition: EdbPattern.h:280
Int_t ePID
correspond to the piece ID
Definition: EdbPattern.h:278
float SummaryPath()
Definition: EdbPattern.cxx:1309
void SetStep(float stepx, float stepy, float steptx, float stepty)
Definition: EdbPattern.h:299
float StepX() const
Definition: EdbPattern.h:315
TIndexCell * eCell
associated with eSegments
Definition: EdbPattern.h:279
float StepTY() const
Definition: EdbPattern.h:318
void SetNAff(int n)
Definition: EdbPattern.h:311
Int_t eNAff
number of segments selected for affine calculation
Definition: EdbPattern.h:284
void SetSegmentsScanID(EdbID id)
Definition: EdbPattern.cxx:1464
EdbID ScanID() const
Definition: EdbPattern.h:326
float StepTX() const
Definition: EdbPattern.h:317
Int_t eSide
emulsion side 0/1/2, defined when possible
Definition: EdbPattern.h:286
void SetScanID(EdbID id)
Definition: EdbPattern.h:296
EdbID eScanID
main scanning ID for this pattern, defined when possible
Definition: EdbPattern.h:285
EdbSegP * FindSegment(int id)
Definition: EdbPattern.cxx:1302
TIndexCell * Cell() const
Definition: EdbPattern.h:321
virtual ~EdbPattern()
Definition: EdbPattern.cxx:1284
Float_t eStepTY
bin size for the index cell
Definition: EdbPattern.h:281
Float_t eStepTX
Definition: EdbPattern.h:281
int FindCompliments(EdbSegP &s, TObjArray &arr, float nsig, float nsigt)
Definition: EdbPattern.cxx:1354
Float_t eSigma[4]
accuracy in comparison to neibour pattern
Definition: EdbPattern.h:282
Int_t eFlag
pattern flag
Definition: EdbPattern.h:283
int ID() const
Definition: EdbPattern.h:319
Int_t Side() const
Definition: EdbPattern.h:328
Int_t NAff() const
Definition: EdbPattern.h:314
EdbPattern()
Definition: EdbPattern.cxx:1255
float Ymean()
Definition: EdbPattern.cxx:1527
Int_t Plate() const
Definition: EdbPattern.h:327
void Set0()
Definition: EdbPattern.cxx:1290
EdbPattern * ExtractSubPattern(float min[5], float max[5], int MCevt=-1)
Definition: EdbPattern.cxx:1470
Float_t eStepX
Definition: EdbPattern.h:280
float StepY() const
Definition: EdbPattern.h:316
void FillCell(float stepx, float stepy, float steptx, float stepty)
Definition: EdbPattern.cxx:1323
Definition: EdbPattern.h:334
Int_t Sid(Long_t vid) const
Definition: EdbPattern.h:395
virtual ~EdbPatternsVolume()
Definition: EdbPattern.cxx:1573
Float_t eX
Definition: EdbPattern.h:338
int FindComplimentsVol(EdbSegP &s, TObjArray &arr, float nsig, float nsigt, int dpat)
Definition: EdbPattern.cxx:1938
EdbPattern * GetPatternZLowestHighest(Bool_t lowestZ=kTRUE) const
Definition: EdbPattern.cxx:1816
TIndexCell * eTracksCell
"vidt:vids" - connected segments cell
Definition: EdbPattern.h:344
void PrintStat(Option_t *opt="") const
Definition: EdbPattern.cxx:1662
void PassProperties(EdbPatternsVolume &pvol)
Definition: EdbPattern.cxx:1729
void AddPattern(EdbPattern *pat)
Definition: EdbPattern.cxx:1707
Float_t Z() const
Definition: EdbPattern.h:365
Int_t Pid(Long_t vid) const
Definition: EdbPattern.h:394
Float_t Ymean()
Definition: EdbPattern.cxx:1999
TIndexCell * ePatternsCell
"pid:id1:chi2:id2" - all found couples
Definition: EdbPattern.h:345
EdbSegP * GetSegment(Long_t vid) const
Definition: EdbPattern.h:397
void Set0()
Definition: EdbPattern.cxx:1585
EdbPattern * GetPatternByPID(int pid) const
Definition: EdbPattern.cxx:1879
void Shift(float x, float y)
Definition: EdbPattern.cxx:1748
Bool_t eDescendingZ
if =0 - z increase in the pattrens array; if =1 - decrease
Definition: EdbPattern.h:347
Float_t Y() const
Definition: EdbPattern.h:364
void Centralize()
Definition: EdbPattern.cxx:1621
Int_t Npatterns() const
Definition: EdbPattern.h:366
EdbPattern * GetPatternByZ(float z, float tolerance=5) const
EdbPattern* GetPatternByZ(float z) const;.
Definition: EdbPattern.cxx:1899
EdbPattern * GetPatternPreceding(EdbPattern *pat) const
Definition: EdbPattern.cxx:1851
EdbPattern * NextPattern(float z, int dir) const
Definition: EdbPattern.cxx:1920
void PrintAff() const
Definition: EdbPattern.cxx:1651
void AddPatternAt(EdbPattern *pat, int id)
Definition: EdbPattern.cxx:1713
void Transform(const EdbAffine2D *aff)
Definition: EdbPattern.cxx:1611
int DropCouples()
Definition: EdbPattern.cxx:1592
Long_t Vid(int pid, int sid) const
Definition: EdbPattern.h:393
void Print() const
Definition: EdbPattern.cxx:1693
void DropCell()
Definition: EdbPattern.cxx:1760
EdbPattern * GetPattern(int id) const
Definition: EdbPattern.cxx:1721
void SortPatternsByZ(Bool_t descendingZ=0)
Definition: EdbPattern.cxx:1794
Float_t eY
Definition: EdbPattern.h:338
EdbPattern * GetPatternByPlate(int plate, int side)
Definition: EdbPattern.cxx:1767
void SetXYZ(float x, float y, float z)
Definition: EdbPattern.h:361
void SetPatternsID()
Definition: EdbPattern.cxx:1603
EdbPattern * GetPatternNext(float z, int dir) const
Definition: EdbPattern.cxx:1857
EdbPattern * GetPatternSucceding(EdbPattern *pat) const
Definition: EdbPattern.cxx:1845
EdbPatternsVolume()
Definition: EdbPattern.cxx:1545
TObjArray * ePatterns
collection of patterns
Definition: EdbPattern.h:342
Float_t Xmean()
Definition: EdbPattern.cxx:1987
EdbPattern * InsertPattern(EdbPattern *pat, Bool_t descendingZ=0)
Definition: EdbPattern.cxx:1778
Float_t eZ
central point
Definition: EdbPattern.h:338
Float_t X() const
Definition: EdbPattern.h:363
protocol class for point (virtual point)
Definition: EdbVirtual.h:28
collection of 2D points
Definition: EdbVirtual.h:150
Definition: EdbSegP.h:21
Float_t DZ() const
Definition: EdbSegP.h:154
void SetTrack(int trid)
Definition: EdbSegP.h:131
Int_t ID() const
Definition: EdbSegP.h:147
Float_t Z() const
Definition: EdbSegP.h:153
Int_t PID() const
Definition: EdbSegP.h:148
Definition: EdbPattern.h:27
void SetSegmentsDZ(float dz)
Definition: EdbPattern.cxx:259
Int_t CalculateAXAY(EdbSegmentsBox *p, EdbAffine2D *affA)
Definition: EdbPattern.cxx:293
Float_t Z() const
Definition: EdbPattern.h:84
Float_t GetSize(Int_t XorY)
Definition: EdbPattern.cxx:187
Float_t eY
Definition: EdbPattern.h:31
void SetZ(float z)
Definition: EdbPattern.h:41
void TransformA(const EdbAffine2D *affA)
Definition: EdbPattern.cxx:324
Int_t CalculateXY(EdbSegmentsBox *p, EdbAffine2D *aff)
Definition: EdbPattern.cxx:282
EdbSegmentsBox(EdbSegmentsBox &box)
Definition: EdbPattern.h:45
virtual ~EdbSegmentsBox()
Definition: EdbPattern.cxx:48
void SetY(float y)
Definition: EdbPattern.h:80
Float_t GetTrackDensitymm2()
Definition: EdbPattern.cxx:233
Float_t eZ
central point
Definition: EdbPattern.h:31
Float_t DiffAff(EdbAffine2D *aff)
Definition: EdbPattern.cxx:147
EdbSegP * AddSegmentNoDuplicate(EdbSegP &s)
Definition: EdbPattern.cxx:92
EdbSegP * GetSegmentLast() const
Definition: EdbPattern.h:67
void TransformShr(const float shr)
Definition: EdbPattern.cxx:341
Float_t GetTrackDensity()
Definition: EdbPattern.cxx:223
Int_t N() const
Definition: EdbPattern.h:86
Float_t Y() const
Definition: EdbPattern.h:83
EdbPoint * At(int i) const
Definition: EdbPattern.h:87
void Set0()
Definition: EdbPattern.cxx:58
void Print(Option_t *opt="") const
other functions
Definition: EdbPattern.cxx:377
TClonesArray * GetSegments() const
Definition: EdbPattern.h:69
Float_t Diff(EdbSegmentsBox &p)
Definition: EdbPattern.cxx:165
Int_t GetN() const
Definition: EdbPattern.h:65
void TransformARot(const EdbAffine2D *affA)
Definition: EdbPattern.cxx:358
EdbSegP * GetSegment(int i) const
Definition: EdbPattern.h:66
void SetX(float x)
mandatory virtual functions:
Definition: EdbPattern.h:79
void Reset()
Definition: EdbPattern.cxx:140
EdbSegmentsBox(int nseg=0)
Definition: EdbPattern.cxx:31
void ProjectTo(const float dz)
Definition: EdbPattern.cxx:268
Float_t eX
Definition: EdbPattern.h:31
Float_t GetSizeXY()
Definition: EdbPattern.cxx:217
TClonesArray * eSegments
collection of segments (EdbSegP)
Definition: EdbPattern.h:33
Float_t GetSizeY()
Definition: EdbPattern.h:104
Float_t GetSizeX()
Definition: EdbPattern.h:103
Float_t X() const
Definition: EdbPattern.h:82
void * GetSegmentsAddr()
Definition: EdbPattern.h:70
Float_t eDZkeep
eDZkeep = eZ - Zoriginal (before any projections)
Definition: EdbPattern.h:35
void SetSegmentsZ()
Definition: EdbPattern.cxx:250
EdbSegP * AddSegment(int i, EdbSegP &s)
Definition: EdbPattern.cxx:72
void SetSegmentsPlate(int plate)
Definition: EdbPattern.cxx:241
Float_t DZ() const
Definition: EdbPattern.h:85
Definition: EdbPattern.h:113
void AddVTA(EdbVTA *vta)
Definition: EdbPattern.cxx:450
void SetN0(int n0)
Definition: EdbPattern.h:161
void RemoveSegment(EdbSegP *s)
Definition: EdbPattern.h:219
void AddSegmentF(EdbSegP *s)
Definition: EdbPattern.h:233
EdbVertex * VertexS()
Definition: EdbPattern.cxx:1191
EdbVertex * VertexE()
Definition: EdbPattern.cxx:1198
float CHI2F()
Definition: EdbPattern.cxx:1116
TSortedList * eS
array of segments
Definition: EdbPattern.h:117
void AddSegment(EdbSegP *s)
Definition: EdbPattern.h:214
EdbSegP * TrackZmax(bool usesegpar=false) const
Definition: EdbPattern.h:199
Int_t NF() const
Definition: EdbPattern.h:178
void SubstituteSegment(EdbSegP *sold, EdbSegP *snew)
Definition: EdbPattern.h:226
Int_t Dir() const
Definition: EdbPattern.h:207
Int_t ePDG
particle ID from PDG
Definition: EdbPattern.h:123
Float_t PerrUp() const
Definition: EdbPattern.h:260
Int_t PDG() const
Definition: EdbPattern.h:150
int RemoveAliasSegments()
Definition: EdbPattern.cxx:515
Float_t Wgrains() const
Definition: EdbPattern.cxx:659
EdbTrackP(int nseg=0)
Definition: EdbPattern.cxx:386
void SetPerrUp(Float_t perrUp)
Definition: EdbPattern.cxx:1220
EdbSegP * GetSegmentFFirst() const
Definition: EdbPattern.h:192
Int_t eNpl
number of plates passed through
Definition: EdbPattern.h:119
void Print()
Definition: EdbPattern.cxx:1152
EdbTrackP(EdbTrackP &track)
Definition: EdbPattern.h:134
Float_t Zend() const
Definition: EdbPattern.h:211
Int_t N() const
Definition: EdbPattern.h:177
void Clear()
Definition: EdbPattern.h:264
void ClearF()
Definition: EdbPattern.h:265
Int_t N0() const
Definition: EdbPattern.h:163
EdbVTA * eVTAE
vertex track end is attached to
Definition: EdbPattern.h:127
int CheckAliasSegments()
Definition: EdbPattern.cxx:506
void SetOwner()
Definition: EdbPattern.h:139
EdbSegP * GetSegment(int i) const
Definition: EdbPattern.h:195
void Copy(const EdbTrackP &tr)
Definition: EdbPattern.cxx:473
int MakeSelector(EdbSegP &ss, bool followZ=true)
Definition: EdbPattern.cxx:1071
EdbSegP * GetSegmentLast() const
Definition: EdbPattern.h:190
Float_t eM
invariant mass of the particle
Definition: EdbPattern.h:121
const EdbSegP * TrackEnd() const
Definition: EdbPattern.cxx:1246
void PrintNice()
Definition: EdbPattern.cxx:1169
int CheckMaxGap()
Definition: EdbPattern.cxx:530
EdbSegP * TrackExtremity(bool zpos, bool usesegpar=false) const
Definition: EdbPattern.h:201
EdbVTA * VTAS() const
Definition: EdbPattern.h:143
Int_t eN0
number of holes (if any)
Definition: EdbPattern.h:120
Int_t GetSegmentsFlag(int &nseg) const
Definition: EdbPattern.cxx:591
EdbSegP * GetSegmentF(int i) const
Definition: EdbPattern.h:196
EdbVTA * VTAE() const
Definition: EdbPattern.h:144
Float_t eDE
total energy loss of the particle between first and last segments
Definition: EdbPattern.h:122
Int_t GetSegmentsAid(int &nseg) const
Definition: EdbPattern.cxx:624
TSortedList * eSF
array of fitted segments
Definition: EdbPattern.h:118
void SetNpl()
Definition: EdbPattern.h:169
void Set0()
Definition: EdbPattern.cxx:432
void SetN0()
Definition: EdbPattern.h:162
Float_t Zstart() const
Definition: EdbPattern.h:210
float MakePredictionTo(Float_t z, EdbSegP &ss)
Definition: EdbPattern.cxx:1050
void SetPerr(Float_t perrDown, Float_t perrUp)
Definition: EdbPattern.cxx:1230
int SetSegmentsTrack()
Definition: EdbPattern.h:247
Float_t M() const
Definition: EdbPattern.h:155
Float_t ePerrDown
error of P() in lower direction, obtained by MCS,or shower-algorithm
Definition: EdbPattern.h:125
void ClearVTA()
Definition: EdbPattern.cxx:459
int FitTrackKFS(bool zmax=false, float X0=5810., int design=0)
Definition: EdbPattern.cxx:722
Int_t GetSegmentsMCTrack(int &nseg) const
Definition: EdbPattern.cxx:545
void Transform(const EdbAffine2D &tr)
Definition: EdbPattern.cxx:497
virtual ~EdbTrackP()
Definition: EdbPattern.cxx:425
EdbSegP * GetSegmentWithClosestZ(float z, float dz)
Definition: EdbPattern.cxx:679
Float_t ePerrUp
error of P() in upper direction, obtained by MCS,or shower-algorithm
Definition: EdbPattern.h:124
const EdbSegP * TrackStart() const
Definition: EdbPattern.cxx:1237
void SetNpl(int npl)
Definition: EdbPattern.h:168
EdbSegP * GetSegmentFLast() const
Definition: EdbPattern.h:193
Int_t Npl() const
Definition: EdbPattern.h:171
EdbVertex * Vertex(int zpos)
Definition: EdbPattern.h:147
Float_t PerrDown() const
Definition: EdbPattern.h:261
int SetSegmentsTrack(int id)
Definition: EdbPattern.h:246
Float_t Zmin() const
Definition: EdbPattern.cxx:1205
void FitTrack()
Definition: EdbPattern.cxx:696
void SetDE(float de)
Definition: EdbPattern.h:165
Float_t DE() const
Definition: EdbPattern.h:166
EdbSegP * GetSegmentFirst() const
Definition: EdbPattern.h:189
void SetPDG(int pdg)
Definition: EdbPattern.h:149
EdbSegP * TrackZmin(bool usesegpar=false) const
Definition: EdbPattern.h:198
void SetCounters()
Definition: EdbPattern.h:159
void SetM(float m)
Definition: EdbPattern.h:154
Double_t GetBTEfficiency()
Definition: EdbPattern.cxx:1134
Float_t Zmax() const
Definition: EdbPattern.cxx:1213
void SetPerrDown(Float_t perrDown)
Definition: EdbPattern.cxx:1225
Float_t Wmean() const
Definition: EdbPattern.cxx:581
float CHI2()
Definition: EdbPattern.cxx:1099
EdbVTA * eVTAS
vertex track start is attached to
Definition: EdbPattern.h:126
void AddTrack(const EdbTrackP &tr)
Definition: EdbPattern.cxx:668
Definition: EdbVertex.h:26
Definition: EdbVertex.h:69
sort collection with attributes
Definition: TIndexCell.h:19
Definition: bitview.h:14
int pid[1000]
Definition: m2track.cpp:13
s
Definition: check_shower.C:55
int max
Definition: check_shower.C:41
ss
Definition: energy.C:62
EdbSegP * s1
Definition: tlg2couples.C:29
EdbSegP * s2
Definition: tlg2couples.C:30
const char * opt
Definition: mc2raw.cxx:42
Int_t plate
Definition: merge_Energy_SytematicSources_Electron.C:1
UInt_t id
Definition: tlg2couples.C:117
p
Definition: testBGReduction_AllMethods.C:8
void w(int rid=2, int nviews=2)
Definition: test.C:27