3 #ifndef __HPARTICLETRACKSORTER_H__
4 #define __HPARTICLETRACKSORTER_H__
20 # define SORTER_NUMBER_OF_INDEX 7
21 # define SORTER_NUMBER_OF_QUALITY_CRITERIA 7
95 kIgnoreInnerMDC = kFALSE;
96 kIgnoreOuterMDC = kFALSE;
98 kIgnorePreviousIndex = kFALSE;
100 kUseYMatching = kTRUE;
101 kUseYMatchingScaling = kTRUE;
105 kUseFakeRejection = kTRUE;
163 cout<<
"--------------------------------------------------------------------"<<endl;
164 cout<<
"sorter_setup:"<<endl;
165 cout<<
"kSwitchRICHMatching "<<kSwitchRICHMatching <<endl;
166 cout<<
"fRICHMDCWindow "<<fRICHMDCWindow <<endl;
167 cout<<
"kIsFieldOn "<<kIsFieldOn <<endl;
168 cout<<
"kIgnoreRICH "<<kIgnoreRICH <<endl;
169 cout<<
"kIgnoreInnerMDC "<<kIgnoreInnerMDC <<endl;
170 cout<<
"kIgnoreOuterMDCB "<<kIgnoreOuterMDC <<endl;
171 cout<<
"kIgnoreMETA "<<kIgnoreMETA <<endl;
172 cout<<
"kIgnorePreviousIndex "<<kIgnorePreviousIndex<<endl;
174 cout<<
"kUseYMatching "<<kUseYMatching <<endl;
175 cout<<
"kUseYMatchingScaling "<<kUseYMatchingScaling<<endl;
176 cout<<
"fMetaBoundary "<<fMetaBoundary <<endl;
177 cout<<
"kUseBeta "<<kUseBeta <<endl;
178 cout<<
"fBetaLepCut "<<fBetaLepCut <<endl;
179 cout<<
"kUseFakeRejection "<<kUseFakeRejection <<endl;
180 cout<<
"kUseMETAQA "<<kUseMETAQA <<endl;
181 cout<<
"fMetaBoundary "<<fMetaBoundary <<endl;
182 cout<<
"fMETAQACut "<<fMETAQACut <<endl;
183 cout<<
"fTOFMAXCut "<<fTOFMAXCut <<endl;
184 cout<<
"fDeltaSegCut "<<fDeltaSegCut <<endl;
185 cout<<
"--------------------------------------------------------------------"<<endl;
274 Int_t
fillInput (vector<candidateSort*>&);
288 static void setDebug (Bool_t debug = kTRUE) { kDebug = debug;}
314 void resetFlags(Bool_t flag = kTRUE,Bool_t reject = kTRUE,Bool_t used = kTRUE,Bool_t lepton = kTRUE);
315 void cleanUp(Bool_t
final = kTRUE);
void resetFlags(Bool_t flag=kTRUE, Bool_t reject=kTRUE, Bool_t used=kTRUE, Bool_t lepton=kTRUE)
void setMetaBoundary(Float_t savety=3.5)
static Int_t kSwitchParticle
switch to select sort by quality algorithms (no setup)
vector< Int_t > index_RICH
static void setPrintLevel(Int_t level)
void cleanUp(Bool_t final=kTRUE)
vector< Int_t > index_InnerMDC
Float_t getBetaLeptonCut()
Float_t getMetaBoundary()
static Bool_t(* pUserSort)(candidateSort *, candidateSort *)
pointer to local event under reconstruction
HRecEvent * fEvent
iterator on HParticleCand
void setIgnorePreviousIndex(Bool_t ignore=kTRUE)
void setIgnoreOuterMDC(Bool_t ignore=kTRUE)
static Bool_t kIgnoreInnerMDC
switch to ignore RICH hits for Double_t hit counting
static Float_t fMETAQACut
lower beta cut for lepton selection (default 0.9)
static Bool_t kIgnoreRICH
switch selections accoording B-Field
static Float_t fDeltaSegCut
max tof [ns] allowed to match (when beta is used)
Bool_t kUseYMatchingScaling
static void setDebug(Bool_t debug=kTRUE)
static Bool_t kUseYMatchingScaling
switch to use Y matching to meta cell (default kTRUE)
Int_t selectBest_Iteration
remember the number of fill() calls
HIterator * iterParticleCandCat
HEmcCluster category.
HParticleTrackSorter(void)
vector< candidateSort * > & getCandidates()
Bool_t rejectQuality(candidateSort *, Particle::ESwitch)
Bool_t restoreFlags(Bool_t onlyFlags=kTRUE)
vector< Int_t > index_OuterMDC
Int_t flagDouble(vector< candidateSort * > &, Particle::ESwitch)
Float_t RK_META_match_Radius
vector< candidateSort * > all_candidates
find new event
void setBetaLeptonCut(Float_t cut=.9)
Int_t clearVector(vector< candidateSort * > &)
static Bool_t selectHadrons(HParticleCand *pcand=0)
static Int_t kSwitchIndex
higher -> more prints (1,2,3) (no setup)
static Int_t kSwitchRICHMatching
switch to select leptons/hadrons (no setup)
sorter_setup & getSetup()
HCategory * pEmcClusterCat
HParticleCand category.
Int_t fill(Bool_t(*function)(HParticleCand *))
TString * nameIndex
remember the old flags of HEmcCluster for restoring
Int_t kSwitchRICHMatching
Int_t setFlagsDouble(vector< candidateSort * > &, Particle::ESwitch)
static Bool_t cmpIndex(candidateSort *, candidateSort *)
vector< Int_t > old_flags_emc
remember the old flags of HParticleCand for restoring
void printCand(candidateSort *, Int_t, TString spacer=" ")
user provided function pointer to sort algo
void printEvent(TString comment)
static Float_t fRICHMDCWindow
switch to select RICH/MDC matching in lepton selection
vector< Int_t > index_TOFHit
static Bool_t isDeltaSegOk(HParticleCand *)
void setTOFMAXCut(Float_t cut=60.)
static Bool_t kIgnoreOuterMDC
switch to ignore InnerMDC hits for Double_t hit counting
static Bool_t kUseBeta
switch to use 1/p scaling of Y matching to meta cell (default kTRUE)
vector< Int_t > index_RPC
void setUseYMatching(Bool_t use=kTRUE)
~HParticleTrackSorter(void)
ClassDef(HParticleTrackSorter, 0)
Int_t fillInput(vector< candidateSort * > &)
Short_t nMdcLayerOuterSeg
vector< Int_t > index_TOFClst
Float_t RK_META_match_Quality
void setDeltaSegCut(Float_t cut=2.)
vector< Int_t > index_SHOWER
static Bool_t selectHadronsNoOuterFit(HParticleCand *pcand=0)
void setIgnoreRICH(Bool_t ignore=kTRUE)
void setUseBeta(Bool_t use=kTRUE)
void setUseYMatchingScaling(Bool_t use=kTRUE)
void selection(Bool_t(*function)(HParticleCand *))
Short_t nMdcLayerInnerSeg
void setIgnoreMETA(Bool_t ignore=kTRUE)
void setIgnoreInnerMDC(Bool_t ignore=kTRUE)
void copyFrom(sorter_setup &s)
void setRICHMatching(Particle::ERichMatch match, Float_t window=4.)
static Bool_t kIsFieldOn
matching window RICH/MDC in phi/theta (symmetric, degree)
void setIsFieldOn(Bool_t field=kTRUE)
vector< Int_t > old_flags
static Float_t fMetaBoundary
switch to use metaqa (normed dx) in build in select functions (default kTRUE)
static Bool_t kUseFakeRejection
switch to use Beta (in lepton select use fBetaLepCut, in hadron beta>0) (default kTRUE) ...
static Float_t fBetaLepCut
matching window when using Y matching with metacell [mm] (default 3): fabs(dy) < (halfcell+metaBounda...
void setUseMETAQA(Bool_t use=kTRUE)
Float_t RK_META_match_Shr_Quality
static Bool_t kUseMETAQA
switch to use fakerejection in build in select functions (default kTRUE)
Int_t selectBest(Particle::ESwitch byQuality, Int_t byParticle)
void backupFlags(Bool_t onlyFlags=kTRUE)
static Int_t kSwitchQuality
switch to select sort by index (no setup)
void copyTo(sorter_setup &d)
void setUserSort(Bool_t(*function)(candidateSort *, candidateSort *))
UInt_t currentEvent
remember the number of selectBest() calls
static Bool_t cmpQuality(candidateSort *, candidateSort *)
Bool_t(* pUserSort)(candidateSort *, candidateSort *)
void setUseFakeRejection(Bool_t use=kTRUE)
Bool_t init(HRecEvent *evt=0)
HCategory * pParticleCandCat
Float_t RK_RICH_match_Quality
void setMETAQACut(Float_t cut=3.)
Bool_t rejectIndex(candidateSort *, Particle::ESwitch, Int_t &)
static Bool_t selectLeptons(HParticleCand *pcand=0)
static Bool_t kUseYMatching
switch to ignore indices from previoius marked ued objects
Int_t fill_Iteration
max delta in phi,theta [deg] between inner/outer seg used in B-Field off
static Bool_t kIgnoreMETA
switch to ignore OuterMDC hits for Double_t hit counting
static Bool_t selectLeptonsNoOuterFit(HParticleCand *pcand=0)
Int_t flagAccepted(vector< candidateSort * > &, Particle::ESwitch)
static Float_t fTOFMAXCut
meta qa (normed dx) cut (default 3.)
Bool_t kIgnorePreviousIndex
sorter_setup setup_backup
store copy of setup params local
static Bool_t kIgnorePreviousIndex
switch to ignore META hits for Double_t hit counting
static Bool_t kDebug
store a copy of the static setup parameters local to restore them later