ROOT logo
//*-- AUTHOR : Jaroslav Bielcik
//*-- Modified : 13/11/2001 by D. Zovinec
//*-- Modified : 25/05/2000 by R. Holzmann
//*-- Modified : 17/12/99 by Jaroslav Bielcik

//_HADES_CLASS_DESCRIPTION 
///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// HTofHitFSim                                                               //
// This class is derived from HTofHitF and passes track numbers of the       //
// HGeant hit from raw to hit level                                          //
///////////////////////////////////////////////////////////////////////////////

#include "htofhitfsim.h"
#include "hdebug.h"
#include "hades.h"
#include "hspectrometer.h"
#include "htofdetector.h"
#include "hevent.h"
#include "hcategory.h"
#include "hiterator.h"
#include "hlocation.h"
#include "htofrawsim.h"
#include "htofhitsim.h"
#include "htofcalpar.h"
#include "hruntimedb.h"
#include "hstartdef.h"

ClassImp(HTofHitFSim)

 HTofHitFSim::HTofHitFSim(void){
   fTofSimulation=kTRUE;
 }

 HTofHitFSim::HTofHitFSim(const Text_t* name,const Text_t* title) : HTofHitF(name,title){
   fTofSimulation=kTRUE;
 }

 HTofHitFSim::~HTofHitFSim(void) {
 }

 Bool_t HTofHitFSim::init(void) {
 // initialization of fRawCat and fHitCat containers
 initParContainer(gHades->getSetup(),gHades->getRuntimeDb());
 fRawCat =gHades->getCurrentEvent()->getCategory(catTofRaw);
  if (!fRawCat) {
    HTofDetector* tof=(HTofDetector*)(gHades->getSetup()->getDetector("Tof"));
    fRawCat=tof->buildMatrixCategory("HTofRawSim",0.5F);
    if (!fRawCat) return kFALSE;
    else gHades->getCurrentEvent()->addCategory(catTofRaw,fRawCat,"Tof");
  } else {
    if (fRawCat->getClass()!=HTofRawSim::Class()) {
      Error("HTofHitFSim::init()","Misconfigured input category");
      return kFALSE;
    }
  }
  iter = (HIterator*)fRawCat->MakeIterator();  // cannot be "native", because
                                               // iter->getLocation() is used

  //-------------------------------------------------
  if(gHades->getCurrentEvent()->getCategory(catGeantKine) &&
     gHades->getEmbeddingMode()>0)
  {  // embedding mode
      fRawCatTmp =gHades->getCurrentEvent()->getCategory(catTofRawTmp);
      if(!fRawCatTmp){
          Error("init()","No catTofRawTmp in input! You are in embedding mode!");
	  return kFALSE;
      }
      iterTmp = (HIterator*)fRawCatTmp->MakeIterator();  // cannot be "native", because
                                                         // iter->getLocation() is used

      fHitCatTmp=gHades->getCurrentEvent()->getCategory(catTofHitTmp);
      if (!fHitCatTmp) {
	  HTofDetector* tof=(HTofDetector*)(gHades->getSetup()->getDetector("Tof"));
	  fHitCatTmp=tof->buildMatrixCategory("HTofHitSimTmp",0.5F);
	  if (!fHitCatTmp) {
              Error("init()","Could no build catTofHitTmp !");
	      return kFALSE;
	  }
	  else gHades->getCurrentEvent()->addCategory(catTofHitTmp,fHitCatTmp,"Tof");
          fHitCatTmp->setPersistency(kFALSE);
      }

      fCalParSim = new HTofCalPar("TofCalPar_Sim_Embedding","","TofCalProductionSimEmbedding");
      if(fCalParSim)gHades->getRuntimeDb()->addContainer(fCalParSim);
      else {
	  Error("init()","Could no create HTofCalPar for sim params, needed for embedding !");
      }

  }
  //-------------------------------------------------

  fHitCat=gHades->getCurrentEvent()->getCategory(catTofHit);
  if (!fHitCat) {
    HTofDetector* tof=(HTofDetector*)(gHades->getSetup()->getDetector("Tof"));
    fHitCat=tof->buildMatrixCategory("HTofHitSim",0.5F);
    if (!fHitCat) return kFALSE;
    else gHades->getCurrentEvent()->addCategory(catTofHit,fHitCat,"Tof");
  } else {
    if (fHitCat->getClass()!=HTofHitSim::Class()) {
      Error("HTofHitfSim::init()","Misconfigured output category");
      return kFALSE;
    }
  }

  // Get Start Hit category. If StartHit is not defined
  // a Warning is displayed and fStartHitCat is set to 0
  fStartHitCat = gHades->getCurrentEvent()->getCategory(catStart2Hit);
  if (!fStartHitCat) Warning("init","Start hit level not defined; setting start time to 0");

  fActive = kTRUE;
  return kTRUE;
}


HTofHit *HTofHitFSim::makeHit(TObject *address) {
  return new(address) HTofHitSim;
}

void HTofHitFSim::fillHit(HTofHit *hit, HTofRaw *raw) {
  HTofHitSim *hs=(HTofHitSim *)hit;
  HTofRawSim *rs=(HTofRawSim *)raw;
  hs->setNTrack1(rs->getNTrack1());
  hs->setNTrack2(rs->getNTrack2());
}


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