using namespace std;
#include "htriggergo4mon.h"
#include "htriggerhistfiller.h"
#include "htriggerhistbooker.h"
#include "triggerinfodef.h"
#include "hcategory.h"
#include "hmatchurich.h"
#include "hmatchutof.h"
#include "hmatchushower.h"
#include "hmuleptons.h"
#include "hrichhitIPU.h"
#include "hades.h"
#include "hiterator.h"
#include "hruntimedb.h"
#include "hspectrometer.h"
#include "hdetector.h"
#include "hevent.h"
#include "heventheader.h"
#include "showerdef.h"
#include "tofdef.h"
#include "richdef.h"
#include "htriggerparshowermap.h"
#include <iostream>
HTriggerGo4Mon* HTriggerGo4Mon::pointMe=0;
ClassImp(HTriggerGo4Mon)
HTriggerHistBooker* HTriggerGo4Mon::triggerHistbooker=0;
HTriggerGo4Mon::HTriggerGo4Mon(void) {
initVariables();
}
HTriggerGo4Mon::HTriggerGo4Mon(const Text_t* name,const Text_t* title)
: HReconstructor(name,title) {
initVariables();
}
HTriggerGo4Mon::~HTriggerGo4Mon(void) {
if (iterrich) delete iterrich;
if (itertof) delete itertof;
if (itershower) delete itershower;
if (itermatchu) delete itermatchu;
if (itermuemu) delete itermuemu;
if (iterrichhit) delete iterrichhit;
if (itertofhit) delete itertofhit;
if (itershowerhit) delete itershowerhit;
iterrich =0;
itertof =0;
itershower=0;
itermatchu=0;
itermuemu=0;
iterrichhit=0;
itertofhit=0;
itershowerhit=0;
pointMe =0;
}
void HTriggerGo4Mon::initVariables()
{
richCat =0;
tofCat =0;
showerCat =0;
iterrich =0;
itertof =0;
itershower=0;
itermatchu=0;
itermuemu=0;
iterrichhit=0;
itertofhit=0;
itershowerhit=0;
pointMe =this;
useDownscaled=kTRUE;
}
void HTriggerGo4Mon::printStatus(){
cout << "************* HTriggerGo4Mon ***************" << endl;
cout << "********************************************" << endl;
}
void HTriggerGo4Mon::setParContainers() {
triggerHistbooker = HTriggerHistBooker::getExObject();
if(!triggerHistbooker)
{
Error("HTriggerGo4Mon::setParContainers()","ZERO POINTER FOR HTRIGGERHISTBOOKER RECEIVED!");
exit(1);
}
if((showerMap=(HTriggerParShowerMap*)gHades->getRuntimeDb()->getContainer("TriggerParShowerMap"))==NULL)
{
Error("setParContainers()","HTriggerParShowerMap container not found!");
exit(1);
}
}
Bool_t HTriggerGo4Mon::init(void) {
Bool_t test=kFALSE;
setParContainers();
test=getCategories();
printStatus();
fActive=kTRUE;
return test;
}
Bool_t HTriggerGo4Mon::reinit(void)
{
triggerHistbooker = HTriggerHistBooker::getExObject();
triggerHistbooker->printStatus();
fActive=kTRUE;
return kTRUE;
}
Bool_t HTriggerGo4Mon::getCategories()
{
richCat=(HCategory*)(((HEvent*)(gHades->getCurrentEvent()))->getCategory(catMatchURich));
if (!richCat)
{
Warning("HTriggerGo4Mon:init()","CATEGORY HTRIGGERRICH IS NOT FILLED!");
}
richCatHit=(HCategory*)(((HEvent*)(gHades->getCurrentEvent()))->getCategory(catHardRichHit));
if (!richCatHit)
{
Warning("HTriggerGo4Mon:init()","CATEGORY HHARDRICHHIT IS NOT FILLED!");
}
tofCat=(HCategory*)(((HEvent*)(gHades->getCurrentEvent()))->getCategory(catMatchUTof));
if (!tofCat)
{
Warning("HTriggerGo4Mon:init()","CATEGORY HTRIGGERTOF IS NOT FILLED!");
}
tofCatHit = (HCategory*)(((HEvent*)(gHades->getCurrentEvent()))->getCategory(catTofHit));
if(!tofCatHit)
{
Warning("HTriggerGo4Mon:init()","CATEGORY HTOFHIT IS NOT FILLED!");
}
showerCat=(HCategory*)(((HEvent*)(gHades->getCurrentEvent()))->getCategory(catMatchUShower));
if (!showerCat)
{
Warning("HTriggerGo4Mon:init()","CATEGORY HTRIGGERSHOWER IS NOT FILLED!");
}
showerCatHit=(HCategory*)(((HEvent*)(gHades->getCurrentEvent()))->getCategory(catShowerHitIPU));
if (!showerCatHit)
{
Warning("HTriggerGo4Mon:init()","CATEGORY HSHOWERHIT IS NOT FILLED!");
}
matchuCat=(HCategory*)(((HEvent*)(gHades->getCurrentEvent()))->getCategory(catMatchULeptons));
if (!matchuCat)
{
Warning("HTriggerGo4Mon:init()","CATEGORY HTRIGGER MULEPTONS IS NOT FILLED!");
}
muemuCat=(HCategory*)(((HEvent*)(gHades->getCurrentEvent()))->getCategory(catMUEMULeptons));
if (!muemuCat)
{
Warning("HTriggerGo4Mon:init()","CATEGORY HTRIGGER MUEMULeptons IS NOT FILLED!");
}
if (richCat)
{
iterrich =(HIterator *)((HCategory*)richCat)->MakeIterator("native");
}
if(richCatHit)
{
iterrichhit =(HIterator *)((HCategory*)richCatHit)->MakeIterator("native");
}
if (tofCat)
{
itertof=(HIterator *)((HCategory*)tofCat)->MakeIterator("native");
}
if(tofCatHit)
{
itertofhit =(HIterator *)((HCategory*)tofCatHit)->MakeIterator("native");
}
if (showerCat)
{
itershower =(HIterator *)((HCategory*)showerCat)->MakeIterator("native");
}
if (showerCatHit)
{
itershowerhit =(HIterator *)((HCategory*)showerCatHit)->MakeIterator("native");
}
if (matchuCat)
{
itermatchu =(HIterator *)((HCategory*)matchuCat)->MakeIterator("native");
}
if (muemuCat)
{
itermuemu =(HIterator *)((HCategory*)muemuCat)->MakeIterator("native");
}
return kTRUE;
}
Int_t HTriggerGo4Mon::execute()
{
UInt_t daqTime = ( gHades->getCurrentEvent()->getHeader()->getTime() );
UInt_t daqHour = ( (daqTime & 0x00ff0000) >> 16 );
UInt_t daqMin = ( (daqTime & 0x0000ff00) >> 8 );
UInt_t daqSec = daqTime & 0x000000ff;
UInt_t currentTime = 3600*daqHour + 60*daqMin + daqSec;
if( (useDownscaled!=0) )
{
if( (useDownscaled==1) && (gHades->getCurrentEvent()->getHeader()->getDownscalingFlag()==kFALSE) )
{
return(0);
}
else if( (useDownscaled==2) && (gHades->getCurrentEvent()->getHeader()->getDownscalingFlag()==kTRUE) )
{
return(0);
}
}
if(1)
{
triggerHistbooker->getTriggerFiller()->fillTime( currentTime );
}
if(richCat && iterrich)
{
iterrich->Reset();
triggerHistbooker->getTriggerFiller()->fillRich(iterrich);
iterrich->Reset();
triggerHistbooker->getTriggerFiller()->fillRichTime(iterrich, currentTime);
if( iterrichhit)
{
iterrich->Reset();
iterrichhit->Reset();
triggerHistbooker->getTriggerFiller()->fillRichCorrelation(iterrich,iterrichhit);
}
}
if(tofCat && itertof)
{
itertof->Reset();
triggerHistbooker->getTriggerFiller()->fillTof(itertof);
itertof->Reset();
triggerHistbooker->getTriggerFiller()->fillTofTime(itertof, currentTime);
if( itertofhit)
{
itertof->Reset();
itertofhit->Reset();
triggerHistbooker->getTriggerFiller()->fillTofCorrelation(itertof,itertofhit);
}
}
if(showerCat && itershower)
{
itershower->Reset();
triggerHistbooker->getTriggerFiller()->fillShower(itershower);
itershower->Reset();
triggerHistbooker->getTriggerFiller()->fillShowerTime(itershower, currentTime);
if(itershowerhit)
{
itershower->Reset();
itershowerhit->Reset();
triggerHistbooker->getTriggerFiller()->fillShowerCorrelation(itershower,itershowerhit,showerMap);
}
}
if(matchuCat && itermatchu)
{
itermatchu->Reset();
triggerHistbooker->getTriggerFiller()->fillMatchU(itermatchu);
itermatchu->Reset();
triggerHistbooker->getTriggerFiller()->fillMatchUTime(itermatchu, currentTime);
if(iterrich && itertof && itershower && itermuemu)
{
iterrich->Reset();
itertof->Reset();
itershower->Reset();
itermatchu->Reset();
itermuemu->Reset();
triggerHistbooker->getTriggerFiller()->fillMatchUCorrelation(
iterrich,itertof,itershower,
itermatchu,itermuemu
);
}
}
return 0;
}
Bool_t HTriggerGo4Mon::finalize()
{
return kTRUE;
}
HTriggerGo4Mon* HTriggerGo4Mon::getExObject()
{
return(pointMe);
}
Last change: Sat May 22 13:17:11 2010
Last generated: 2010-05-22 13:17
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.