FEDRA emulsion software from the OPERA Collaboration
gen.C File Reference

Functions

void gen ()
 
void genMC (EdbPatternsVolume *pv, int nsg, int nbg)
 
void genPVBeam (EdbPVGen *gener, int npart=100)
 
void genPVBeam_6picchi (EdbPVGen *gener, int npart=100)
 
void genPVbg (EdbPVGen *gener, int npart=100)
 
void makeVolumeOPERAn (EdbPatternsVolume *v, int npat, float z0=0)
 
void makeVolumeOPERAud (EdbPatternsVolume *v, float z0=0)
 
void Set_Prototype_OPERA_basetrack_mc (EdbScanCond *cond)
 

Variables

EdbPVRecali =0
 
EdbPVGengener = 0
 
EdbScanCondscanCond =0
 
EdbScanCondscanCond_mc =0
 
TIndexCelltracks =0
 

Function Documentation

◆ gen()

void gen ( )
8 {
9  gROOT->LoadMacro("ScanCond.C");
10  gROOT->LoadMacro("IO.C");
11 
12  TFile *f = new TFile("gen.root","RECREATE");
13 
14  TTree *tree = inittree("couples",
15  "gen.root",
16  "RECREATE");
17 
18  ali = new EdbPVRec();
19  scanCond = new EdbScanCond();
22 
23  genMC((EdbPatternsVolume*)ali, 1000,0);
24 
25  ali->PrintAff();
26 
27  ali->GetScanCond()->Print();
29 
30  ali->SetCouplesAll();
31  ali->SetChi2Max(15);
32  ali->SetOffsetsMax(120,120);
33  ali->Align();
34  ali->PrintAff();
35  ali->Link();
36 
37  filltree(tree,ali,0);
38 
39  ali->MakeTracksTree();
40 
41 }
void filltree(TTree *tree, EdbPVRec *al, int fillraw=0)
Definition: IO.C:455
FILE * f
Definition: RecDispMC.C:150
void Set_Prototype_OPERA_basetrack(EdbScanCond *cond)
Definition: ScanCond.C:41
void inittree()
Definition: aln.cpp:84
Definition: EdbPVRec.h:148
void SetSegmentsErrors()
Definition: EdbPVRec.cxx:1125
int Align(int alignFlag)
Definition: EdbPVRec.cxx:1206
EdbScanCond const * GetScanCond()
Definition: EdbPVRec.h:172
void SetChi2Max(float chi)
Definition: EdbPVRec.h:186
void SetCouplesAll()
Definition: EdbPVRec.cxx:974
int Link()
Definition: EdbPVRec.cxx:1183
void SetScanCond(EdbScanCond *scan)
Definition: EdbPVRec.h:171
void SetOffsetsMax(float ox, float oy)
Definition: EdbPVRec.cxx:924
Definition: EdbPattern.h:348
void PrintAff() const
Definition: EdbPattern.cxx:1811
Definition: EdbScanCond.h:10
void Print() const
Definition: EdbScanCond.cxx:50
void genMC(EdbPatternsVolume *pv, int nsg, int nbg)
Definition: gen.C:55
EdbPVRec * ali
Definition: gen.C:1
EdbScanCond * scanCond
Definition: gen.C:3

◆ genMC()

void genMC ( EdbPatternsVolume pv,
int  nsg,
int  nbg 
)

56 {
57  gener = new EdbPVGen();
58  gener->SetVolume(pv);
59  scanCond_mc = new EdbScanCond();
62 
63  //makeVolumeOPERAud(pv);
64  makeVolumeOPERAn(pv,5);
65 
66  genPVBeam(gener,nsg);
67  genPVbg(gener,nbg);
68  //genPVBeam_6picchi(gener,nsg);
69 
71 
72  gener->SmearPatterns(20.,.001);
73 
74  pv->SetPatternsID();
75 }
Definition: EdbPVGen.h:18
void SmearSegments()
Definition: EdbPVGen.cxx:190
void SetVolume(EdbPatternsVolume *pv)
Definition: EdbPVGen.h:34
void SetScanCond(EdbScanCond *scan)
Definition: EdbPVGen.h:35
void SmearPatterns(float shift, float rot)
Definition: EdbPVGen.cxx:213
void SetPatternsID()
Definition: EdbPattern.cxx:1763
void genPVbg(EdbPVGen *gener, int npart=100)
Definition: gen.C:117
void Set_Prototype_OPERA_basetrack_mc(EdbScanCond *cond)
Definition: gen.C:44
void genPVBeam(EdbPVGen *gener, int npart=100)
Definition: gen.C:103
EdbPVGen * gener
Definition: gen.C:2
void makeVolumeOPERAn(EdbPatternsVolume *v, int npat, float z0=0)
Definition: gen.C:91
EdbScanCond * scanCond_mc
Definition: gen.C:4

◆ genPVBeam()

void genPVBeam ( EdbPVGen gener,
int  npart = 100 
)

