FEDRA emulsion software from the OPERA Collaboration
EGraphRecProc Class Reference

#include <EGraphRecProc.h>

Collaboration diagram for EGraphRecProc:

Public Member Functions

 EGraphRecProc ()
 
void SetBrickToProc (ProcBrick_t &brickToProc)
 
void SetProcId (ProcId_t &procId)
 
void SetScanProc (EdbScanProc *scanProc)
 
void SetVertexRecOpt (VertexRecOpt_t &recOpt)
 
EdbPVRecVertexRec ()
 
virtual ~EGraphRecProc ()
 

Private Member Functions

void PropagateTracks ()
 
void SetCondBT ()
 
void SetEVR ()
 

Private Attributes

ProcBrick_t fBrickToProc
 
Float_t fMass
 particle mass More...
 
Float_t fMomentum
 GeV. More...
 
Int_t fNgapmax
 maximal gap for propagation More...
 
Int_t fNsegmin
 minimal number of segments to propagate this track More...
 
Float_t fProbMinP
 minimal probability to accept segment on propagation More...
 
ProcId_t fProcId
 
EdbPVRecfPVRec
 
EdbScanCondfScanCond
 
EdbScanProcfScanProc
 
EdbScanSetfScanSetVTX
 
EdbVertexRecfVertexRec
 
VertexRecOpt_t fVertexRecOpt
 

Constructor & Destructor Documentation

◆ EGraphRecProc()

EGraphRecProc::EGraphRecProc ( )
154{
155 fNsegmin = 1; // minimal number of segments to propagate this track
156 fNgapmax = 2; // maximal gap for propagation
157 fMomentum = 0.5; // GeV
158 fMass = 0.139; // particle mass
159 fProbMinP = 0.001; // minimal probability to accept segment on propagation
160
163 fPVRec = NULL;
164 fScanCond = new EdbScanCond();
165}
Int_t fNsegmin
minimal number of segments to propagate this track
Definition: EGraphRecProc.h:71
EdbScanCond * fScanCond
Definition: EGraphRecProc.h:81
EdbVertexRec * fVertexRec
Definition: EGraphRecProc.h:78
Float_t fMass
particle mass
Definition: EGraphRecProc.h:74
EdbPVRec * fPVRec
Definition: EGraphRecProc.h:77
Float_t fMomentum
GeV.
Definition: EGraphRecProc.h:73
Int_t fNgapmax
maximal gap for propagation
Definition: EGraphRecProc.h:72
EdbScanSet * fScanSetVTX
Definition: EGraphRecProc.h:80
Float_t fProbMinP
minimal probability to accept segment on propagation
Definition: EGraphRecProc.h:75
Definition: EdbScanCond.h:10
#define NULL
Definition: nidaqmx.h:84

◆ ~EGraphRecProc()

EGraphRecProc::~EGraphRecProc ( )
virtual
170{
171 SafeDelete(fScanCond);
172 SafeDelete(fScanSetVTX);
173 SafeDelete(fPVRec);
174}

Member Function Documentation

◆ PropagateTracks()

void EGraphRecProc::PropagateTracks ( )
private

example of additional propagation and other tracking operations if necessary

243{
246
247 Int_t ntracks = fPVRec->eTracks->GetEntries();
248
249 // set tracks IDs
250
251 for (Int_t i = 0; i < ntracks; i++) {
252 EdbTrackP *track = (EdbTrackP*)(fPVRec->eTracks->At(i));
253 track->SetID(i);
254 track->SetSegmentsTrack();
255 track->SetErrorP(0.2*0.2*fMomentum*fMomentum);
256
257 if (track->Flag() < 0) continue;
258 fPVRec->PropagateTrack(*track, true, 0.001, 3, 0);
259 }
260}
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
Definition: bitview.h:14

◆ SetBrickToProc()

void EGraphRecProc::SetBrickToProc ( ProcBrick_t brickToProc)
inline
61{fBrickToProc = brickToProc;}
ProcBrick_t fBrickToProc
Definition: EGraphRecProc.h:83

◆ SetCondBT()

