ROOT logo
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)






 htoftrigger.cc:1
 htoftrigger.cc:2
 htoftrigger.cc:3
 htoftrigger.cc:4
 htoftrigger.cc:5
 htoftrigger.cc:6
 htoftrigger.cc:7
 htoftrigger.cc:8
 htoftrigger.cc:9
 htoftrigger.cc:10
 htoftrigger.cc:11
 htoftrigger.cc:12
 htoftrigger.cc:13
 htoftrigger.cc:14
 htoftrigger.cc:15
 htoftrigger.cc:16
 htoftrigger.cc:17
 htoftrigger.cc:18
 htoftrigger.cc:19
 htoftrigger.cc:20
 htoftrigger.cc:21
 htoftrigger.cc:22
 htoftrigger.cc:23
 htoftrigger.cc:24
 htoftrigger.cc:25
 htoftrigger.cc:26
 htoftrigger.cc:27
 htoftrigger.cc:28
 htoftrigger.cc:29
 htoftrigger.cc:30
 htoftrigger.cc:31
 htoftrigger.cc:32
 htoftrigger.cc:33
 htoftrigger.cc:34
 htoftrigger.cc:35
 htoftrigger.cc:36
 htoftrigger.cc:37
 htoftrigger.cc:38
 htoftrigger.cc:39
 htoftrigger.cc:40
 htoftrigger.cc:41
 htoftrigger.cc:42
 htoftrigger.cc:43
 htoftrigger.cc:44
 htoftrigger.cc:45
 htoftrigger.cc:46
 htoftrigger.cc:47
 htoftrigger.cc:48
 htoftrigger.cc:49
 htoftrigger.cc:50
 htoftrigger.cc:51
 htoftrigger.cc:52
 htoftrigger.cc:53
 htoftrigger.cc:54
 htoftrigger.cc:55
 htoftrigger.cc:56
 htoftrigger.cc:57
 htoftrigger.cc:58
 htoftrigger.cc:59
 htoftrigger.cc:60
 htoftrigger.cc:61
 htoftrigger.cc:62
 htoftrigger.cc:63
 htoftrigger.cc:64
 htoftrigger.cc:65
 htoftrigger.cc:66
 htoftrigger.cc:67
 htoftrigger.cc:68
 htoftrigger.cc:69
 htoftrigger.cc:70
 htoftrigger.cc:71
 htoftrigger.cc:72
 htoftrigger.cc:73
 htoftrigger.cc:74
 htoftrigger.cc:75
 htoftrigger.cc:76
 htoftrigger.cc:77
 htoftrigger.cc:78
 htoftrigger.cc:79
 htoftrigger.cc:80
 htoftrigger.cc:81
 htoftrigger.cc:82
 htoftrigger.cc:83
 htoftrigger.cc:84
 htoftrigger.cc:85
 htoftrigger.cc:86
 htoftrigger.cc:87
 htoftrigger.cc:88
 htoftrigger.cc:89
 htoftrigger.cc:90
 htoftrigger.cc:91
 htoftrigger.cc:92
 htoftrigger.cc:93
 htoftrigger.cc:94
 htoftrigger.cc:95
 htoftrigger.cc:96
 htoftrigger.cc:97
 htoftrigger.cc:98
 htoftrigger.cc:99
 htoftrigger.cc:100
 htoftrigger.cc:101
 htoftrigger.cc:102
 htoftrigger.cc:103
 htoftrigger.cc:104
 htoftrigger.cc:105
 htoftrigger.cc:106
 htoftrigger.cc:107
 htoftrigger.cc:108
 htoftrigger.cc:109
 htoftrigger.cc:110
 htoftrigger.cc:111