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

Namespaces

namespace  TRACKING_PAR
 
namespace  VERTEX_PAR
 

Functions

void check_vertex (char *dset=0)
 
void do_propagation ()
 
void do_tracking ()
 
void do_vertex ()
 
void init (const char *def, int iopt, const char *rcut="1")
 
void sd ()
 
void set_segments_dz (float dz=300.)
 
void td ()
 
void trseg (int event=40, const char *def)
 
void trvol (const char *def, const char *rcut="nseg>1")
 
void vd (int trmin=2, float amin=.0)
 

Variables

EdbDataProcdproc =0
 
EdbDisplayds =0
 
EdbPVRecgAli =0
 
EdbVertexRecgEVR =0
 

Function Documentation

◆ check_vertex()

void check_vertex ( char *  dset = 0)
38{
39 //trseg(16,dset); // reconstruct event starting from basetracks
40 trvol(dset); // reconstruct vertexes starting from linked_tracks.root
41}
EdbDataProc * dset
Definition: RecDispEX.C:9
void trvol(const char *def, const char *rcut="nseg>1")
Definition: check_vertex.C:63

◆ do_propagation()

void do_propagation ( )
112{
113 // example of additional propagation and other tracking operations if necessary
114
115 EdbTrackP *tr=0;
116 int ntr = gAli->eTracks->GetEntries();
117 printf("ntr = %d\n",ntr);
118
119 for(int i=0; i<ntr; i++) {
120 tr = (EdbTrackP*)(gAli->eTracks->At(i));
121 tr->SetID(i);
122 tr->SetSegmentsTrack();
123 }
124
125 int nadd = 0;
126 int nseg=0;
127
128 for(int i=0; i<ntr; i++) {
129 tr = (EdbTrackP*)(gAli->eTracks->At(i));
130 //tr = tr->SetErrorP(0.2*0.2*4.*4.);
131 nseg = tr->N();
132 tr->SetP(tr->P_MS());
133 if(tr->Flag()<0) continue;
134 nadd += gAli->PropagateTrack( *tr, true, 0.05, 3, 0 );
135 if(tr->Flag()<0) printf("%d flag=%d\n",i,tr->Flag());
136 if(tr->N() != nseg) printf("%d nseg=%d (%d) \t p = %f\n",i,tr->N(),nseg,tr->P());
137 }
138 printf("nadd = %d\n",nadd);
139}
TTree * tr
Definition: Shower_E_FromShowerRoot.C:5
TObjArray * eTracks
Definition: EdbPVRec.h:161
int PropagateTrack(EdbTrackP &tr, bool followZ, float probMin=0.05, int ngapMax=3, int design=0)
Definition: EdbPVRec.cxx:2569
Definition: EdbPattern.h:113
EdbPVRec * gAli
Definition: check_vertex.C:14

◆ do_tracking()

void do_tracking ( )
90{
91 using namespace TRACKING_PAR;
93
95
97}
static int LinkTracksWithFlag(EdbPVRec *ali, float p, float probmin, int nsegmin, int maxgap, int flag, float mass=0.1396)
Definition: EdbDataSet.cxx:2256
void SetCouplesPeriodic(int istart, int iperiod)
Definition: EdbPVRec.cxx:982
void FitTracks(float p=10., float mass=0.139, TObjArray *gener=0, int design=0)
Definition: EdbPVRec.cxx:1893
EdbDataProc * dproc
Definition: check_vertex.C:13
Definition: check_vertex.C:19
int nsegmin
Definition: check_vertex.C:23
float ProbMinP
Definition: check_vertex.C:22
float mass
Definition: check_vertex.C:21
float momentum
Definition: check_vertex.C:20
int ngapmax
Definition: check_vertex.C:24

◆ do_vertex()