void EGraphRecProc::SetCondBT ( )
private
282{
284
285 // sigma0 "x, y, tx, ty" at zero angle
286
287 fScanCond->SetSigma0(5., 5., 0.002, 0.002);
288 fScanCond->SetDegrad(5.); // sigma(tx) = sigma0*(1+degrad*tx)
289 fScanCond->SetBins(3, 3, 3, 3); // bins in [sigma] for checks
290 fScanCond->SetPulsRamp0(5., 5.); // in range (Pmin:Pmax) Signal/All
291 // is nearly linear
292 fScanCond->SetPulsRamp04(5., 5.);
293 fScanCond->SetChi2Max(6.5);
296 fScanCond->SetRadX0(5810.);
297 fScanCond->SetName("OPERA_basetrack");
298}
void SetDefault()
Definition: EdbScanCond.cxx:16
void SetPulsRamp0(float p1, float p2)
Definition: EdbScanCond.h:74
void SetChi2Max(float chi2)
Definition: EdbScanCond.h:83
void SetDegrad(float d)
Definition: EdbScanCond.h:71
void SetChi2Mode(int mode)
Definition: EdbScanCond.h:88
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
void SetRadX0(float x0)
Definition: EdbScanCond.h:57
void SetChi2PMax(float chi2)
Definition: EdbScanCond.h:84

◆ SetEVR()

void EGraphRecProc::SetEVR ( )
private
265{
266 SafeDelete(fVertexRec);
267 fVertexRec = new EdbVertexRec();
268
278}
VertexRecOpt_t fVertexRecOpt
Definition: EGraphRecProc.h:84
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
TObjArray * eVTX
array of vertex
Definition: EdbVertex.h:205
TObjArray * eEdbTracks
Definition: EdbVertex.h:204
void SetPVRec(EdbPVRec *pvr)
Definition: EdbVertex.h:285
Bool_t UseMom
use or not track momentum for vertex calculations
Definition: EGraphRecProc.h:38
Float_t ProbMinV
Definition: EGraphRecProc.h:42
Int_t QualityMode
Definition: EGraphRecProc.h:35
Float_t DZmax
maximum z-gap in the track-vertex group
Definition: EGraphRecProc.h:41
Float_t ImpMax
Definition: EGraphRecProc.h:44
Bool_t UseSegPar
Definition: EGraphRecProc.h:39

◆ SetProcId()

void EGraphRecProc::SetProcId ( ProcId_t procId)
inline
62{fProcId = procId;}
ProcId_t fProcId
Definition: EGraphRecProc.h:82

◆ SetScanProc()

void EGraphRecProc::SetScanProc ( EdbScanProc scanProc)
inline
60{fScanProc = scanProc;}
EdbScanProc * fScanProc
Definition: EGraphRecProc.h:79

◆ SetVertexRecOpt()

void EGraphRecProc::SetVertexRecOpt ( VertexRecOpt_t recOpt)
inline
63{fVertexRecOpt = recOpt;}

◆ VertexRec()

EdbPVRec * EGraphRecProc::VertexRec ( )

Vertex reconstruction

