// $Id: hpairevtfilter.cc,v 1.6 2009-07-15 11:41:58 halo Exp $ // Author: Thomas.Eberl@ph.tum.de, last modified : 2006-05-29 13:40:52 // // -------------------------------------------------------------------------- //_HADES_CLASS_DESCRIPTION ////////////////////////////////////////////////////////////////////////////// // // HPairEvtFilter // /////////////////////////////////////////////////////////////////////////////// // using namespace std; // -------------------------------------------------------------------------- #include #include // -------------------------------------------------------------------------- #include #include #include #include #include #include #include "hgeantdef.h" // -------------------------------------------------------------------------- #include "hpairevtfilter.h" // -------------------------------------------------------------------------- ClassImp(HPairEvtFilter) // -------------------------------------------------------------------------- HPairEvtFilter::HPairEvtFilter(const Text_t *name,const Text_t *title, TString opt, Int_t nLower, Int_t nUpper) : HReconstructor(name,title) { filterOption=opt; nLowerMult=nLower; nUpperMult=nUpper; zVertMin=-10000.; zVertMax=10000.; // default init pCatPidParticle=0; pIterPidParticle=0; } // -------------------------------------------------------------------------- HPairEvtFilter::HPairEvtFilter(const Text_t *name,const Text_t *title, TString opt, Double_t zMin, Double_t zMax) : HReconstructor(name,title) { filterOption=opt; nLowerMult=0; nUpperMult=1000; zVertMin=zMin; zVertMax=zMax; // default init pCatPidParticle=0; pIterPidParticle=0; } // -------------------------------------------------------------------------- HPairEvtFilter::HPairEvtFilter() { } // -------------------------------------------------------------------------- HPairEvtFilter::~HPairEvtFilter(void) { } // -------------------------------------------------------------------------- Bool_t HPairEvtFilter::init() { if (gHades) { HEvent *event=gHades->getCurrentEvent(); if (event) { HCategory* pCatGeantKine=event->getCategory(catGeantKine); if(pCatGeantKine) kIsReal = kFALSE; else kIsReal = kTRUE; if (kIsReal) cout<<"REAL event mode selected!"<getCategory(catPidPart); if (!pCatPidParticle) { Error("init","No PIDPARTICLE category defined"); return kFALSE; } else pIterPidParticle = (HIterator*)getPidParticleCat() ->MakeIterator("native"); if (!pIterPidParticle) { Error("init","No PIDPARTICLE iterator defined"); return kFALSE; } } // ------------------------------------------------------- } // endif event resetCounters(); } return kTRUE; } // -------------------------------------------------------------------------- Bool_t HPairEvtFilter::finalize() { cout<<"************** EVT FILTER TASK *****************************"<getEntries(); if (pIterPidParticle) pIterPidParticle->Reset(); else Error("isParticleMultRange","no valid iterator"); while ( (pPart = (HPidParticle*) pIterPidParticle->Next()) ) { if (pPart->getPid()!=2 && pPart->getPid()!=3) nLC++; } // condition that selects event, true means event will be processed if (nLC>=nLowerMult && nLC<=nUpperMult) r=kTRUE; // debug output // cout << "Particle Mult: " << nLC <getCurrentEvent())->getHeader() ) -> getVertexZ(); // cout << "Event Vertex _z :" << dVertexZ << endl; // event vertex_z < -25 ==> first target // event vertex_z > -25 ==> second target if ( dVertexZ < dLimitFirstTarget && nTargetNumber == 1) r=kTRUE; else if ( dVertexZ > dLimitFirstTarget && nTargetNumber == 1) r=kFALSE; else if ( dVertexZ < dLimitFirstTarget && nTargetNumber == 2) r=kFALSE; else if ( dVertexZ > dLimitFirstTarget && nTargetNumber == 2) r=kTRUE; // debug output // cout << "Event Vertex: " << dVertexZ << endl; return r; } // -------------------------------------------------------------------------- Bool_t HPairEvtFilter::isTargetZ(Double_t zMin, Double_t zMax) { // target information from event header Double_t dVertexZ = ( (HEventHeader*) ( (HEvent*)gHades->getCurrentEvent())->getHeader() ) -> getVertexZ(); if (zMin<=dVertexZ && dVertexZ