void do_vertex ( )
143{
144 using namespace VERTEX_PAR;
145
146 //gAli->FitTracks(4.,0.139 );
147 gEVR = new EdbVertexRec();
149 gEVR->eVTX = gAli->eVTX;
151
158
159 printf("%d tracks vor vertexing\n", gEVR->eEdbTracks->GetEntries() );
160 int nvtx = gEVR->FindVertex();
161 printf("%d 2-track vertexes was found\n",nvtx);
162
163 if(nvtx == 0) return;
164 int nadd = gEVR->ProbVertexN();
165}
TObjArray * eVTX
array of vertex
Definition: EdbPVRec.h:162
Bool_t eUseMom
use or not track momentum for vertex calculations
Definition: EdbVertex.h:181
Int_t eQualityMode
vertex quality estimation method (0:=Prob/(sigVX^2+sigVY^2); 1:= inverse average track-vertex distanc...
Definition: EdbVertex.h:183
Bool_t eUseSegPar
use only the nearest measured segments for vertex fit (as Neuchatel)
Definition: EdbVertex.h:182
Float_t eImpMax
maximal acceptable impact parameter (preliminary check)
Definition: EdbVertex.h:179
Float_t eDZmax
maximum z-gap in the track-vertex group
Definition: EdbVertex.h:177
Float_t eProbMin
minimum acceptable probability for chi2-distance between tracks
Definition: EdbVertex.h:178
Definition: EdbVertex.h:194
Int_t ProbVertexN()
Definition: EdbVertex.cxx:1426
TObjArray * eVTX
array of vertex
Definition: EdbVertex.h:205
Int_t FindVertex()
Definition: EdbVertex.cxx:1065
TObjArray * eEdbTracks
Definition: EdbVertex.h:204
void SetPVRec(EdbPVRec *pvr)
Definition: EdbVertex.h:285
EdbVertexRec * gEVR
Definition: check_vertex.C:15
Definition: check_vertex.C:27
float ProbMinV
Definition: check_vertex.C:29
bool UseSegPar
Definition: check_vertex.C:32
float DZmax
Definition: check_vertex.C:28
int QualityMode
Definition: check_vertex.C:33
float ImpMax
Definition: check_vertex.C:30
bool UseMom
Definition: check_vertex.C:31

◆ init()

void init ( const char *  def,
int  iopt,
const char *  rcut = "1" 
)
79{
80 if(!def) dproc = new EdbDataProc();
81 else dproc = new EdbDataProc(def);
82
83 dproc->InitVolume(iopt, rcut);
84 gAli = dproc->PVR();
85 set_segments_dz(300.);
86}
emulsion data processing
Definition: EdbDataSet.h:181
int InitVolume(int datatype=0, const char *rcut="1")
Definition: EdbDataSet.cxx:2066
EdbPVRec * PVR() const
Definition: EdbDataSet.h:198
void set_segments_dz(float dz=300.)
Definition: check_vertex.C:100
const char * def
Definition: shower_tr.C:24

◆ sd()

void sd ( )
186{
187 // draw all tracks and segments (basetracks)
188
189 TObjArray *trarr = gAli->eTracks;
190 TObjArray *sarr = new TObjArray();
191
192 EdbSegP *s=0;
193 for(int i=0; i<gAli->Npatterns(); i++) {
194 EdbPattern *pat = gAli->GetPattern(i);
195 for(int j=0; j<pat->N(); j++) {
196 s = pat->GetSegment(j);
197 if(s->Track()<0) // exclude segments already attached to tracks
198 sarr->Add(s);
199 }
200 }
201
202 printf("%d tracks to display\n", trarr->GetEntries() );
203 printf("%d segments to display\n", sarr->GetEntries() );
204
205 gStyle->SetPalette(1);
206 const char *dsname="display-s";
208 if(!ds) ds=new EdbDisplay(dsname,-50000.,50000.,-50000.,50000.,-4000.,80000.);
209 ds->SetVerRec(gEVR);
210 ds->SetDrawTracks(4);
211 ds->SetArrSegP( sarr );
212 ds->SetArrTr( trarr );
213 ds->Draw();
214}
virtual void Draw(Option_t *option="")
Definition: EdbDisplayBase.cxx:787
FEDRA Event Display.
Definition: EdbDisplay.h:22
void SetArrSegP(TObjArray *arr)
Definition: EdbDisplay.cxx:390
void SetArrTr(TObjArray *arr)
Definition: EdbDisplay.cxx:431
void SetDrawTracks(int opt)
Definition: EdbDisplay.h:98
void SetVerRec(EdbVertexRec *evr)
Definition: EdbDisplay.h:92
static EdbDisplay * EdbDisplayExist(const char *title)
Definition: EdbDisplay.cxx:233
Definition: EdbPattern.h:273
Int_t Npatterns() const
Definition: EdbPattern.h:366
EdbPattern * GetPattern(int id) const
Definition: EdbPattern.cxx:1721
Definition: EdbSegP.h:21
Int_t N() const
Definition: EdbPattern.h:86
EdbSegP * GetSegment(int i) const
Definition: EdbPattern.h:66
s
Definition: check_shower.C:55
EdbDisplay * ds
Definition: check_vertex.C:16

◆ set_segments_dz()

void set_segments_dz ( float  dz = 300.)
101{
102 int np = gAli->Npatterns();
103 for(int i=0; i<np; i++) {
105 int ns = p->N();
106 for(int j=0; j<ns; j++) p->GetSegment(j)->SetDZ(dz);
107 }
108}
brick dz
Definition: RecDispMC.C:107
p
Definition: testBGReduction_AllMethods.C:8

◆ td()

void td ( )
169{
170 // draw all tracks
171
172 TObjArray *trarr=gAli->eTracks;
173 gStyle->SetPalette(1);
174 const char *dsname="display-t";
176 if(!ds) ds=new EdbDisplay(dsname,-50000.,50000.,-50000.,50000.,-4000.,80000.);
177 ds->SetVerRec(gEVR);
178 ds->SetDrawTracks(4);
179 ds->SetArrTr( trarr );
180 printf("%d tracks to display\n", trarr->GetEntries() );
181 ds->Draw();
182}

◆ trseg()

void trseg ( int  event = 40,
const char *  def 
)
45{
46 // this function read basetracks for a given simulated event and do the
47 // tracking and vertex reconstruction
48
49 FILE *f = fopen("default.par","w");
50 fprintf(f,"INCLUDE opera_emulsion.par\n");
51 fprintf(f,"RCUT 0 abs(s.eTX)<1.\&\&abs(s.eTY)<1.\&\&s.eMCEvt==%d\n",event);
52 fclose(f);
53
54 init(def, 0); //read all basetracks (option 0)
56 gAli->FillCell(30,30,0.009,0.009);
57 do_vertex();
58 sd(); // draw all segments
59 vd(); // draw reconstructed vertex
60}
FILE * f
Definition: RecDispMC.C:150
void FillCell(float stepx, float stepy, float steptx, float stepty)
Definition: EdbPVRec.cxx:1092
void do_tracking()
Definition: check_vertex.C:89
void sd()
Definition: check_vertex.C:185
void init(const char *def, int iopt, const char *rcut="1")
Definition: check_vertex.C:78
void do_vertex()
Definition: check_vertex.C:142
void vd(int trmin=2, float amin=.0)
Definition: check_vertex.C:217
fclose(pFile)
int event
Definition: shower_tr.C:25

◆ trvol()

void trvol ( const char *  def,
const char *  rcut = "nseg>1" 
)
64{
65 // this function read volume tracks and do the vertex reconstruction
66 // from linked_tracks.root
67
68 init(def, 100 ,rcut); // read tracks (option 100)
69 gAli->FillCell(30,30,0.009,0.009);
70 //do_propagation();
71 do_vertex();
72 vd(2,0.01); // draw reconstructed vertex
73 //td();
74 //dproc->MakeTracksTree(gAli,"linked_tracks_p.root");
75}

◆ vd()

void vd ( int  trmin = 2,
float  amin = .0 
)
218{
219 // draw vertexes with multiplicity>=trmin, and aperture >= amin
220
221 TObjArray *varr = new TObjArray();
222 TObjArray *tarr = new TObjArray();
223
224 EdbVertex *v=0;
225 EdbTrackP *t=0;
226
227 int nv = gEVR->Nvtx();
228 printf("nv=%d\n",nv);
229 if(nv<1) return;
230
231 for(int i=0; i<nv; i++) {
232 v = (EdbVertex *)(gEVR->eVTX->At(i));
233 if(v->Flag()<0) continue;
234 if( v->N()<trmin ) continue;
235 if( v->N()<3 && v->MaxAperture()<amin ) continue;
236
237 varr->Add(v);
238 for(int j=0; j<v->N(); j++) tarr->Add( v->GetTrack(j) );
239 }
240
241 gStyle->SetPalette(1);
242
243 const char *dsname="display-v";
245 if(!ds) ds=new EdbDisplay(dsname,-100000.,100000.,-100000.,100000.,-40000., 0.);
246 ds->SetVerRec(gEVR);
247 ds->SetArrTr( tarr );
248 printf("%d tracks to display\n", tarr->GetEntries() );
249 ds->SetArrV( varr );
250 printf("%d vertex to display\n", varr->GetEntries() );
251 ds->SetDrawTracks(4);
252 ds->SetDrawVertex(1);
253 ds->Draw();
254}
void SetDrawVertex(int opt)
Definition: EdbDisplay.h:109
void SetArrV(TObjArray *arrv)
Definition: EdbDisplay.cxx:501
Int_t Nvtx() const
Definition: EdbVertex.h:287
Definition: EdbVertex.h:69
Int_t N() const
Definition: EdbVertex.h:121
EdbTrackP * GetTrack(int i)
Definition: EdbVertex.h:141
Int_t Flag() const
Definition: EdbVertex.h:124
Float_t MaxAperture()
Definition: EdbVertex.cxx:252
TTree * t
Definition: check_shower.C:4

Variable Documentation

◆ dproc

EdbDataProc* dproc =0

◆ ds

EdbDisplay* ds =0

◆ gAli

EdbPVRec* gAli =0

◆ gEVR

EdbVertexRec* gEVR =0