using namespace std;
#include "TObject.h"
#include "TRandom.h"
#include <time.h>
#include <iostream>
#include <iomanip>
#include <math.h>
#include "TMath.h"
#include "phyanadef.h"
#include "hcutleptonid.h"
#include "hcut.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"
HCutLeptonId::HCutLeptonId() : HCut() {
kFlagTofinoTof = kFALSE;
kFlagTofTof = kFALSE;
kFlagShowerSum = kFALSE;
kFlagThetaDiff = kFALSE;
kFlagPhiDiff = kFALSE;
kFlagRingPatMat = kFALSE;
kFlagRingHouTra = kFALSE;
}
HCutLeptonId::HCutLeptonId(const Text_t *name, const Text_t *title)
: HCut(name, title) {
kFlagTofinoTof = kFALSE;
kFlagTofTof = kFALSE;
kFlagShowerSum = kFALSE;
kFlagThetaDiff = kFALSE;
kFlagPhiDiff = kFALSE;
kFlagRingPatMat = kFALSE;
kFlagRingHouTra = kFALSE;
}
void HCutLeptonId::reset() {
kFlagTofinoTof = kFALSE;
kFlagTofTof = kFALSE;
kFlagShowerSum = kFALSE;
kFlagThetaDiff = kFALSE;
kFlagPhiDiff = kFALSE;
kFlagRingPatMat = kFALSE;
kFlagRingHouTra = kFALSE;
return;
}
void HCutLeptonId::setStandardCuts() {
return;
}
void HCutLeptonId::printCutList() {
printf("\n--------------------------------------------\n");
printf(" HCutLeptonId cuts \n");
printf(" ------------------ \n");
if(kFlagTofinoTof)
printf("fMinTofinoTof = %4.1f fMaxTofinoTof = %4.1f\n",fMinTofinoTof,fMaxTofinoTof);
if(kFlagTofTof)
printf("fMinTofTof = %4.1f fMaxTofTof = %4.1f\n",fMinTofTof,fMaxTofTof);
if(kFlagShowerSum)
printf("fShowerSum10 = %4.1f fShowerSum20 = %4.1f\n",fShowerSum10,fShowerSum20);
if(kFlagThetaDiff)
printf("fMinThetaDiff = %4.1f fMaxThetaDiff = %4.1f\n",fMinThetaDiff,fMaxThetaDiff);
if(kFlagPhiDiff)
printf("fMinPhiDiff = %4.1f fMaxPhiDiff = %4.1f\n",fMinPhiDiff,fMaxPhiDiff);
if(kFlagRingPatMat)
printf("fMinRingPatMat= %4.1f fMaxRingPatMat= %4.1f\n",fMinRingPatMat,fMaxRingPatMat);
if(kFlagRingHouTra)
printf("fMinRingHouTra= %4.1f fMaxRingHouTra= %4.1f\n",fMinRingHouTra,fMaxRingHouTra);
printf("--------------------------------------------\n\n");
return;
}
Int_t HCutLeptonId::check(HRichHit *ring, HParticle *part) {
Float_t r2d = 57.29578;
fNCheck++;
HCategory *trackCat = gHades->getCurrentEvent()->getCategory(catKickTrack);
HKickTrack *track = (HKickTrack*) trackCat->getObject( part->getTrackId() );
Float_t tof = track->getTof();
if(kFlagTofinoTof) {
if( track->getSystem() == 0 &&
(tof>fMaxTofinoTof || tof<fMinTofinoTof) ) {
fnTofinoTof++;
return kFALSE;
}
}
if(kFlagTofTof) {
if( track->getSystem() == 1 &&
(tof>fMaxTofTof || tof<fMinTofTof) ) {
fnTofTof++;
return kFALSE;
}
}
if(kFlagRingHouTra) {
if( ring->iRingHouTra < fMinRingHouTra ||
ring->iRingHouTra > fMaxRingHouTra ) {
fnRingHouTra++;
return kFALSE;
}
}
if(kFlagRingPatMat) {
if( ring->iRingPatMat < fMinRingPatMat ||
ring->iRingPatMat > fMaxRingPatMat ) {
fnRingPatMat++;
return kFALSE;
}
}
if(kFlagShowerSum) {
if( track->getSystem() == 0 &&
( track->getShowerSum10(1.) < fShowerSum10 ||
track->getShowerSum20(1.) < fShowerSum20 ) ) {
fnShowerSum++;
return kFALSE;
}
}
if(kFlagThetaDiff) {
Float_t ringTheta = ring->getTheta();
Float_t partTheta = part->Theta()*r2d;
if( ringTheta-partTheta < fMinThetaDiff ||
ringTheta-partTheta > fMaxThetaDiff ) {
fnThetaDiff++;
return kFALSE;
}
}
if(kFlagPhiDiff) {
Float_t ringPhi = ring->getPhi();
Float_t partPhi = part->Phi()*r2d + (part->Phi()<0.)*360.;
if( ringPhi-partPhi < fMinPhiDiff ||
ringPhi-partPhi > fMaxPhiDiff ) {
fnPhiDiff++;
return kFALSE;
}
}
fNGood++;
return kTRUE;
}
Int_t HCutLeptonId::check(HRichHit *ring, HKickTrack *track) {
Float_t r2d = 57.29578;
fNCheck++;
Float_t tof = track->getTof();
if(kFlagTofinoTof) {
if( track->getSystem() == 0 &&
(tof>fMaxTofinoTof || tof<fMinTofinoTof) ) {
fnTofinoTof++;
return kFALSE;
}
}
if(kFlagTofTof) {
if( track->getSystem() == 1 &&
(tof>fMaxTofTof || tof<fMinTofTof) ) {
fnTofTof++;
return kFALSE;
}
}
if(kFlagRingHouTra) {
if( ring->iRingHouTra < fMinRingHouTra ||
ring->iRingHouTra > fMaxRingHouTra ) {
fnRingHouTra++;
return kFALSE;
}
}
if(kFlagRingPatMat) {
if( ring->iRingPatMat < fMinRingPatMat ||
ring->iRingPatMat > fMaxRingPatMat ) {
fnRingPatMat++;
return kFALSE;
}
}
if(kFlagShowerSum) {
if( track->getSystem() == 0 &&
( track->getShowerSum10(1.) < fShowerSum10 ||
track->getShowerSum20(1.) < fShowerSum20 ) ) {
fnShowerSum++;
return kFALSE;
}
}
if(kFlagThetaDiff) {
Float_t ringTheta = ring->getTheta();
Float_t trackTheta = track->getTheta()*r2d;
if( ringTheta-trackTheta < fMinThetaDiff ||
ringTheta-trackTheta > fMaxThetaDiff ) {
fnThetaDiff++;
return kFALSE;
}
}
if(kFlagPhiDiff) {
Float_t ringPhi = ring->getPhi();
Float_t trackPhi = track->getPhi()*r2d + (track->getSector()*60.);
if(trackPhi > 360.) trackPhi-= 360.;
if( ringPhi-trackPhi < fMinPhiDiff ||
ringPhi-trackPhi > fMaxPhiDiff ) {
fnPhiDiff++;
return kFALSE;
}
}
fNGood++;
return kTRUE;
}
ClassImp(HCutLeptonId)
Last change: Sat May 22 12:54:16 2010
Last generated: 2010-05-22 12:54
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.