#include "hshowerparticleidentifier.h"
#include "hshowercriterium.h"
#include "hruntimedb.h"
#include "hevent.h"
#include "hspectrometer.h"
#include "hdetector.h"
#include "hshowerdetector.h"
#include "hcategory.h"
#include "hmatrixcatiter.h"
#include "hlocation.h"
#include "hshowerhit.h"
#include "hshowerpid.h"
#include "hdebug.h"
#include "hades.h"
#include "hiterator.h"
#include "showerdef.h"
ClassImp(HShowerParticleIdentifier)
HShowerParticleIdentifier::HShowerParticleIdentifier(const Text_t *name,const Text_t *title) : HReconstructor(name,title)
{
fIter=NULL;
m_zeroLoc.set(0);
m_pHitFPar=NULL;
m_pCriterium = new HShowerCriterium;
}
HShowerParticleIdentifier::HShowerParticleIdentifier()
{
m_zeroLoc.set(0);
fIter=NULL;
m_pHitFPar=NULL;
m_pCriterium = new HShowerCriterium;
}
HShowerParticleIdentifier::~HShowerParticleIdentifier(void) {
if (fIter) delete fIter;
if (m_pCriterium) delete m_pCriterium;
}
Bool_t HShowerParticleIdentifier::init() {
printf("initialization of shower particle identifier\n");
HShowerDetector *pShowerDet = (HShowerDetector*)gHades->getSetup()
->getDetector("Shower");
m_pHitCat=gHades->getCurrentEvent()->getCategory(catShowerHit);
if (m_pHitCat) {
fIter=(HIterator*)m_pHitCat->MakeIterator("native");
}
m_pPIDCat=gHades->getCurrentEvent()->getCategory(catShowerPID);
if (!m_pPIDCat) {
m_pPIDCat=pShowerDet->buildCategory(catShowerPID);
if (!m_pPIDCat) return kFALSE;
else gHades->getCurrentEvent()
->addCategory(catShowerPID, m_pPIDCat, "Shower");
}
initParameters();
return kTRUE;
}
Bool_t HShowerParticleIdentifier::initParameters() {
HRuntimeDb* rtdb=gHades->getRuntimeDb();
m_pHitFPar = (HShowerHitFPar*)rtdb->getContainer("ShowerHitFPar");
if (!m_pHitFPar) return kFALSE;
m_pCriterium->setParams(m_pHitFPar);
return kTRUE;
}
void HShowerParticleIdentifier::setCriterium(HShowerCriterium* pCrit) {
if (m_pCriterium) delete m_pCriterium;
m_pCriterium = pCrit;
}
Bool_t HShowerParticleIdentifier::finalize(void) {
return kTRUE;
}
Int_t HShowerParticleIdentifier::execute()
{
if(fIter == 0) return 0;
Float_t fShower = 0.0;
Int_t ret = 0;
HShowerHit *pHit;
HShowerPID *pPID;
fIter->Reset();
while((pHit = (HShowerHit *)fIter->Next()))
{
fShower = m_pCriterium->showerCriterium(pHit, ret, m_pHitFPar);
if (fShower > 0.0) {
pPID=(HShowerPID *)m_pPIDCat->getNewSlot(m_zeroLoc);
if (pPID) {
pPID=new(pPID) HShowerPID;
fillPID(pHit, pPID, fShower);
}
}
}
return 0;
}
void HShowerParticleIdentifier::fillPID(HShowerHit* hit, HShowerPID* pid,
Float_t fShower) {
Float_t fX, fY, fZ;
Float_t fR, fPhi, fTheta;
pid->setCharge(hit->getCharge());
pid->setSector(hit->getSector());
pid->setModule(hit->getModule());
pid->setRow(hit->getRow());
pid->setCol(hit->getCol());
pid->setAddress(hit->getAddress());
pid->setShower(fShower);
hit->getLabXYZ(&fX, &fY, &fZ);
pid->setXYZ(fX, fY, fZ);
hit->getSphereCoord(&fR, &fPhi, &fTheta);
pid->setSphereCoord(fR, fPhi, fTheta);
getPIDCat()->sort();
}
hshowerparticleidentifier.cc:1 hshowerparticleidentifier.cc:2 hshowerparticleidentifier.cc:3 hshowerparticleidentifier.cc:4 hshowerparticleidentifier.cc:5 hshowerparticleidentifier.cc:6 hshowerparticleidentifier.cc:7 hshowerparticleidentifier.cc:8 hshowerparticleidentifier.cc:9 hshowerparticleidentifier.cc:10 hshowerparticleidentifier.cc:11 hshowerparticleidentifier.cc:12 hshowerparticleidentifier.cc:13 hshowerparticleidentifier.cc:14 hshowerparticleidentifier.cc:15 hshowerparticleidentifier.cc:16 hshowerparticleidentifier.cc:17 hshowerparticleidentifier.cc:18 hshowerparticleidentifier.cc:19 hshowerparticleidentifier.cc:20 hshowerparticleidentifier.cc:21 hshowerparticleidentifier.cc:22 hshowerparticleidentifier.cc:23 hshowerparticleidentifier.cc:24 hshowerparticleidentifier.cc:25 hshowerparticleidentifier.cc:26 hshowerparticleidentifier.cc:27 hshowerparticleidentifier.cc:28 hshowerparticleidentifier.cc:29 hshowerparticleidentifier.cc:30 hshowerparticleidentifier.cc:31 hshowerparticleidentifier.cc:32 hshowerparticleidentifier.cc:33 hshowerparticleidentifier.cc:34 hshowerparticleidentifier.cc:35 hshowerparticleidentifier.cc:36 hshowerparticleidentifier.cc:37 hshowerparticleidentifier.cc:38 hshowerparticleidentifier.cc:39 hshowerparticleidentifier.cc:40 hshowerparticleidentifier.cc:41 hshowerparticleidentifier.cc:42 hshowerparticleidentifier.cc:43 hshowerparticleidentifier.cc:44 hshowerparticleidentifier.cc:45 hshowerparticleidentifier.cc:46 hshowerparticleidentifier.cc:47 hshowerparticleidentifier.cc:48 hshowerparticleidentifier.cc:49 hshowerparticleidentifier.cc:50 hshowerparticleidentifier.cc:51 hshowerparticleidentifier.cc:52 hshowerparticleidentifier.cc:53 hshowerparticleidentifier.cc:54 hshowerparticleidentifier.cc:55 hshowerparticleidentifier.cc:56 hshowerparticleidentifier.cc:57 hshowerparticleidentifier.cc:58 hshowerparticleidentifier.cc:59 hshowerparticleidentifier.cc:60 hshowerparticleidentifier.cc:61 hshowerparticleidentifier.cc:62 hshowerparticleidentifier.cc:63 hshowerparticleidentifier.cc:64 hshowerparticleidentifier.cc:65 hshowerparticleidentifier.cc:66 hshowerparticleidentifier.cc:67 hshowerparticleidentifier.cc:68 hshowerparticleidentifier.cc:69 hshowerparticleidentifier.cc:70 hshowerparticleidentifier.cc:71 hshowerparticleidentifier.cc:72 hshowerparticleidentifier.cc:73 hshowerparticleidentifier.cc:74 hshowerparticleidentifier.cc:75 hshowerparticleidentifier.cc:76 hshowerparticleidentifier.cc:77 hshowerparticleidentifier.cc:78 hshowerparticleidentifier.cc:79 hshowerparticleidentifier.cc:80 hshowerparticleidentifier.cc:81 hshowerparticleidentifier.cc:82 hshowerparticleidentifier.cc:83 hshowerparticleidentifier.cc:84 hshowerparticleidentifier.cc:85 hshowerparticleidentifier.cc:86 hshowerparticleidentifier.cc:87 hshowerparticleidentifier.cc:88 hshowerparticleidentifier.cc:89 hshowerparticleidentifier.cc:90 hshowerparticleidentifier.cc:91 hshowerparticleidentifier.cc:92 hshowerparticleidentifier.cc:93 hshowerparticleidentifier.cc:94 hshowerparticleidentifier.cc:95 hshowerparticleidentifier.cc:96 hshowerparticleidentifier.cc:97 hshowerparticleidentifier.cc:98 hshowerparticleidentifier.cc:99 hshowerparticleidentifier.cc:100 hshowerparticleidentifier.cc:101 hshowerparticleidentifier.cc:102 hshowerparticleidentifier.cc:103 hshowerparticleidentifier.cc:104 hshowerparticleidentifier.cc:105 hshowerparticleidentifier.cc:106 hshowerparticleidentifier.cc:107 hshowerparticleidentifier.cc:108 hshowerparticleidentifier.cc:109 hshowerparticleidentifier.cc:110 hshowerparticleidentifier.cc:111 hshowerparticleidentifier.cc:112 hshowerparticleidentifier.cc:113 hshowerparticleidentifier.cc:114 hshowerparticleidentifier.cc:115 hshowerparticleidentifier.cc:116 hshowerparticleidentifier.cc:117 hshowerparticleidentifier.cc:118 hshowerparticleidentifier.cc:119 hshowerparticleidentifier.cc:120 hshowerparticleidentifier.cc:121 hshowerparticleidentifier.cc:122 hshowerparticleidentifier.cc:123 hshowerparticleidentifier.cc:124 hshowerparticleidentifier.cc:125 hshowerparticleidentifier.cc:126 hshowerparticleidentifier.cc:127 hshowerparticleidentifier.cc:128 hshowerparticleidentifier.cc:129 hshowerparticleidentifier.cc:130 hshowerparticleidentifier.cc:131 hshowerparticleidentifier.cc:132 hshowerparticleidentifier.cc:133 hshowerparticleidentifier.cc:134 hshowerparticleidentifier.cc:135 hshowerparticleidentifier.cc:136 hshowerparticleidentifier.cc:137 hshowerparticleidentifier.cc:138 hshowerparticleidentifier.cc:139 hshowerparticleidentifier.cc:140 hshowerparticleidentifier.cc:141 hshowerparticleidentifier.cc:142 hshowerparticleidentifier.cc:143 hshowerparticleidentifier.cc:144 hshowerparticleidentifier.cc:145 hshowerparticleidentifier.cc:146