104 {
105  float xx[4] ={0,0,0,-0.05}; // starting point, starting angle
106  float sxx[4]={60000,60000,0.003,0.003}; // beam dispersions
107  float lim[4]={-60000,-60000,60000.,60000.}; // xmin,ymin,xmax,ymax at z0
108 
109  float z0 = -1000.;
110  int flag = 1; //beam particles
111  gener->GenerateBeam(npart,xx,sxx,lim,z0,flag);
112  //gener->GeneratePulsPoisson(10.,1.,5,16,1);
113  gener->GeneratePulsGaus(1,12.8,1.8,8,16,1); // amp,mean,sigma,wmin,wmax,flag
114 }
brick z0
Definition: RecDispMC.C:106
brick lim[0]
Definition: RecDispMC.C:108
void GenerateBeam(int n, float x[4], float sx[4], float lim[4], float z0, int flag=0)
Definition: EdbPVGen.cxx:41
void GeneratePulsGaus(float amp, float mean, float sigma, float wmin=0, float wmax=0., int flag=0)
Definition: EdbPVGen.cxx:163

◆ genPVBeam_6picchi()

void genPVBeam_6picchi ( EdbPVGen gener,
int  npart = 100 
)

128 {
129  float ang = 0;
130  float xx1[4] ={0,0,0,0}; // starting point, starting angle
131 
132  float ang = 6;
133  float xx2[4] ={0,0,TMath::DegToRad()*ang,0};
134 
135  float ang = 12;
136  float xx3[4] ={0,0,TMath::DegToRad()*ang,0};
137 
138  float ang = 18;
139  float xx4[4] ={0,0,TMath::DegToRad()*ang,0};
140 
141  float ang = 24;
142  float xx5[4] ={0,0,TMath::DegToRad()*ang,0};
143 
144  float ang = 30;
145  float xx6[4] ={0,0,TMath::DegToRad()*ang,0};
146 
147  float sxx[4]={10000,10000,0.003,0.003}; // beam dispersions
148  float z0 = -1000.;
149  int flag = 1; //beam particles
150 
151  gener->GenerateBeam(npart,xx1,sxx,z0,flag);
152  gener->GenerateBeam(npart,xx2,sxx,z0,flag);
153  gener->GenerateBeam(npart,xx3,sxx,z0,flag);
154  gener->GenerateBeam(npart,xx4,sxx,z0,flag);
155  gener->GenerateBeam(npart,xx5,sxx,z0,flag);
156  gener->GenerateBeam(npart,xx6,sxx,z0,flag);
157 
158  //gener->GeneratePulsPoisson(10.,1.,5,16,1);
159  gener->GeneratePulsGaus(1,10,1,5,16,0); // amp,mean,sigma,wmin,wmax,flag
160 }

◆ genPVbg()

void genPVbg ( EdbPVGen gener,
int  npart = 100 
)

118 {
119  float xmin[4] ={-60000,-60000,-0.4,-0.4}; // limits
120  float xmax[4]={60000,60000,0.4,0.4};
121  int flag = 2; //background particles
122  gener->GenerateBackground(npart,xmin,xmax,flag);
123  gener->GeneratePulsPoisson(5.,1.,8,16,2);
124 }
void GenerateBackground(int n, float x[4], float sx[4], int flag=0)
Definition: EdbPVGen.cxx:81
void GeneratePulsPoisson(float mean, float amp=1., float wmin=0, float wmax=0., int flag=0)
Definition: EdbPVGen.cxx:136
float xmin
Definition: emthickness.cpp:61
float xmax
Definition: emthickness.cpp:61

◆ makeVolumeOPERAn()

void makeVolumeOPERAn ( EdbPatternsVolume v,
int  npat,
float  z0 = 0 
)

92 {
93  float dz=1000;
94  EdbPattern *pat =0;
95 
96  for(int i=0; i<npat; i++) {
97  pat = new EdbPattern(0,0,z0+dz*i);
98  gener->GetVolume()->AddPattern(pat);
99  }
100 }
brick dz
Definition: RecDispMC.C:107
Int_t npat
Definition: Xi2HatStartScript.C:33
EdbPatternsVolume * GetVolume() const
Definition: EdbPVGen.h:36
Definition: EdbPattern.h:280
void AddPattern(EdbPattern *pat)
Definition: EdbPattern.cxx:1867

◆ makeVolumeOPERAud()

void makeVolumeOPERAud ( EdbPatternsVolume v,
float  z0 = 0 
)

79 {
80  float dz=240;
81  EdbPattern *pat =0;
82 
83  pat = new EdbPattern(0,0,z0);
84  gener->GetVolume()->AddPattern(pat);
85 
86  pat = new EdbPattern(0,0,z0+dz);
87  gener->GetVolume()->AddPattern(pat);
88 }

◆ Set_Prototype_OPERA_basetrack_mc()

void Set_Prototype_OPERA_basetrack_mc ( EdbScanCond cond)

45 {
46  cond->SetSigma0( 5., 5.,.004,.004 ); // sigma0 "x,y,tx,ty" at 0 angle
47  cond->SetDegrad( 5. ); // sigma(tx) = sigma0*(1+degrad*tx)
48  cond->SetBins(5,5,5,5); // bins in [sigma] for checks
49  cond->SetPulsRamp0( 15.,15. ); // in range (Pmin:Pmax) Signal/All is nearly linear
50  cond->SetPulsRamp04( 15.,15. ); //
51  cond->SetName("Prototype_OPERA_basetrack");
52 }
void SetPulsRamp0(float p1, float p2)
Definition: EdbScanCond.h:74
void SetDegrad(float d)
Definition: EdbScanCond.h:71
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

Variable Documentation

◆ ali

EdbPVRec* ali =0

◆ gener

EdbPVGen* gener = 0

◆ scanCond

EdbScanCond* scanCond =0

◆ scanCond_mc

EdbScanCond* scanCond_mc =0

◆ tracks

TIndexCell* tracks =0