FEDRA emulsion software from the OPERA Collaboration
EdbPVGen.h
Go to the documentation of this file.
1 #ifndef ROOT_EdbPVGen
2 #define ROOT_EdbPVGen
3 
5 // //
6 // EdbPVGen - Patterns Volume Generator //
7 // //
8 // collection of agorithms //
9 // //
11 #include "TROOT.h"
12 #include "TMath.h"
13 #include "TGenPhaseSpace.h"
14 #include "EdbPVRec.h"
15 #include "EdbVertex.h"
16 
17 //______________________________________________________________________________
18 class EdbPVGen : public TObject {
19 
20  private:
21 
23 
25 
26  public:
27  TObjArray *eTracks;
28  TObjArray *eVTX; //
30  public:
32  ~EdbPVGen();
33 
36  EdbPatternsVolume *GetVolume() const { return ePVolume;}
37 
38  void SmearSegments();
39  void SmearPatterns(float shift, float rot);
40 
41  void GenerateBeam( int n, float x[4], float sx[4], float lim[4], float z0, int flag=0 );
42  void GenerateBackground( int n, float x[4], float sx[4], int flag=0 );
43 
44  void GeneratePulsPoisson( float mean, float amp=1., float wmin=0, float wmax=0., int flag=0 );
45  void GeneratePulsGaus( float amp, float mean, float sigma, float wmin=0, float wmax=0., int flag=0 );
46 
47  void FillRecVolumeBT( EdbPatternsVolume &vrec );
48 
50  if(!eTracks) { eTracks = new TObjArray(); eEVR->eEdbTracks = eTracks; }
51  eTracks->Add(track);
52  }
53 
54  void AddVertex(EdbVertex *vtx) {
55  if(!eVTX) { eVTX = new TObjArray(); eEVR->eVTX = eVTX; }
56  eVTX->Add((TObject*)vtx);
57  }
58 
59  void SmearSegment( EdbSegP &s, EdbScanCond &cond );
60  float PropagateSegment( EdbSegP &s, float dz,
61  float X0,
62  float m,
63  int eloss_flag );
64  int TrackMC2( EdbTrackP &tr,
65  EdbLayer &lim,
66  int eloss_flag, float PGap);
67 
68  void TrackMC( float zlim[2], float lim[4],
69  EdbTrackP &tr, int eloss_flag = 0, float PGap = 0. );
70 
71  void GenerateUncorrelatedSegments(int nb, float lim[4],
72  float TetaMax, int flag );
73 
74  void GenerateBackgroundTracks(int nb, float vlim[4], float lim[4],
75  float plim[2], float TetaMax,
76  float ProbGap, int eloss_flag );
77 
78  void GeneratePhaseSpaceEvents( int nv, TGenPhaseSpace *pDecay, float vzlim[2],
79  float vlim[4], float lim[4], float ProbGap,
80  int eloss_flag, int *charges );
82  TGenPhaseSpace *pDecay,
83  TGenPhaseSpace *pSecond,
84  float vzlim[2], float vlim[4],
85  float lim[4], float ProbGap,
86  int eloss_flag, int *charges );
87 
88  int MakeTracksMC(int nsegmin, TObjArray *tracks);
89 
90  ClassDef(EdbPVGen,1) // PatternsVolume Generator
91 };
92 
93 #endif /* ROOT_EdbPVGen */
brick z0
Definition: RecDispMC.C:106
brick dz
Definition: RecDispMC.C:107
TGenPhaseSpace * pDecay
Definition: RecDispMC.C:187
int eloss_flag
Definition: RecDispMC.C:89
brick lim[0]
Definition: RecDispMC.C:108
float ProbGap
Definition: RecDispMC.C:56
int charges[101]
Definition: RecDispMC.C:148
EdbScanCond * scan
Definition: RecDispNU.C:117
TTree * tr
Definition: Shower_E_FromShowerRoot.C:5
Definition: EdbLayer.h:40
Definition: EdbPVGen.h:18
void GenerateBeam(int n, float x[4], float sx[4], float lim[4], float z0, int flag=0)
Definition: EdbPVGen.cxx:41
void GeneratePhaseSpaceEvents(int nv, TGenPhaseSpace *pDecay, float vzlim[2], float vlim[4], float lim[4], float ProbGap, int eloss_flag, int *charges)
Definition: EdbPVGen.cxx:699
~EdbPVGen()
Definition: EdbPVGen.cxx:33
EdbPatternsVolume * GetVolume() const
Definition: EdbPVGen.h:36
void GenerateBackground(int n, float x[4], float sx[4], int flag=0)
Definition: EdbPVGen.cxx:81
void SmearSegments()
Definition: EdbPVGen.cxx:190
void TrackMC(float zlim[2], float lim[4], EdbTrackP &tr, int eloss_flag=0, float PGap=0.)
Definition: EdbPVGen.cxx:389
TObjArray * eTracks
Definition: EdbPVGen.h:27
void GeneratePulsPoisson(float mean, float amp=1., float wmin=0, float wmax=0., int flag=0)
Definition: EdbPVGen.cxx:136
int MakeTracksMC(int nsegmin, TObjArray *tracks)
Definition: EdbPVGen.cxx:1046
void GenerateUncorrelatedSegments(int nb, float lim[4], float TetaMax, int flag)
Definition: EdbPVGen.cxx:587
EdbVertexRec * eEVR
Definition: EdbPVGen.h:29
void GeneratePulsGaus(float amp, float mean, float sigma, float wmin=0, float wmax=0., int flag=0)
Definition: EdbPVGen.cxx:163
void GeneratePhaseSpaceEventsWithDecay(int nv, TGenPhaseSpace *pDecay, TGenPhaseSpace *pSecond, float vzlim[2], float vlim[4], float lim[4], float ProbGap, int eloss_flag, int *charges)
Definition: EdbPVGen.cxx:839
void GenerateBackgroundTracks(int nb, float vlim[4], float lim[4], float plim[2], float TetaMax, float ProbGap, int eloss_flag)
Definition: EdbPVGen.cxx:640
EdbPatternsVolume * ePVolume
Definition: EdbPVGen.h:22
void FillRecVolumeBT(EdbPatternsVolume &vrec)
Definition: EdbPVGen.cxx:112
void SmearSegment(EdbSegP &s, EdbScanCond &cond)
Definition: EdbPVGen.cxx:337
void AddVertex(EdbVertex *vtx)
Definition: EdbPVGen.h:54
void SetVolume(EdbPatternsVolume *pv)
Definition: EdbPVGen.h:34
TObjArray * eVTX
Definition: EdbPVGen.h:28
int TrackMC2(EdbTrackP &tr, EdbLayer &lim, int eloss_flag, float PGap)
Definition: EdbPVGen.cxx:230
void SetScanCond(EdbScanCond *scan)
Definition: EdbPVGen.h:35
float PropagateSegment(EdbSegP &s, float dz, float X0, float m, int eloss_flag)
Definition: EdbPVGen.cxx:277
EdbScanCond * eScanCond
Definition: EdbPVGen.h:24
void SmearPatterns(float shift, float rot)
Definition: EdbPVGen.cxx:213
void AddTrack(EdbTrackP *track)
Definition: EdbPVGen.h:49
Definition: EdbPattern.h:348
Definition: EdbScanCond.h:10
Definition: EdbSegP.h:18
Definition: EdbPattern.h:118
Definition: EdbVertex.h:194
TObjArray * eVTX
Definition: EdbVertex.h:205
TObjArray * eEdbTracks
Definition: EdbVertex.h:204
Definition: EdbVertex.h:68
Definition: bitview.h:14
float X0
Definition: emthickness.cpp:69
TTree * tracks
Definition: check_tr.C:19
int nsegmin
Definition: check_vertex.C:23
EdbSegP * s
Definition: tlg2pattern.C:32