#ifndef HPARTICLEVERTEXFIND_H #define HPARTICLEVERTEXFIND_H #include "hreconstructor.h" #include "hgeomvector.h" #include "hgeomvertexfit.h" #include "hspecgeompar.h" #include "TIterator.h" #include "TNtuple.h" #include "TFile.h" #include "TClonesArray.h" class HCategory; class HMdcGeomPar; class HIterator; class HParticleCand; class HParticleVertexFind : public HReconstructor { public: HParticleVertexFind(const Text_t name[] = "",const Text_t title[] = "",Bool_t tukey = kFALSE); virtual ~HParticleVertexFind(void); Bool_t init(void); Bool_t finalize(void); Int_t execute(void); void setCut(Double_t minz=-100,Double_t maxz=50,Double_t maxr=50) { fminZ = minz; fmaxZ = maxz; fmaxR = maxr;} void useTukeyWeights (Bool_t flag) { fUsingTukey = flag; } void setTukeyConstant (Double_t d) { fTukeyConst = d; } void setMaxIterations (Int_t max) { fMaxIterations = max; } void setEpsilon (Double_t ep) { fEpsilon = ep; } Double_t getTukeyConstant (void) { return fTukeyConst; } Int_t getMaxIterations (void) { return fMaxIterations; } Double_t getEpsilon (void) { return fEpsilon; } protected: void initVars(void); Bool_t pointsToTarget(const HGeomVector &r,HGeomVector &alpha,Int_t sector,Int_t module); Bool_t readInput (HGeomVector &estimate); void transform (HParticleCand *data, HGeomVector &r, HGeomVector &alpha); Bool_t hasConverged (HGeomVector &v,HGeomVector &oldV); HGeomVertexFit fFitter; //! TClonesArray fPos; //! r for each track TClonesArray fAlpha; //! alpha vector for each track HCategory *fInput; //! Geant MDC data HMdcGeomPar *fGeometry; //! Geometry transformation HSpecGeomPar *fSpecGeometry; //! Spectrometer's geometry Double_t fTukeyConst; // Value used as Tukey constant Int_t fMaxIterations; // Maximum number of iterations Bool_t fUsingTukey; // Flag turning on and off Tukey weights Double_t fEpsilon; // Used for convergence criterium Double_t fminZ; //! minz range for segments Double_t fmaxZ; //! maxz range for segments Double_t fmaxR; //! maxr range for segments public: ClassDef(HParticleVertexFind,1) }; #endif