using namespace std;
#include "htoftrigger.h"
#include "hades.h"
#include "htofraw.h"
#include "htofhit.h"
#include "htofcalpar.h"
#include "hruntimedb.h"
#include "hcategory.h"
#include "hiterator.h"
#include "hdebug.h"
#include "tofdef.h"
#include "hevent.h"
#include "heventheader.h"
#include "hspectrometer.h"
#include "hdetector.h"
#include <iostream>
#include <iomanip>
#include "htofhitsim.h"
HTofTrigger::HTofTrigger(void) {
fHitCat= NULL;
iterator = 0;
}
HTofTrigger::HTofTrigger(const Text_t *name,const Text_t *title,Int_t multi) :
HReconstructor (name,title) {
fHitCat= NULL;
iterator = 0;
nThreshold = multi;
}
Bool_t HTofTrigger::init(void) {
nSec2=nSec5=nMult=nEvCounter=0;
kineGeant = new HKineSim();
fHitCat=gHades->getCurrentEvent()->getCategory(catTofHit);
if (!fHitCat) {
fHitCat=gHades->getSetup()->getDetector("Tof")->buildCategory(catTofHit);
if (!fHitCat) return kFALSE;
else gHades->getCurrentEvent()->addCategory(catTofHit,fHitCat,"Tof");
}
iterator = (HIterator*)fHitCat->MakeIterator();
return kTRUE;
}
Int_t HTofTrigger::execute(void) {
nEvCounter++;
#if DEBUG_LEVEL>2
gDebuger->enterFunc("HTofTrigger::execute");
#endif
nMult = 0;
iterator->Reset();
HTofHitSim *hit=NULL;
while ( (hit=(HTofHitSim *)iterator->Next())!=NULL) {
Int_t ntrack1= hit->getNTrack1();
Int_t ntrack2= hit->getNTrack2();
Int_t isector= hit->getSector();
if (ntrack1!=0) checkTofHit(ntrack1,isector);
if (ntrack2!=0) checkTofHit(ntrack2,isector);
}
if (checkTofMult()) {
nSec2 = nSec5 = 0;
return 0;
} else {
nSec2 = nSec5 = 0;
return 1;
}
}
void HTofTrigger::checkTofHit(Int_t nTrack ,Int_t nSecTof) {
if (kineGeant->checkChargedPart(nTrack ) ) {
nMult ++;
if (nSecTof==2) nSec2 ++;
if (nSecTof==5) nSec5 ++;
}
}
Bool_t HTofTrigger::checkTofMult() {
if (nSec2>=(nThreshold/2) && nSec5>=(nThreshold/2) && nMult >=nThreshold)
return kTRUE;
else return kFALSE;
}
ClassImp(HTofTrigger)
Last change: Sat May 22 13:16:31 2010
Last generated: 2010-05-22 13:16
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.