179{
181
182 SafeDelete(fScanSetVTX);
183 SafeDelete(fPVRec);
184
185 fScanSetVTX = new EdbScanSet();
186 fPVRec = new EdbPVRec();
187
188 SetCondBT(); // init track reconstruction conditions
190
191 // brick initialization
192
193 Int_t pID_VS[4] = {fBrickToProc.brickId, 0, fBrickToProc.ver,
195
196 Int_t firstPlate = fBrickToProc.firstPlate;
197 Int_t lastPlate = fBrickToProc.lastPlate;
198 Int_t step=(lastPlate>=firstPlate)?fBrickToProc.step : -1*fBrickToProc.step;
199
201
202 // make a brick assuming that all plates are linked and aligned
203
204 for (Int_t plate = firstPlate; plate != lastPlate + step; plate += step) {
205 pID_VS[1] = plate;
206 fScanSetVTX->AddID(new EdbID(pID_VS), step);
207 }
208
210 fScanSetVTX->SetAsReferencePlate(firstPlate);
211
212 // get the tracks passing through our cuts
213
214 TCut cut = "eN1==1&&eN2==1&&eCHI2P<3.5&&s.eW>16";
215 TCut QC = "s.eW>15+3*s.eChi2";
216 cut += QC;
217
219
220 // tracking
221
224 fNgapmax, 0);
225
227 fPVRec->FillCell(30,30,0.009,0.009);
228 SetEVR();
229
230 cout << fVertexRec->eEdbTracks->GetEntries() << " tracks for vertexing"
231 << endl;
232 cout << fVertexRec->FindVertex() << " 2-track vertexes was found" << endl;
234
236
237 return fPVRec;
238}
void SetEVR()
Definition: EGraphRecProc.cxx:264
void SetCondBT()
Definition: EGraphRecProc.cxx:281
void PropagateTracks()
Definition: EGraphRecProc.cxx:242
static int LinkTracksWithFlag(EdbPVRec *ali, float p, float probmin, int nsegmin, int maxgap, int flag, float mass=0.1396)
Definition: EdbDataSet.cxx:2256
Definition: EdbID.h:7
void SetID(int id)
Definition: EdbLayer.h:94
Definition: EdbPVRec.h:148
void SetCouplesPeriodic(int istart, int iperiod)
Definition: EdbPVRec.cxx:982
void FillCell(float stepx, float stepy, float steptx, float stepty)
Definition: EdbPVRec.cxx:1092
void SetScanCond(EdbScanCond *scan)
Definition: EdbPVRec.h:171
int ReadScanSetCP(EdbScanSet &ss, EdbPVRec &ali, TCut c="1", bool do_erase=true, int minplate=-1000, int maxplate=-1000)
Definition: EdbScanProc.cxx:342
int AssembleScanSet(EdbScanSet &ss)
Definition: EdbScanProc.cxx:135
Definition: EdbScanSet.h:11
Bool_t SetAsReferencePlate(Int_t pid)
Definition: EdbScanSet.cxx:191
const EdbBrickP & Brick() const
Definition: EdbScanSet.h:49
Bool_t AddID(EdbID *id, Int_t step)
Definition: EdbScanSet.cxx:476
Int_t ProbVertexN()
Definition: EdbVertex.cxx:1426
Int_t FindVertex()
Definition: EdbVertex.cxx:1065
TCut cut
Definition: check_shower.C:6
Int_t plate
Definition: merge_Energy_SytematicSources_Electron.C:1
Int_t brickId
Definition: EGraphRecProc.h:16
Int_t step
Definition: EGraphRecProc.h:20
Int_t firstPlate
Definition: EGraphRecProc.h:17
Int_t ver
Definition: EGraphRecProc.h:19
Int_t lastPlate
Definition: EGraphRecProc.h:18
Int_t volumeScan
Definition: EGraphRecProc.h:27

Member Data Documentation

◆ fBrickToProc

ProcBrick_t EGraphRecProc::fBrickToProc
private

◆ fMass

Float_t EGraphRecProc::fMass
private

particle mass

◆ fMomentum

Float_t EGraphRecProc::fMomentum
private

GeV.

◆ fNgapmax

Int_t EGraphRecProc::fNgapmax
private

maximal gap for propagation

◆ fNsegmin

Int_t EGraphRecProc::fNsegmin
private

minimal number of segments to propagate this track

◆ fProbMinP

Float_t EGraphRecProc::fProbMinP
private

minimal probability to accept segment on propagation

◆ fProcId

ProcId_t EGraphRecProc::fProcId
private

◆ fPVRec

EdbPVRec* EGraphRecProc::fPVRec
private

◆ fScanCond

EdbScanCond* EGraphRecProc::fScanCond
private

◆ fScanProc

EdbScanProc* EGraphRecProc::fScanProc
private

◆ fScanSetVTX

EdbScanSet* EGraphRecProc::fScanSetVTX
private

◆ fVertexRec

EdbVertexRec* EGraphRecProc::fVertexRec
private

◆ fVertexRecOpt

VertexRecOpt_t EGraphRecProc::fVertexRecOpt
private

The documentation for this class was generated from the following files: