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 
20 class EdbAffine2D;
21 class TIndexCell;
22 class EdbVTA;
23 class EdbVertex;
24 
25 
26 //______________________________________________________________________________
27 class EdbSegmentsBox : public TObject, public EdbPointsBox2D {
28 
29  private:
30 
31  Float_t eX,eY,eZ; // central point
32 
33  TClonesArray *eSegments; // collection of segments (EdbSegP)
34 
35  Float_t eDZkeep; // eDZkeep = eZ - Zoriginal (before any projections)
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  void Expand(int n) {eSegments->Expand(n);}
72 
73  void SetSegmentsZ();
74  void SetSegmentsDZ(float dz);
75  void SetSegmentsW(float w);
76  void SetSegmentsFlag(int flag);
77 
78  void SetSegmentsPlate(int plate);
79 
80  // mandatory virtual functions:
81 
82  void SetX(float x) { eX=x; }
83  void SetY(float y) { eY=y; }
84 
85  Float_t X() const {return eX;}
86  Float_t Y() const {return eY;}
87  Float_t Z() const {return eZ;}
88  Float_t DZ() const {return eDZkeep;}
89  Int_t N() const {return GetN();}
90  EdbPoint *At(int i) const {return (EdbPoint*)GetSegment(i);}
91 
92  // other functions
93 
94  void Print( Option_t *opt="") const;
95  void Set0();
96  void Reset();
97  void ProjectTo(const float dz);
98  void TransformA( const EdbAffine2D *affA );
99  void TransformARot( const EdbAffine2D *affA );
100  void TransformShr( const float shr );
101  Int_t CalculateXY( EdbSegmentsBox *p , EdbAffine2D *aff );
102  Int_t CalculateAXAY(EdbSegmentsBox *p , EdbAffine2D *affA );
103  Float_t DiffAff( EdbAffine2D *aff );
104  Float_t Diff( EdbSegmentsBox &p );
105  Float_t GetSize(Int_t XorY);
106  Float_t GetSizeX() { return GetSize(0); }
107  Float_t GetSizeY() { return GetSize(1); }
108  Float_t GetSizeXY();
109  Float_t GetTrackDensity();
110  Float_t GetTrackDensitymm2();
111  void RemovePosMargins(float x0, float y0, float dx, float dy);
112  void RemoveAngMargins(float tx0, float ty0, float dtx, float dty);
113 
114  ClassDef(EdbSegmentsBox,1) // collection of segments
115 };
116 
117 //______________________________________________________________________________
118 class EdbTrackP : public EdbSegP {
119 
120  private:
121 
122  TSortedList *eS; // array of segments
123  TSortedList *eSF; // array of fitted segments
124  Int_t eNpl; // number of plates passed through
125  Int_t eN0; // number of holes (if any)
126  Float_t eM; // invariant mass of the particle
127  Float_t eDE; // total energy loss of the particle between first and last segments
128  Int_t ePDG; // particle ID from PDG
129  Float_t ePerrUp; // error of P() in upper direction, obtained by MCS,or shower-algorithm
130  Float_t ePerrDown; // error of P() in lower direction, obtained by MCS,or shower-algorithm
133 
134  public:
135 
136  EdbTrackP(int nseg=0);
137  EdbTrackP(EdbSegP &seg);
138  EdbTrackP(EdbSegP *seg, float m=0.12);
140 
141  virtual ~EdbTrackP();
142 
143  void Set0();
144  void SetOwner() { if(eS) eS->SetOwner(true); }
145  void AddVTA(EdbVTA *vta);
146  void ClearVTA();
147  void ClearVTA(EdbVTA *vta);
148  EdbVTA *VTAS() const {return eVTAS;}
149  EdbVTA *VTAE() const {return eVTAE;}
150  EdbVertex *VertexS();
151  EdbVertex *VertexE();
152  EdbVertex *Vertex(int zpos) {return zpos? VertexS(): VertexE();}
153 
154  void SetPDG( int pdg ) { ePDG=pdg; }
155  Int_t PDG() const {return ePDG;}
156 
157  Float_t Wmean() const;
158 
159  void SetM( float m ) { eM=m; }
160  Float_t M() const {return eM;}
161 
162 
163  //void SetErrorsCOV(EdbScanCond &cond);
164  void SetCounters() { SetNpl(); SetN0(); }
165 
166  void SetN0( int n0 ) { eN0 = n0; }
167  void SetN0() { eN0 = eNpl-N(); }
168  Int_t N0() const {return eN0;}
169 
170  void SetDE( float de ) { eDE=de; }
171  Float_t DE() const {return eDE;}
172 
173  void SetNpl( int npl ) { eNpl=npl; }
174  void SetNpl()
175  { if(eS) eNpl = 1+TMath::Abs(GetSegment(0)->PID() - GetSegment(N()-1)->PID()); }
176  Int_t Npl() const {return eNpl;}
177 
178  // TList *S() const { return eS; }
179  // TList *SF() const { return eSF; }
180 
181  //int N() const { if(eS) return eS->GetEntries(); else return 0; } //TODO fast
182  Int_t N() const { return (eS) ? eS->GetSize() : 0; }
183  Int_t NF() const { return (eSF)? eSF->GetSize() : 0; }
184 
185  Double_t GetBTEfficiency();
186 
187  Float_t Wgrains() const;
188  Int_t GetSegmentsFlag( int &nseg ) const;
189  Int_t GetSegmentsAid( int &nseg ) const;
190  Int_t GetSegmentsMCTrack( int &nseg ) const;
191 
192  EdbSegP *GetSegmentWithClosestZ( float z, float dz);
193 
194  EdbSegP *GetSegmentFirst() const {return (eS) ? (EdbSegP*)(eS->First()) : 0;}
195  EdbSegP *GetSegmentLast() const {return (eS) ? (EdbSegP*)(eS->Last()) : 0;}
196 
197  EdbSegP *GetSegmentFFirst() const {return (eSF) ? (EdbSegP*)(eSF->First()) : 0;}
198  EdbSegP *GetSegmentFLast() const {return (eSF) ? (EdbSegP*)(eSF->Last()) : 0;}
199 
200  EdbSegP *GetSegment(int i) const {return (eS) ? (EdbSegP*)(eS->At(i)) : 0; }
201  EdbSegP *GetSegmentF(int i) const {return (eSF) ? (EdbSegP*)(eSF->At(i)) : 0;}
202 
203  EdbSegP *TrackZmin(bool usesegpar=false) const { if(usesegpar || (!eSF)) return GetSegmentFirst(); else return GetSegmentFFirst(); }
204  EdbSegP *TrackZmax(bool usesegpar=false) const { if(usesegpar || (!eSF)) return GetSegmentLast(); else return GetSegmentFLast(); }
205 
206  EdbSegP *TrackExtremity(bool zpos, bool usesegpar=false)
207  const { return zpos? TrackZmin(usesegpar) : TrackZmax(usesegpar); } // 0-end, 1-start (as in vertex class)
208 
209  const EdbSegP *TrackStart() const;
210  const EdbSegP *TrackEnd() const;
211 
212  Int_t Dir() const {return (DZ()<0) ? -1 : 1;}
213  Float_t Zmax() const;
214  Float_t Zmin() const;
215  Float_t Zstart() const {return TrackStart()->Z();}
216  Float_t Zend() const {return TrackEnd()->Z();}
217  void AddTrack(const EdbTrackP &tr);
218 
220  {
221  if(!eS) eS = new TSortedList();
222  eS->Add(s);
223  }
225  {
226  if(!eS) return;
227  eS->Remove(s);
228  s->SetTrack(-1);
229  SetCounters();
230  }
231  void SubstituteSegment( EdbSegP *sold, EdbSegP *snew )
232  {
233  if(!eS) return;
234  eS->Remove(sold);
235  eS->Add(snew);
236  sold->SetTrack(-1);
237  }
239  {
240  if(!eSF)
241  {
242  eSF = new TSortedList();
243  eSF->SetOwner();
244  }
245  eSF->Add(s);
246  }
247 
248  int RemoveAliasSegments();
249  int CheckMaxGap();
250  int CheckAliasSegments();
251  int SetSegmentsP(float p) {for(int i=0; i<N(); i++) GetSegment(i)->SetP(p); return N();}
252  int SetSegmentsTrack(int id) {for(int i=0; i<N(); i++) GetSegment(i)->SetTrack(id); return N();}
254  int FitTrackKFS( bool zmax=false, float X0=5810., int design = 0 );
255  int MakeSelector( EdbSegP &ss, bool followZ=true );
256  int EstimatePositionAt( Float_t z, EdbSegP &ss );
257  float MakePredictionTo( Float_t z, EdbSegP &ss );
258  float CHI2();
259  float CHI2F();
260  void FitTrack();
261  void Copy(const EdbTrackP &tr);
262  void Transform(const EdbAffine2D &tr);
263 
264  void SetPerrUp(Float_t perrUp);
265  void SetPerrDown(Float_t perrDown);
266  void SetPerr(Float_t perrDown, Float_t perrUp);
267  Float_t PerrUp() const {return ePerrUp;}
268  Float_t PerrDown() const {return ePerrDown;}
269 
270 
271  void Clear() { if(eS) eS->Clear(); if(eSF) eSF->Clear(); }
272  void ClearF() { if(eSF) eSF->Clear(); }
273  void Print();
274  void PrintNice();
275 
276  ClassDef(EdbTrackP,7) // track consists of segments
277 };
278 
279 //______________________________________________________________________________
280 class EdbPattern : public EdbSegmentsBox {
281 
282  private:
283 
284  Int_t eID; // pattern id in the volume
285  Int_t ePID; // correspond to the piece ID
287  Float_t eStepX ,eStepY; // bin size for the index cell
288  Float_t eStepTX,eStepTY; // bin size for the index cell
289  Float_t eSigma[4]; // accuracy in comparison to neibour pattern
290  Int_t eFlag; // pattern flag
291  Int_t eNAff; // number of segments selected for affine calculation
293  Int_t eSide;
294 
295  public:
296 
297  EdbPattern();
298  EdbPattern( EdbPattern &p );
299  EdbPattern(float x0, float y0, float z0, int n=0 );
300  virtual ~EdbPattern();
301 
302  void Set0();
303  void SetScanID(EdbID id) {eScanID=id;}
304  void SetSigma(float sx,float sy,float stx,float sty)
305  {eSigma[0]=sx; eSigma[1]=sy; eSigma[2]=stx; eSigma[3]=sty;}
306  void SetStep(float stepx, float stepy, float steptx, float stepty )
307  {eStepX=stepx; eStepY=stepy; eStepTX=steptx; eStepTY=stepty;}
308  void Reset();
309  float SummaryPath();
310  void FillCell( float stepx, float stepy, float steptx, float stepty );
311  int FindCompliments(EdbSegP &s, TObjArray &arr, float nsig, float nsigt);
312  void SetSegmentsPID();
313  void SetSegmentsScanID(EdbID id);
314  EdbPattern *ExtractSubPattern(float min[5], float max[5], int MCevt=-1);
315  EdbPattern *ExtractSubPatternXY(float xmin, float xmax, float ymin, float ymax);
316  Int_t AddPattern(EdbPattern &p);
317 
318  void SetID(int id) {eID=id;}
319  void SetPID(int pid) {ePID=pid;}
320  void SetNAff(int n) {eNAff=n;}
321  void SetSide(int side) {eSide=side;}
322 
323  Int_t NAff() const {return eNAff;}
324  float StepX() const {return eStepX;}
325  float StepY() const {return eStepY;}
326  float StepTX() const {return eStepTX;}
327  float StepTY() const {return eStepTY;}
328  int ID() const {return eID;}
329  int PID() const {return ePID;}
330  TIndexCell *Cell() const {return eCell;}
331  EdbSegP *FindSegment(int id);
332  float Xmean();
333  float Ymean();
334 // float Xmin() const;
335 // float Xmax() const;
336 // float Ymin() const;
337 // float Ymax() const;
338 
339  EdbID ScanID() const {return eScanID;}
340  Int_t Plate() const {return eScanID.ePlate;}
341  Int_t Brick() const {return eScanID.eBrick;}
342  Int_t Side() const {return eSide;}
343 
344  ClassDef(EdbPattern,2) // pattern of segments
345 };
346 
347 //______________________________________________________________________________
348 class EdbPatternsVolume : public TObject {
349 
350  private:
351 
352  Float_t eX,eY,eZ; // central point
353 
354  public:
355 
356  TObjArray *ePatterns; // collection of patterns
357 
360 
361  Bool_t eDescendingZ; // if =0 - z increase in the pattrens array; if =1 - decrease
362 
363  public:
366  virtual ~EdbPatternsVolume();
367 
368  void Set0();
369  void SetPatternsID();
370 
371  void Transform( const EdbAffine2D *aff );
372  void Shift(float x, float y);
373  void Centralize();
374  void Centralize(float xc, float yc);
375  void SetXYZ( float x, float y, float z ) { eX=x; eY=y; eZ=z; }
376 
377  Float_t X() const {return eX;}
378  Float_t Y() const {return eY;}
379  Float_t Z() const {return eZ;}
380  Int_t Npatterns() const { if(ePatterns)
381  return ePatterns->GetEntriesFast();
382  else return 0; }
383  Float_t Xmean();
384  Float_t Ymean();
385 
386  void PassProperties(EdbPatternsVolume &pvol);
387 
388  void AddPattern( EdbPattern *pat );
389  void AddPatternAt( EdbPattern *pat, int id );
390  EdbPattern *GetPattern( int id ) const;
391  EdbPattern *GetPatternZLowestHighest(Bool_t lowestZ=kTRUE) const;
394  EdbPattern* NextPattern(float z, int dir) const;
395  EdbPattern* GetPatternNext(float z, int dir) const;
396  EdbPattern* GetPatternByPID(int pid) const;
397 // EdbPattern* GetPatternByZ(float z) const;
398  EdbPattern* GetPatternByZ(float z, float tolerance=5) const;
399 
400  void DropCell();
401 
402  void PrintStat( Option_t *opt="") const;
403  void PrintStat( EdbPattern &pat ) const;
404  void PrintAff() const;
405  int DropCouples();
406 
407  Long_t Vid(int pid, int sid) const { return pid*1000000+sid; }
408  Int_t Pid(Long_t vid) const { return vid/1000000; }
409  Int_t Sid(Long_t vid) const { return vid%1000000; }
410 
411  EdbSegP *GetSegment(Long_t vid) const
412  {return GetPattern(Pid(vid))->GetSegment( Sid(vid) );}
413 
414  int FindComplimentsVol(EdbSegP &s, TObjArray &arr, float nsig, float nsigt, int dpat);
415 
416  EdbPattern *GetPatternByPlate(int plate, int side);
417  EdbPattern *InsertPattern(EdbPattern *pat, Bool_t descendingZ=0);
418  void SortPatternsByZ(Bool_t descendingZ=0);
419 
420  void Print() const;
421 
422  ClassDef(EdbPatternsVolume,1) // patterns nostri
423 };
424 
425 #endif /* ROOT_EdbPattern */
brick z0
Definition: RecDispMC.C:106
brick dz
Definition: RecDispMC.C:107
int design
Definition: RecDispMC.C:90
TTree * tr
Definition: Shower_E_FromShowerRoot.C:5
float min(TClonesArray *t)
Definition: bitview.cxx:275
int max
Definition: check_shower.C:41
Definition: EdbAffine.h:17
Definition: EdbID.h:7
Int_t eBrick
Definition: EdbID.h:10
Int_t ePlate
Definition: EdbID.h:11
Definition: EdbPattern.h:280
void Reset()
Definition: EdbPattern.cxx:1632
void SetSegmentsPID()
Definition: EdbPattern.cxx:1548
float Xmean()
Definition: EdbPattern.cxx:1640
void SetSide(int side)
Definition: EdbPattern.h:321
void SetID(int id)
Definition: EdbPattern.h:318
void SetPID(int pid)
Definition: EdbPattern.h:319
void SetSigma(float sx, float sy, float stx, float sty)
Definition: EdbPattern.h:304
int PID() const
Definition: EdbPattern.h:329
Int_t eID
Definition: EdbPattern.h:284
Float_t eStepY
Definition: EdbPattern.h:287
Int_t ePID
Definition: EdbPattern.h:285
float SummaryPath()
Definition: EdbPattern.cxx:1402
TIndexCell * Cell() const
Definition: EdbPattern.h:330
void SetStep(float stepx, float stepy, float steptx, float stepty)
Definition: EdbPattern.h:306
float StepX() const
Definition: EdbPattern.h:324
TIndexCell * eCell
Definition: EdbPattern.h:286
float StepTY() const
Definition: EdbPattern.h:327
void SetNAff(int n)
Definition: EdbPattern.h:320
EdbPattern * ExtractSubPatternXY(float xmin, float xmax, float ymin, float ymax)
Definition: EdbPattern.cxx:1573
Int_t eNAff
Definition: EdbPattern.h:291
void SetSegmentsScanID(EdbID id)
Definition: EdbPattern.cxx:1557
EdbID ScanID() const
Definition: EdbPattern.h:339
float StepTX() const
Definition: EdbPattern.h:326
Int_t AddPattern(EdbPattern &p)
Definition: EdbPattern.cxx:1563
Int_t eSide
main scanning ID for this pattern, defined when possible
Definition: EdbPattern.h:293
void SetScanID(EdbID id)
Definition: EdbPattern.h:303
EdbID eScanID
Definition: EdbPattern.h:292
EdbSegP * FindSegment(int id)
Definition: EdbPattern.cxx:1395
virtual ~EdbPattern()
Definition: EdbPattern.cxx:1377
Float_t eStepTY
Definition: EdbPattern.h:288
Float_t eStepTX
Definition: EdbPattern.h:288
Int_t Brick() const
Definition: EdbPattern.h:341
int FindCompliments(EdbSegP &s, TObjArray &arr, float nsig, float nsigt)
Definition: EdbPattern.cxx:1447
Float_t eSigma[4]
Definition: EdbPattern.h:289
Int_t eFlag
Definition: EdbPattern.h:290
int ID() const
Definition: EdbPattern.h:328
Int_t Side() const
Definition: EdbPattern.h:342
Int_t NAff() const
Definition: EdbPattern.h:323
EdbPattern()
emulsion side 0/1/2, defined when possible
Definition: EdbPattern.cxx:1348
float Ymean()
Definition: EdbPattern.cxx:1687
Int_t Plate() const
Definition: EdbPattern.h:340
void Set0()
Definition: EdbPattern.cxx:1383
EdbPattern * ExtractSubPattern(float min[5], float max[5], int MCevt=-1)
Definition: EdbPattern.cxx:1593
Float_t eStepX
associated with eSegments
Definition: EdbPattern.h:287
float StepY() const
Definition: EdbPattern.h:325
void FillCell(float stepx, float stepy, float steptx, float stepty)
Definition: EdbPattern.cxx:1416
Definition: EdbPattern.h:348
Int_t Sid(Long_t vid) const
Definition: EdbPattern.h:409
virtual ~EdbPatternsVolume()
Definition: EdbPattern.cxx:1733
Float_t eX
Definition: EdbPattern.h:352
int FindComplimentsVol(EdbSegP &s, TObjArray &arr, float nsig, float nsigt, int dpat)
Definition: EdbPattern.cxx:2104
EdbPattern * GetPatternZLowestHighest(Bool_t lowestZ=kTRUE) const
Definition: EdbPattern.cxx:1982
TIndexCell * eTracksCell
Definition: EdbPattern.h:358
void PrintStat(Option_t *opt="") const
Definition: EdbPattern.cxx:1822
void PassProperties(EdbPatternsVolume &pvol)
Definition: EdbPattern.cxx:1895
void AddPattern(EdbPattern *pat)
Definition: EdbPattern.cxx:1867
Float_t Z() const
Definition: EdbPattern.h:379
Int_t Pid(Long_t vid) const
Definition: EdbPattern.h:408
Float_t Ymean()
Definition: EdbPattern.cxx:2165
TIndexCell * ePatternsCell
"vidt:vids" - connected segments cell
Definition: EdbPattern.h:359
void Set0()
Definition: EdbPattern.cxx:1745
EdbPattern * GetPatternByPID(int pid) const
Definition: EdbPattern.cxx:2045
void Shift(float x, float y)
Definition: EdbPattern.cxx:1914
Bool_t eDescendingZ
"pid:id1:chi2:id2" - all found couples
Definition: EdbPattern.h:361
Float_t Y() const
Definition: EdbPattern.h:378
void Centralize()
Definition: EdbPattern.cxx:1781
Int_t Npatterns() const
Definition: EdbPattern.h:380
EdbPattern * GetPatternByZ(float z, float tolerance=5) const
Definition: EdbPattern.cxx:2065
EdbPattern * GetPatternPreceding(EdbPattern *pat) const
Definition: EdbPattern.cxx:2017
EdbPattern * NextPattern(float z, int dir) const
Definition: EdbPattern.cxx:2086
void PrintAff() const
Definition: EdbPattern.cxx:1811
void AddPatternAt(EdbPattern *pat, int id)
Definition: EdbPattern.cxx:1873
void Transform(const EdbAffine2D *aff)
Definition: EdbPattern.cxx:1771
int DropCouples()
Definition: EdbPattern.cxx:1752
Long_t Vid(int pid, int sid) const
Definition: EdbPattern.h:407
EdbSegP * GetSegment(Long_t vid) const
Definition: EdbPattern.h:411
void Print() const
Definition: EdbPattern.cxx:1853
void DropCell()
Definition: EdbPattern.cxx:1926
EdbPattern * GetPattern(int id) const
Definition: EdbPattern.cxx:1887
void SortPatternsByZ(Bool_t descendingZ=0)
Definition: EdbPattern.cxx:1960
Float_t eY
Definition: EdbPattern.h:352
EdbPattern * GetPatternByPlate(int plate, int side)
Definition: EdbPattern.cxx:1933
void SetXYZ(float x, float y, float z)
Definition: EdbPattern.h:375
void SetPatternsID()
Definition: EdbPattern.cxx:1763
EdbPattern * GetPatternNext(float z, int dir) const
Definition: EdbPattern.cxx:2023
EdbPattern * GetPatternSucceding(EdbPattern *pat) const
Definition: EdbPattern.cxx:2011
EdbPatternsVolume()
Definition: EdbPattern.cxx:1705
TObjArray * ePatterns
Definition: EdbPattern.h:356
Float_t Xmean()
Definition: EdbPattern.cxx:2153
EdbPattern * InsertPattern(EdbPattern *pat, Bool_t descendingZ=0)
Definition: EdbPattern.cxx:1944
Float_t eZ
Definition: EdbPattern.h:352
Float_t X() const
Definition: EdbPattern.h:377
Definition: EdbVirtual.h:28
Definition: EdbVirtual.h:142
Definition: EdbSegP.h:18
Float_t DZ() const
Definition: EdbSegP.h:151
void SetTrack(int trid)
Definition: EdbSegP.h:128
Int_t ID() const
Definition: EdbSegP.h:144
Float_t Z() const
Definition: EdbSegP.h:150
void SetP(float p)
Definition: EdbSegP.h:130
Int_t PID() const
Definition: EdbSegP.h:145
Definition: EdbPattern.h:27
void SetSegmentsDZ(float dz)
Definition: EdbPattern.cxx:284
Int_t CalculateAXAY(EdbSegmentsBox *p, EdbAffine2D *affA)
Definition: EdbPattern.cxx:336
void SetSegmentsFlag(int flag)
Definition: EdbPattern.cxx:302
Float_t Z() const
Definition: EdbPattern.h:87
Float_t GetSize(Int_t XorY)
Definition: EdbPattern.cxx:186
void SetSegmentsW(float w)
Definition: EdbPattern.cxx:293
Float_t eY
Definition: EdbPattern.h:31
void SetZ(float z)
Definition: EdbPattern.h:41
void TransformA(const EdbAffine2D *affA)
Definition: EdbPattern.cxx:367
Int_t CalculateXY(EdbSegmentsBox *p, EdbAffine2D *aff)
Definition: EdbPattern.cxx:325
EdbSegmentsBox(EdbSegmentsBox &box)
Definition: EdbPattern.h:45
virtual ~EdbSegmentsBox()
Definition: EdbPattern.cxx:47
void SetY(float y)
Definition: EdbPattern.h:83
Float_t GetTrackDensitymm2()
Definition: EdbPattern.cxx:232
Float_t eZ
Definition: EdbPattern.h:31
Float_t DiffAff(EdbAffine2D *aff)
Definition: EdbPattern.cxx:146
void RemovePosMargins(float x0, float y0, float dx, float dy)
Definition: EdbPattern.cxx:240
EdbSegP * AddSegmentNoDuplicate(EdbSegP &s)
Definition: EdbPattern.cxx:91
void TransformShr(const float shr)
Definition: EdbPattern.cxx:384
Float_t GetTrackDensity()
Definition: EdbPattern.cxx:222
Int_t N() const
Definition: EdbPattern.h:89
Float_t Y() const
Definition: EdbPattern.h:86
void Set0()
Definition: EdbPattern.cxx:57
void Print(Option_t *opt="") const
Definition: EdbPattern.cxx:420
Float_t Diff(EdbSegmentsBox &p)
Definition: EdbPattern.cxx:164
Int_t GetN() const
Definition: EdbPattern.h:65
void TransformARot(const EdbAffine2D *affA)
Definition: EdbPattern.cxx:401
void * GetSegmentsAddr()
Definition: EdbPattern.h:70
void Expand(int n)
Definition: EdbPattern.h:71
void SetX(float x)
Definition: EdbPattern.h:82
void Reset()
Definition: EdbPattern.cxx:139
EdbSegmentsBox(int nseg=0)
Definition: EdbPattern.cxx:30
void ProjectTo(const float dz)
Definition: EdbPattern.cxx:311
Float_t eX
Definition: EdbPattern.h:31
Float_t GetSizeXY()
Definition: EdbPattern.cxx:216
TClonesArray * eSegments
Definition: EdbPattern.h:33
Float_t GetSizeY()
Definition: EdbPattern.h:107
Float_t GetSizeX()
Definition: EdbPattern.h:106
EdbSegP * GetSegment(int i) const
Definition: EdbPattern.h:66
void RemoveAngMargins(float tx0, float ty0, float dtx, float dty)
Definition: EdbPattern.cxx:254
Float_t X() const
Definition: EdbPattern.h:85
Float_t eDZkeep
Definition: EdbPattern.h:35
EdbSegP * GetSegmentLast() const
Definition: EdbPattern.h:67
void SetSegmentsZ()
Definition: EdbPattern.cxx:275
TClonesArray * GetSegments() const
Definition: EdbPattern.h:69
EdbPoint * At(int i) const
Definition: EdbPattern.h:90
EdbSegP * AddSegment(int i, EdbSegP &s)
Definition: EdbPattern.cxx:71
void SetSegmentsPlate(int plate)
Definition: EdbPattern.cxx:266
Float_t DZ() const
Definition: EdbPattern.h:88
Definition: EdbPattern.h:118
void AddVTA(EdbVTA *vta)
Definition: EdbPattern.cxx:493
void SetN0(int n0)
Definition: EdbPattern.h:166
void RemoveSegment(EdbSegP *s)
Definition: EdbPattern.h:224
void AddSegmentF(EdbSegP *s)
Definition: EdbPattern.h:238
EdbVertex * VertexS()
Definition: EdbPattern.cxx:1284
EdbVertex * VertexE()
Definition: EdbPattern.cxx:1291
float CHI2F()
Definition: EdbPattern.cxx:1209
TSortedList * eS
Definition: EdbPattern.h:122
void AddSegment(EdbSegP *s)
Definition: EdbPattern.h:219
EdbVertex * Vertex(int zpos)
Definition: EdbPattern.h:152
Int_t NF() const
Definition: EdbPattern.h:183
void SubstituteSegment(EdbSegP *sold, EdbSegP *snew)
Definition: EdbPattern.h:231
Int_t Dir() const
Definition: EdbPattern.h:212
Int_t ePDG
Definition: EdbPattern.h:128
Float_t PerrUp() const
Definition: EdbPattern.h:267
Int_t PDG() const
Definition: EdbPattern.h:155
int RemoveAliasSegments()
Definition: EdbPattern.cxx:558
EdbSegP * GetSegmentFirst() const
Definition: EdbPattern.h:194
Float_t Wgrains() const
Definition: EdbPattern.cxx:702
EdbTrackP(int nseg=0)
vertex track end is attached to
Definition: EdbPattern.cxx:429
EdbSegP * GetSegmentLast() const
Definition: EdbPattern.h:195
void SetPerrUp(Float_t perrUp)
Definition: EdbPattern.cxx:1313
Int_t eNpl
Definition: EdbPattern.h:124
void Print()
Definition: EdbPattern.cxx:1245
EdbTrackP(EdbTrackP &track)
Definition: EdbPattern.h:139
EdbSegP * TrackExtremity(bool zpos, bool usesegpar=false) const
Definition: EdbPattern.h:206
EdbSegP * TrackZmin(bool usesegpar=false) const
Definition: EdbPattern.h:203
Float_t Zend() const
Definition: EdbPattern.h:216
int EstimatePositionAt(Float_t z, EdbSegP &ss)
Definition: EdbPattern.cxx:1093
Int_t N() const
Definition: EdbPattern.h:182
void Clear()
Definition: EdbPattern.h:271
void ClearF()
Definition: EdbPattern.h:272
Int_t N0() const
Definition: EdbPattern.h:168
EdbVTA * eVTAE
vertex track start is attached to
Definition: EdbPattern.h:132
int CheckAliasSegments()
Definition: EdbPattern.cxx:549
int SetSegmentsP(float p)
Definition: EdbPattern.h:251
void SetOwner()
Definition: EdbPattern.h:144
void Copy(const EdbTrackP &tr)
Definition: EdbPattern.cxx:516
int MakeSelector(EdbSegP &ss, bool followZ=true)
Definition: EdbPattern.cxx:1164
Float_t eM
Definition: EdbPattern.h:126
const EdbSegP * TrackEnd() const
Definition: EdbPattern.cxx:1339
void PrintNice()
Definition: EdbPattern.cxx:1262
int CheckMaxGap()
Definition: EdbPattern.cxx:573
Int_t eN0
Definition: EdbPattern.h:125
Int_t GetSegmentsFlag(int &nseg) const
Definition: EdbPattern.cxx:634
Float_t eDE
Definition: EdbPattern.h:127
EdbSegP * GetSegmentFFirst() const
Definition: EdbPattern.h:197
Int_t GetSegmentsAid(int &nseg) const
Definition: EdbPattern.cxx:667
TSortedList * eSF
Definition: EdbPattern.h:123
void SetNpl()
Definition: EdbPattern.h:174
void Set0()
Definition: EdbPattern.cxx:475
EdbSegP * GetSegmentF(int i) const
Definition: EdbPattern.h:201
void SetN0()
Definition: EdbPattern.h:167
Float_t Zstart() const
Definition: EdbPattern.h:215
float MakePredictionTo(Float_t z, EdbSegP &ss)
Definition: EdbPattern.cxx:1143
void SetPerr(Float_t perrDown, Float_t perrUp)
Definition: EdbPattern.cxx:1323
int SetSegmentsTrack()
Definition: EdbPattern.h:253
Float_t M() const
Definition: EdbPattern.h:160
Float_t ePerrDown
Definition: EdbPattern.h:130
void ClearVTA()
Definition: EdbPattern.cxx:502
int FitTrackKFS(bool zmax=false, float X0=5810., int design=0)
Definition: EdbPattern.cxx:765
Int_t GetSegmentsMCTrack(int &nseg) const
Definition: EdbPattern.cxx:588
void Transform(const EdbAffine2D &tr)
Definition: EdbPattern.cxx:540
virtual ~EdbTrackP()
Definition: EdbPattern.cxx:468
EdbSegP * GetSegmentWithClosestZ(float z, float dz)
Definition: EdbPattern.cxx:722
Float_t ePerrUp
Definition: EdbPattern.h:129
const EdbSegP * TrackStart() const
Definition: EdbPattern.cxx:1330
void SetNpl(int npl)
Definition: EdbPattern.h:173
Int_t Npl() const
Definition: EdbPattern.h:176
Float_t PerrDown() const
Definition: EdbPattern.h:268
int SetSegmentsTrack(int id)
Definition: EdbPattern.h:252
EdbVTA * VTAS() const
Definition: EdbPattern.h:148
Float_t Zmin() const
Definition: EdbPattern.cxx:1298
void FitTrack()
Definition: EdbPattern.cxx:739
void SetDE(float de)
Definition: EdbPattern.h:170
EdbSegP * GetSegment(int i) const
Definition: EdbPattern.h:200
Float_t DE() const
Definition: EdbPattern.h:171
void SetPDG(int pdg)
Definition: EdbPattern.h:154
void SetCounters()
Definition: EdbPattern.h:164
void SetM(float m)
Definition: EdbPattern.h:159
Double_t GetBTEfficiency()
Definition: EdbPattern.cxx:1227
EdbSegP * GetSegmentFLast() const
Definition: EdbPattern.h:198
Float_t Zmax() const
Definition: EdbPattern.cxx:1306
EdbVTA * VTAE() const
Definition: EdbPattern.h:149
void SetPerrDown(Float_t perrDown)
Definition: EdbPattern.cxx:1318
Float_t Wmean() const
Definition: EdbPattern.cxx:624
float CHI2()
Definition: EdbPattern.cxx:1192
EdbVTA * eVTAS
Definition: EdbPattern.h:131
EdbSegP * TrackZmax(bool usesegpar=false) const
Definition: EdbPattern.h:204
void AddTrack(const EdbTrackP &tr)
Definition: EdbPattern.cxx:711
Definition: EdbVertex.h:25
Definition: EdbVertex.h:68
Definition: TIndexCell.h:19
Definition: bitview.h:14
float xmin
Definition: emthickness.cpp:61
float X0
Definition: emthickness.cpp:69
float ymin
Definition: emthickness.cpp:63
float xmax
Definition: emthickness.cpp:61
float ymax
Definition: emthickness.cpp:63
ss
Definition: energy.C:62
int pid[1000]
Definition: m2track.cpp:13
const char * opt
Definition: mc2raw.cxx:42
Int_t plate
Definition: merge_Energy_SytematicSources_Electron.C:1
UInt_t id
Definition: tlg2pattern.C:118
p
Definition: testBGReduction_AllMethods.C:8
void w(int rid=2, int nviews=2)
Definition: test.C:27
EdbSegP * s1
Definition: tlg2pattern.C:30
EdbSegP * s2
Definition: tlg2pattern.C:31
EdbSegP * s
Definition: tlg2pattern.C:32