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
 
Float_t fMomentum
 
Int_t fNgapmax
 
Int_t fNsegmin
 
Float_t fProbMinP
 
ProcId_t fProcId
 
EdbPVRecfPVRec
 
EdbScanCondfScanCond
 
EdbScanProcfScanProc
 
EdbScanSetfScanSetVTX
 
EdbVertexRecfVertexRec
 
VertexRecOpt_t fVertexRecOpt
 

Constructor & Destructor Documentation

◆ EGraphRecProc()

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

◆ ~EGraphRecProc()

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

Member Function Documentation

◆ PropagateTracks()

void EGraphRecProc::PropagateTracks ( )
private
242 {
243  // example of additional propagation and
244  // other tracking operations if necessary
245 
246  Int_t ntracks = fPVRec->eTracks->GetEntries();
247 
248  // set tracks IDs
249 
250  for (Int_t i = 0; i < ntracks; i++) {
251  EdbTrackP *track = (EdbTrackP*)(fPVRec->eTracks->At(i));
252  track->SetID(i);
253  track->SetSegmentsTrack();
254  track->SetErrorP(0.2*0.2*fMomentum*fMomentum);
255 
256  if (track->Flag() < 0) continue;
257  fPVRec->PropagateTrack(*track, true, 0.001, 3, 0);
258  }
259 }
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:2565
Definition: EdbPattern.h:118
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
281 {
283 
284  // sigma0 "x, y, tx, ty" at zero angle
285 
286  fScanCond->SetSigma0(5., 5., 0.002, 0.002);
287  fScanCond->SetDegrad(5.); // sigma(tx) = sigma0*(1+degrad*tx)
288  fScanCond->SetBins(3, 3, 3, 3); // bins in [sigma] for checks
289  fScanCond->SetPulsRamp0(5., 5.); // in range (Pmin:Pmax) Signal/All
290  // is nearly linear
291  fScanCond->SetPulsRamp04(5., 5.);
292  fScanCond->SetChi2Max(6.5);
293  fScanCond->SetChi2PMax(6.5);
295  fScanCond->SetRadX0(5810.);
296  fScanCond->SetName("OPERA_basetrack");
297 }
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
264 {
265  SafeDelete(fVertexRec);
266  fVertexRec = new EdbVertexRec();
267 
277 }
VertexRecOpt_t fVertexRecOpt
Definition: EGraphRecProc.h:84
TObjArray * eVTX
Definition: EdbPVRec.h:162
Bool_t eUseMom
Definition: EdbVertex.h:181
Int_t eQualityMode
Definition: EdbVertex.h:183
Bool_t eUseSegPar
Definition: EdbVertex.h:182
Float_t eImpMax
Definition: EdbVertex.h:179
Float_t eDZmax
Definition: EdbVertex.h:177
Float_t eProbMin
Definition: EdbVertex.h:178
Definition: EdbVertex.h:194
TObjArray * eVTX
Definition: EdbVertex.h:205
TObjArray * eEdbTracks
Definition: EdbVertex.h:204
void SetPVRec(EdbPVRec *pvr)
Definition: EdbVertex.h:285
Bool_t UseMom
Definition: EGraphRecProc.h:38
Float_t ProbMinV
Definition: EGraphRecProc.h:42
Int_t QualityMode
Definition: EGraphRecProc.h:35
Float_t DZmax
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 ( )
178 {
179  // Vertex reconstruction
180 
181  SafeDelete(fScanSetVTX);
182  SafeDelete(fPVRec);
183 
184  fScanSetVTX = new EdbScanSet();
185  fPVRec = new EdbPVRec();
186 
187  SetCondBT(); // init track reconstruction conditions
189 
190  // brick initialization
191 
192  Int_t pID_VS[4] = {fBrickToProc.brickId, 0, fBrickToProc.ver,
194 
195  Int_t firstPlate = fBrickToProc.firstPlate;
196  Int_t lastPlate = fBrickToProc.lastPlate;
197  Int_t step=(lastPlate>=firstPlate)?fBrickToProc.step : -1*fBrickToProc.step;
198 
200 
201  // make a brick assuming that all plates are linked and aligned
202 
203  for (Int_t plate = firstPlate; plate != lastPlate + step; plate += step) {
204  pID_VS[1] = plate;
205  fScanSetVTX->AddID(new EdbID(pID_VS), step);
206  }
207 
209  fScanSetVTX->SetAsReferencePlate(firstPlate);
210 
211  // get the tracks passing through our cuts
212 
213  TCut cut = "eN1==1&&eN2==1&&eCHI2P<3.5&&s.eW>16";
214  TCut QC = "s.eW>15+3*s.eChi2";
215  cut += QC;
216 
218 
219  // tracking
220 
223  fNgapmax, 0);
224 
225  PropagateTracks();
226  fPVRec->FillCell(30,30,0.009,0.009);
227  SetEVR();
228 
229  cout << fVertexRec->eEdbTracks->GetEntries() << " tracks for vertexing"
230  << endl;
231  cout << fVertexRec->FindVertex() << " 2-track vertexes was found" << endl;
233 
235 
236  return fPVRec;
237 }
TCut cut
Definition: check_shower.C:6
void SetEVR()
Definition: EGraphRecProc.cxx:263
void SetCondBT()
Definition: EGraphRecProc.cxx:280
void PropagateTracks()
Definition: EGraphRecProc.cxx:241
static int LinkTracksWithFlag(EdbPVRec *ali, float p, float probmin, int nsegmin, int maxgap, int flag, float mass=0.1396)
Definition: EdbDataSet.cxx:2261
Definition: EdbID.h:7
void SetID(int id)
Definition: EdbLayer.h:95
Definition: EdbPVRec.h:148
void SetCouplesPeriodic(int istart, int iperiod)
Definition: EdbPVRec.cxx:981
void FillCell(float stepx, float stepy, float steptx, float stepty)
Definition: EdbPVRec.cxx:1088
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:134
Definition: EdbScanSet.h:11
Bool_t SetAsReferencePlate(Int_t pid)
Definition: EdbScanSet.cxx:191
Bool_t AddID(EdbID *id, Int_t step)
Definition: EdbScanSet.cxx:493
const EdbBrickP & Brick() const
Definition: EdbScanSet.h:50
Int_t ProbVertexN()
Definition: EdbVertex.cxx:1448
Int_t FindVertex()
Definition: EdbVertex.cxx:1087
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

◆ fMomentum

Float_t EGraphRecProc::fMomentum
private

◆ fNgapmax

Int_t EGraphRecProc::fNgapmax
private

◆ fNsegmin

Int_t EGraphRecProc::fNsegmin
private

◆ fProbMinP

Float_t EGraphRecProc::fProbMinP
private

◆ 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: