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

    //_HADES_CLASS_DESCRIPTION
    ///////////////////////////////////////////////////////////////////////
    //HShowerParticleIdentifier
    //
    //HShowerParticleIdentifier selects hits, which passed through
    //shower criterium defined by HShowerCriterium
    //
    //////////////////////////////////////////////////////////////////////

    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() {
    //initailization of pid and hit levels

    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()
{
    //it selects hits, which passed shower criterium
    if(fIter == 0) return 0; // nothing to do

    Float_t fShower = 0.0;
    Int_t ret = 0;
    HShowerHit *pHit;
    HShowerPID *pPID;

    fIter->Reset();
    while((pHit = (HShowerHit *)fIter->Next()))
    {
	//loop on local maxima
	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