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
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:1129
int Align(int alignFlag)
Definition: EdbPVRec.cxx:1210
EdbScanCond const * GetScanCond()
Definition: EdbPVRec.h:172
void SetChi2Max(float chi)
Definition: EdbPVRec.h:186
void SetCouplesAll()
Definition: EdbPVRec.cxx:975
int Link()
Definition: EdbPVRec.cxx:1187
void SetScanCond(EdbScanCond *scan)
Definition: EdbPVRec.h:171
void SetOffsetsMax(float ox, float oy)
Definition: EdbPVRec.cxx:925
Definition: EdbPattern.h:334
void PrintAff() const
Definition: EdbPattern.cxx:1651
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);
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:1603
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

◆ 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:273
void AddPattern(EdbPattern *pat)
Definition: EdbPattern.cxx:1707

◆ 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