#ifndef __HPARTICLECANDFILLER_H__ #define __HPARTICLECANDFILLER_H__ #include "hreconstructor.h" #include "hparticlestructs.h" using std::vector; class HCategory; class HIterator; class HMetaMatch2; class HMdcSeg; class HParticleCandFillerPar; class HParticleCandFiller : public HReconstructor { protected: // input data categories HCategory *fCatMetaMatch; //! HCategory *fCatMdcTrkCand; //! HCategory *fCatMdcSeg; //! HCategory *fCatTofHit; //! HCategory *fCatTofCluster; //! HCategory *fCatShowerHit; //! HCategory *fCatRichHit; //! HCategory *fCatRpcCluster; //! HCategory *fCatSpline; //! HCategory *fCatRK; //! HCategory *fCatKalman; //! HCategory *fCatGeantKine; //! HIterator *fMetaMatchIter; //! // output data categories HCategory *fCatParticleCand; //! HCategory *fCatParticleDebug; //! // flags Bool_t fbIsSimulation; //! Bool_t fbIsDebug; //! debug mode ? Bool_t fbgoodSeg0; //! true: keep only fitted seg0 Bool_t fbgoodSeg1; //! true: keep only fitted seg1 Bool_t fbgoodMeta; //! true: keep only candidate with META Bool_t fbgoodRK; //! true: keep only fitted RK Bool_t fbgoodLepton; //! true: keep only candidate with ring match Bool_t fbdoRichAlign; //! true: (default)align the rich (real data) Int_t fmomSwitch; //! : Particle::kMomRK or Particle::kMomKalman // parameter container HParticleCandFillerPar *fFillerPar; //! // working structures vector < candidate * > all_candidates; //! vector for all metaMatch objects candidates. pointers objects; //! // cut parameters Int_t fMinWireGoodTrack; //! minium number of wire from same track for good track (MDC), otherwise ghost Float_t fScaleGhostTrack; //! scale weight of wires of ghost track (MDC) Float_t fScaleGoodTrack; //! scale weight of wires of good track (MDC) Float_t fAngleCloseTrack; //! take into account for filling neighbour tracks with open angle < this void initVars(); void setConditions(const Option_t par[]); Int_t findBestRich(HMetaMatch2* meta,HMdcSeg* seg); void fillCand(HMetaMatch2* meta); void fillCandOld(HMetaMatch2* meta); void fillCandKalman(HMetaMatch2* meta); void fillCandSim(candidate& cand); void fillCollectiveProperties(void); void fillSingleProperties (void); void fillOutput(void); void clearVector(void); public: HParticleCandFiller(const Option_t pOpt[] = ""); HParticleCandFiller(const Text_t* name,const Text_t* title,const Option_t pOpt[] = ""); ~HParticleCandFiller(void); Bool_t init(void); Int_t execute(void); Bool_t finalize(void); void setMinWireGoodTrack(Int_t w) { fMinWireGoodTrack = w; } void setScaleGoodTrack (Float_t s) { fScaleGoodTrack = s; } void setScaleGhostTrack(Float_t s) { fScaleGhostTrack = s; } void setAngleCloseTrack(Float_t a) { fAngleCloseTrack = a; } void setMomSwitch (Int_t s ) { fmomSwitch = s; } void setDoAlignRich (Bool_t align ) { fbdoRichAlign = align; } ClassDef(HParticleCandFiller,0) // HMetaMatch -> HParticleCand }; #endif /* !__HPARTICLECAND_H__ */