// : Author  J.Markert

//_HADES_CLASS_DESCRIPTION 
///////////////////////////////////////////////////////////////////////////////
//
// HTofGo4Mon
//
///////////////////////////////////////////////////////////////////////////////
using namespace std;
#include "htofgo4mon.h"
#include "htofhistfiller.h"
#include "htofhistbooker.h"

#include "tofinodef.h"
#include "htofinoraw.h"

#include "tofdef.h"
#include "hcategory.h"
#include "htofcal.h"
#include "htofraw.h"
#include "htofhit.h"

#include "hdebug.h"
#include "hades.h"
#include "hiterator.h"
#include "hruntimedb.h"
#include "hspectrometer.h"
#include "hdetector.h"
#include "hevent.h"

#include <iostream> 
#include <iomanip>
#include <stdlib.h>
#include <TIterator.h>

ClassImp(HTofGo4Mon)

HTofHistBooker* HTofGo4Mon::tofHistbooker=0;

 HTofGo4Mon::HTofGo4Mon(void) {
  // Default constructor .
  initVariables();
}

 HTofGo4Mon::HTofGo4Mon(Text_t* name,Text_t* title)
                 :  HReconstructor(name,title) {
  // Constructor calls the constructor of class HReconstructor with the name
  // and the title as arguments.
  initVariables();
}

 HTofGo4Mon::~HTofGo4Mon(void) {
  // destructor deletes the iterator
  if (iterraw) delete iterraw;
  if (iterhit) delete iterhit;
  if (itertofinoraw) delete itertofinoraw;
  iterraw=0;
  iterhit=0;
  itertofinoraw=0;

}
 void HTofGo4Mon::initVariables()
{
    // iterator+categories
    rawCat =0;
    hitCat =0;
    tofinorawCat =0;

    iterraw=0;
    iterhit=0;
    itertofinoraw=0;

}
 void HTofGo4Mon::printStatus(){
    cout << "************* HTofGo4Mon *****************" << endl;
    cout << "******************************************" << endl;
}
 void HTofGo4Mon::setParContainers() {

    tofHistbooker = HTofHistBooker::getExObject();
    if(!tofHistbooker)
    {
      Error("HTofGo4Mon::setParContainers()","ZERO POINTER FOR HTOFTHISTBOOKER RECEIVED!");
      exit(1);
    }
}
 Bool_t HTofGo4Mon::init(void) {

    Bool_t test=kFALSE;
    setParContainers();
    test=getCategories();
    printStatus();

    fActive=kTRUE;
    return test;
}
 Bool_t HTofGo4Mon::reinit(void)
{
    tofHistbooker = HTofHistBooker::getExObject();
    tofHistbooker->printStatus();
    fActive=kTRUE;
    return kTRUE;
}
 Bool_t HTofGo4Mon::getCategories()
{

    rawCat=(HCategory*)(((HEvent*)(gHades->getCurrentEvent()))->getCategory(catTofRaw));
    if (!rawCat) {
	Warning("HTofGo4Mon:init()","CATEGORY HTOFRAW IS NOT FILLED!");
    }

    hitCat=(HCategory*)(((HEvent*)(gHades->getCurrentEvent()))->getCategory(catTofHit));
    if (!hitCat) {
	Warning("HTofGo4Mon:init()","CATEGORY HTOFHIT IS NOT FILLED!");
    }

    tofinorawCat=(HCategory*)(((HEvent*)(gHades->getCurrentEvent()))->getCategory(catTofinoRaw));
    if (!tofinorawCat) {
	Warning("HTofinoGo4Mon:init()","CATEGORY HTOFINORAW IS NOT FILLED!");
    }

    if (rawCat)
    {
	iterraw =(HIterator *)((HCategory*)rawCat)->MakeIterator("native");
    }
    if (hitCat)
    {
	iterhit =(HIterator *)((HCategory*)hitCat)->MakeIterator("native");
    }
    if (tofinorawCat)
    {
	itertofinoraw =(HIterator *)((HCategory*)tofinorawCat)->MakeIterator("native");
    }

    return kTRUE;
}
 Int_t HTofGo4Mon::execute()
{
    //tofHistbooker->resetActiveList(2,gHades->getEventCounter());  // if feature of incremental update should be used
    HTofRaw* raw=0;
    HTofHit* hit=0;
    HTofinoRaw* tofinoraw=0;

    Int_t tofinorawmult=0;
    Int_t rawmult=0;

    if(tofinorawCat)
    {
	itertofinoraw->Reset();
	//########################## Fill RAW HISTS ##################################
	while ((tofinoraw=(HTofinoRaw *)itertofinoraw->Next())!=0) {
            if(tofinoraw->getTime()>0 && tofinoraw->getTime()<4096)tofinorawmult++;
	}
    }
 
    if(rawCat)
    {
	iterraw->Reset();
	//########################## Fill RAW HISTS ##################################
	while ((raw=(HTofRaw *)iterraw->Next())!=0) {
	    tofHistbooker->getTofFiller()->fillRaw(raw);
            if(raw->getRightTime()>0)rawmult++;
            if(raw->getLeftTime() >0)rawmult++;
	}
	tofHistbooker->getTofFiller()->fillRawMult((Int_t)(rawmult/2),tofinorawmult);
    }
    if(hitCat)
    {
	iterhit->Reset();
	//########################## Fill HIT HISTS ##################################
	while ((hit=(HTofHit *)iterhit->Next())!=0) {
	    tofHistbooker->getTofFiller()->fillHit(hit);
	}
    }
    return 0;
}
 Bool_t HTofGo4Mon::finalize()
{
    return kTRUE;
}



ROOT page - Class index - Class Hierarchy - Top of the page

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.