// $Id: hrichcuttracklet.cc,v 1.5 2003-05-05 08:22:53 eberl Exp $ // Last update by Thomas Eberl: 03/05/05 10:13:29 // using namespace std; #include #include #include #include #include #include #include #include #include #include "hhitmatch.h" #include "phyanadef.h" #include "hrichcuttracklet.h" #include "hrichcuto.h" #include "hkicktrack.h" #include "kickdef.h" #include "hparticle.h" #include "hrichhit.h" #include "hades.h" #include "hiterator.h" #include "hcategory.h" #include "hphysicsconstants.h" #include "hrecevent.h" #include "hlocation.h" HRichCutTracklet::HRichCutTracklet() : HRichCutO() { } HRichCutTracklet::HRichCutTracklet(Text_t *name, Text_t *title) : HRichCutO(name, title) { isExp=kFALSE; setStandardCuts(); TDatime dt; dt.Set(); TString stitle(title); stitle.Append("_"); stitle+=dt.GetDate(); stitle.Append("_"); stitle+=dt.GetTime(); SetTitle(stitle.Data()); } Bool_t HRichCutTracklet::switchTo(const char *s,Bool_t clear) { TString state(s); Bool_t ret_val = kFALSE; if (clear) reset(); if (state.Contains(".")) { listCut=kTRUE; Int_t len = state.Length(); TString tmp; tmp=""; for (Int_t i=0;iGetName()<<" not found"< %4.1f\n", nRingPadNr); if(kRingAvChrg) printf(" nRingAvChrg > %4.1f\n", nRingAvChrg); if(kRingCentroid) printf(" nRingCentroid > %4.1f\n",nRingCentroid); if(kRingPatMat) printf(" nRingPatMat > %4.1f\n", nRingPatMat); if(kRichMdcTheta) printf(" nRichMdcTheta < %4.1f\n",nRichMdcTheta); if(kRichMdcPhi) printf(" nRichMdcPhi < %4.1f\n", nRichMdcPhi); printf("----------------------------------------------\n\n"); return; } void HRichCutTracklet::printCutList() { // Prints a table of enabled cuts to stdio printf("\n-----------------------------------------------\n"); printf(" HRichCutTracklet cuts \n"); printf(" --------------------- \n"); if(kGoodRing) printf("cut on Good Ring active\n"); if(kAngularMatch) printf("cut on RICH_MDC matching active\n"); if(kRingPadNr) printf(" nRingPadNr > %4.1f\n", nRingPadNr); if(kRingAvChrg) printf(" nRingAvChrg > %4.1f\n", nRingAvChrg); if(kRingCentroid) printf(" nRingCentroid > %4.1f\n",nRingCentroid); if(kRingPatMat) printf(" nRingPatMat > %4.1f\n", nRingPatMat); if(kRichMdcTheta) printf(" nRichMdcTheta < %4.1f\n",nRichMdcTheta); if(kRichMdcPhi) printf(" nRichMdcPhi < %4.1f\n", nRichMdcPhi); printf("----------------------------------------------\n\n"); } Bool_t HRichCutTracklet::isAngMatch(HHitMatch *h) { // solid angle cut ! Bool_t ret_val=kFALSE; if ( (!kRichMdcTheta || TMath::Abs(h->getRichTheta() - h->getMdcTheta()) < nRichMdcTheta) && (!kRichMdcPhi || TMath::Abs(h->getRichPhi() - h->getMdcPhi())* TMath::Sin(TMath::DegToRad()*h->getMdcTheta()) < nRichMdcPhi) ) ret_val=kTRUE; return ret_val; } Bool_t HRichCutTracklet::isGoodRing(HHitMatch *h) { Bool_t ret_val=kFALSE; if ( (!kRingPatMat || h->getRingPatMat() > nRingPatMat) && (!kRingPadNr || h->getRingPadNr() > nRingPadNr) && (!kRingCentroid || h->getCentroid() < nRingCentroid) && (!kRingAvChrg || ((Float_t)h->getRingAmplitude())/((Float_t)h->getRingPadNr()) > nRingAvChrg) ) ret_val=kTRUE; return ret_val; } Bool_t HRichCutTracklet::isSector(HHitMatch *h) { Bool_t ret_val=kFALSE; if ( (!kSector || h->getSector() == nSector) ) ret_val=kTRUE; return ret_val; } Bool_t HRichCutTracklet::isSys(HHitMatch *h) { Bool_t ret_val=kFALSE; Int_t s,t; s=t=-1; s=h->getShowInd(); t=h->getTofInd(); Int_t lSys=-1; if (s>-1) lSys = 0; else if (t>-1) lSys = 1; else Error("HRichCutTracklet::isSys","no system in kicktrack"); if ( (!kSys || lSys == nSys) ) ret_val=kTRUE; return ret_val; } Bool_t HRichCutTracklet::isEle(HHitMatch *h) { Bool_t ret_val=kFALSE; Int_t c = h->getKickCharge(); if ( (!kEle || c == -1) ) ret_val=kTRUE; return ret_val; } Bool_t HRichCutTracklet::isPos(HHitMatch *h) { Bool_t ret_val=kFALSE; Int_t c = h->getKickCharge(); if ( (!kPos || c == 1) ) ret_val=kTRUE; return ret_val; } Bool_t HRichCutTracklet::isBetaGT(HHitMatch *h) { Bool_t ret_val=kFALSE; if ( (!kBetaGT || h->getKickBeta() > nBetaGT) ) ret_val=kTRUE; return ret_val; } Bool_t HRichCutTracklet::isBetaLT(HHitMatch *h) { Bool_t ret_val=kFALSE; if ( (!kBetaLT || h->getKickBeta() < nBetaLT) ) ret_val=kTRUE; return ret_val; } Bool_t HRichCutTracklet::isTofGT(HHitMatch *h) { Bool_t ret_val=kFALSE; Float_t tof = h->getTofTof(); Float_t tofino = h->getTofinoTof(); Float_t tmp = 0.; if (tof>0.) tmp = tof; else if (tofino>0.) tmp = tofino; if ( (!kTofGT || tmp > nTofGT) ) ret_val=kTRUE; return ret_val; } Bool_t HRichCutTracklet::isTofLT(HHitMatch *h) { Bool_t ret_val=kFALSE; Float_t tof = h->getTofTof(); Float_t tofino = h->getTofinoTof(); Float_t tmp = 0.; if (tof>0.) tmp = tof; else if (tofino>0.) tmp = tofino; if ( (!kTofLT || tmp < nTofLT) ) ret_val=kTRUE; return ret_val; } ClassImp(HRichCutTracklet)