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"
//*-- Author : L. Fabbietti & T. Eberl
//*-- Modified : Dec 29 1999

//_HADES_CLASS_DESCRIPTION 
////////////////////////
// HTofTrigger
//
// 
////////////////////////




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(); // make Geant Kine container available
  
  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.