ROOT logo
//_HADES_CLASS_DESCRIPTION
/////////////////////////////////////////////////////////////////////////////
// HParticleEvtInfoFiller
//
// Reconstructor calculates detector hit multiplicity, track (hparticlecand)
// multiplicity and raction plane informations for each event.
// At the moment Forward Wall and Reaction Plane information is not calculated.
//
// These variables are stored in the HParticleEvtInfo output category.
//
////////////////////////////////////////////////////////////////////////////

#include "TString.h"
#include "TIterator.h"
#include "TArrayI.h"

#include "hparticleevtinfo.h"
#include "hparticleevtinfofiller.h"
#include "hcategorymanager.h"


#include "hmdclookupgeom.h"
#include "hmdccalparraw.h"
#include "hgeomvector.h"
#include "hparticletool.h"

#include "richdef.h"
#include "walldef.h"
#include "tofdef.h"
#include "hstartdef.h"
#include "showerdef.h"
#include "emcdef.h"
#include "rpcdef.h"
#include "hmdcdef.h"
#include "hmdctrackddef.h"
#include "hgeantdef.h"

#include "hades.h"
#include "hruntimedb.h"
#include "hcategory.h"
#include "hevent.h"
#include "hlocation.h"
#include "hlinearcategory.h"

#include "hshowerhitsim.h"
#include "hrichdirclus.h"
#include "hrichhit.h"
#include "hmdcclus.h"
#include "hmdcseg.h"
#include "hmdccal1.h"
#include "hmdccal1sim.h"
#include "hmdcraw.h"
#include "hparticlecand.h"
#include "htofhit.h"
#include "hrpccluster.h"
#include "hrpchit.h"
#include "hemccluster.h"
#include "hwallhit.h"
#include "hwalleventplane.h"
#include "hstart2hit.h"


ClassImp(HParticleEvtInfoFiller)


//-----------------------------------------------------------------------------
HParticleEvtInfoFiller::HParticleEvtInfoFiller(const Text_t* name,const Text_t* title, TString beam)
: HReconstructor(name, title)
{

    beam.ToLower();
    beamtime=beam;
    clearMembers();

    ftimeTofCut      = 35.;
    ftimeRpcCut      = 25.;
    fprimary_mindist = 10.;

    fvertexzCut      = -65; // default apr12
    fMetaNPILEUPCut  = 5;
    fMetaPILEUPCut   =  60;

    fMdcPILEUPCut[0] = 200;     // default t1 > 200 (inner) > 400 (outer)
    fMdcPILEUPCut[1] = 200;     // default t1 > 200 (inner) > 400 (outer)
    fMdcPILEUPCut[2] = 400;     // default t1 > 200 (inner) > 400 (outer)
    fMdcPILEUPCut[3] = 400;     // default t1 > 200 (inner) > 400 (outer)
    fMdcPILEUPNCut   = 5*7;     // number of wires in cut region  (7 pion beam 35 apr12)

    fMeanMult        =  40;
    fMeanMIPSMult    =  12;
    fMeanLEPMult     =  1;
    fSigmaMult       =  22;
    fSigmaMIPSMult   =  7;
    fSigmaLEPMult    =  1;

    fMeanMIPSBetaCut =  0.8;

    fMeanLEPBetaCut  =  0.9;
    fMeanLEPMomCut   =  500;
    fMeanLEPRichQACut=  2;

    fminEvts         = 100;
    fmaxEvts         = 2000;
    fminLEPEvts      = 100;
    fmaxLEPEvts      = 4000;
    fSecToAll        = 6;
    fMinMult         = 1;
    fMaxFacToMean    = sqrt(12.);
    fMinStartCorrFlag= 0;
    ftriggerBit      = 13;


    // no veto
    fvetoMin = -15;
    fvetoMax =  15;

    // startMetacorrelation
    fminStartMeta = 80;
    fmaxStartMeta = 350;
    fthreshMeta   = 4;
    fwindowMeta   = 5;
    foffsetMeta   = 7;

    // startVetoCorrelation
    fminStartVeto = 15;
    fmaxStartVeto = 350;
    fwindowVeto   = 2.;
    
    // flash event cut
    fFlashEventCut   = 20; //150;
    // "deltaElectron" cut
    fDeltaElEventCut = 100;

    if(beamtime == "jul14" || beamtime == "aug14") { // START at -400/-300
	fmaxLEPEvts      = 4000;
	fSecToAll        = 6;
	fMinMult         = 0;
	fMaxFacToMean    = 1000;
	fvertexzCut      = -160; //
	fMetaNPILEUPCut  = 0;
	fMdcPILEUPNCut   = 1*7;
	fMeanMult        = 1.4;
        fMeanMIPSMult    = 0.8;
	fMeanLEPMult     = 0.3;
	fSigmaMult       =  1;
	fSigmaMIPSMult   =  1;
	fSigmaLEPMult    =  1;
	fMeanLEPBetaCut  = 0.9;
	fMeanLEPMomCut   = 500;
	ftriggerBit      = 11;
	fMinStartCorrFlag= -1;
    } else if(beamtime == "apr12"){
	fmaxLEPEvts      = 4000;
	fSecToAll        = 6;
	fMinMult         = 0.;
	fMaxFacToMean    = 2.95;
	fvertexzCut      = -65; // default apr12 (START at -80)
	fMetaNPILEUPCut  = 5;
	fMdcPILEUPNCut   = 5*7;
	fMeanMult        = 40;
	fMeanMIPSMult    = 12;
	fMeanLEPMult     = 1;
	fSigmaMult       =  22;
	fSigmaMIPSMult   =  7;
	fSigmaLEPMult    =  1;
	fMeanLEPBetaCut  = 0.9;
	fMeanLEPMomCut   = 500;
	ftriggerBit      = 13;
	fMinStartCorrFlag= 0;
    } else if(beamtime == "mar19"){
	fmaxLEPEvts      = 4000;
	fSecToAll        = 6;
	fMinMult         = 0.;
	fMaxFacToMean    = 2.95;
	fvertexzCut      = -70;
	fMetaNPILEUPCut  = 5;
	fMdcPILEUPNCut   = 5*7;
	fMeanMult        = 40; // ????
	fMeanMIPSMult    = 12; // ????
	fMeanLEPMult     = 1;  // ????
	fSigmaMult       =  22; // ????
	fSigmaMIPSMult   =  7;  // ????
	fSigmaLEPMult    =  1;  // ????
	fMeanLEPBetaCut  = 0.9;
	fMeanLEPMomCut   = 500;
	ftriggerBit      = 13;
	fMinStartCorrFlag= 0;
    } else {
       Error("HParticleEvtInfoFiller()","Unknown beam time %s! will use apr12 default!",beamtime.Data());
    }

}

HParticleEvtInfoFiller::~HParticleEvtInfoFiller()
{
    delete pWallHitIter;
    delete pRichHitIter;
    delete pRichClusIter;
    delete pMdcClusIter;
    delete pMdcSegIter;
    delete pTofHitIter;
    delete pRpcClusterIter;
    delete pRpcHitIter;
    delete pShowerHitIter;
    delete pParticleCandIter;
    delete pEmcClusIter;
    clearMembers();
}
// ---------------------------------------------------------------------------
void HParticleEvtInfoFiller::clearMembers()
{
    zeroLoc.set( 0 );

    pWallHitIter      = 0;
    pRichHitIter      = 0;
    pRichClusIter     = 0;
    pMdcClusIter      = 0;
    pMdcSegIter       = 0;
    pTofHitIter       = 0;
    pRpcClusterIter   = 0;
    pRpcHitIter       = 0;
    pShowerHitIter    = 0;
    pParticleCandIter = 0;
    pEmcClusIter      = 0;

    pParticleEvtInfoCat = 0;



}


// ---------------------------------------------------------------------------
Bool_t HParticleEvtInfoFiller::finalize(void)
{
    return kTRUE;
}


// ---------------------------------------------------------------------------
Bool_t HParticleEvtInfoFiller::init(void)
{
    HCategory* cat   = 0;

    // create iterators to input categories

    Int_t doErrorMessage = 0 ; // 0=warning, 1=Error , -1 silent

    cat = HCategoryManager::getCategory(catWallHit     ,doErrorMessage,"catWallHit, from HParticleEvtInfoFiller::init()");
    if (cat) pWallHitIter      = cat->MakeIterator("native");


    cat = HCategoryManager::getCategory(catRichHit     ,doErrorMessage,"catRichHit, from HParticleEvtInfoFiller::init()");
    if (cat) pRichHitIter      = cat->MakeIterator("native");

    cat = HCategoryManager::getCategory(catRichDirClus ,doErrorMessage,"catRichDirClus, from HParticleEvtInfoFiller::init()");
    if (cat) pRichClusIter     = cat->MakeIterator("native");

    cat = HCategoryManager::getCategory(catMdcClus     ,doErrorMessage,"catMdcClus, from HParticleEvtInfoFiller::init()");
    if (cat) pMdcClusIter      = cat->MakeIterator("native");


    cat = HCategoryManager::getCategory(catMdcSeg      ,doErrorMessage,"catMdcSeg, from HParticleEvtInfoFiller::init()");
    if (cat) pMdcSegIter       = cat->MakeIterator("native");

    cat = HCategoryManager::getCategory(catTofHit      ,doErrorMessage,"catTofHit, from HParticleEvtInfoFiller::init()");
    if (cat) pTofHitIter       = cat->MakeIterator("native");

    cat = HCategoryManager::getCategory(catRpcCluster  ,doErrorMessage,"catRpcCluster, from HParticleEvtInfoFiller::init()");
    if (cat)  pRpcClusterIter  = cat->MakeIterator("native");

    cat = HCategoryManager::getCategory(catRpcHit      ,doErrorMessage,"catRpcHit, from HParticleEvtInfoFiller::init()");
    if (cat)  pRpcHitIter  = cat->MakeIterator("native");

    cat = HCategoryManager::getCategory(catParticleCand,doErrorMessage,"catParticleCand, from HParticleEvtInfoFiller::init()");
    if (cat) pParticleCandIter = cat->MakeIterator("native");

    cat = HCategoryManager::getCategory(catShowerHit,doErrorMessage,"catShowerHit, from HParticleEvtInfoFiller::init()");
    if (cat) pShowerHitIter  = cat->MakeIterator("native");

    cat = HCategoryManager::getCategory(catEmcCluster,doErrorMessage,"catEmcCluster, from HParticleEvtInfoFiller::init()");
    if (cat) pEmcClusIter  = cat->MakeIterator("native");

    pWallEventPlaneCat       = HCategoryManager::getCategory(catWallEventPlane,doErrorMessage,"catWallEventPlane, from HParticleEvtInfoFiller::init()");

    // make output category
    pParticleEvtInfoCat = HCategoryManager::getCategory(catParticleEvtInfo,-1,"catParticleEvtInfo" );
    if(!pParticleEvtInfoCat) pParticleEvtInfoCat = HCategoryManager::addCategory(catParticleEvtInfo,"HParticleEvtInfo",1,"Particle");

    if(!pParticleEvtInfoCat) {
	Error( "init", "Cannot make catParticleEvtInfo category" );
	return kFALSE;
    }

    HCategory* mdcrawCat = HCategoryManager::getCategory(catMdcRaw,-1,"");

    lookupMdcGeom = (HMdcLookupGeom*) gHades->getRuntimeDb()->getContainer("MdcLookupGeom");
    if(mdcrawCat)calparMdc     = (HMdcCalParRaw*)  gHades->getRuntimeDb()->getContainer("MdcCalParRaw");
    else         calparMdc = NULL;

    meanALL .initParam(fmaxEvts   ,fminEvts   ,fMaxFacToMean ,fMeanMult    ,fSigmaMult    ,fMinMult);
    meanMIPS.initParam(fmaxEvts   ,fminEvts   ,fMaxFacToMean ,fMeanMIPSMult,fSigmaMIPSMult,fMinMult);
    meanLEP .initParam(fmaxLEPEvts,fminLEPEvts,fMaxFacToMean ,fMeanLEPMult ,fSigmaLEPMult ,fMinMult);
    for(Int_t s=0;s<6;s++) {
	meanALLSec [s].initParam(fmaxEvts   ,fminEvts   ,fMaxFacToMean ,fMeanMult    /fSecToAll,fSigmaMult    ,fMinMult);
	meanMIPSSec[s].initParam(fmaxEvts   ,fminEvts   ,fMaxFacToMean ,fMeanMIPSMult/fSecToAll,fSigmaMIPSMult,fMinMult);
	meanLEPSec [s].initParam(fmaxLEPEvts,fminLEPEvts,fMaxFacToMean ,fMeanLEPMult /fSecToAll,fSigmaLEPMult ,fMinMult);
    }

    return kTRUE;
}

Bool_t HParticleEvtInfoFiller::isLepton(HParticleCand* cand)
{

    if(!cand->isFlagBit(kIsUsed)) return kFALSE;
    Float_t mom  =  cand->getMomentum() ;
    Float_t beta =  cand->getBeta() ;

    if(beta<0)               return kFALSE;
    if(mom >fMeanLEPMomCut)  return kFALSE;
    if(cand->getRichInd()<0) return kFALSE;
    if(cand->getRichMatchingQuality()>fMeanLEPRichQACut) return kFALSE;
    if(beta  <  (((1.-fMeanLEPBetaCut)/fMeanLEPMomCut)*mom + fMeanLEPBetaCut)) return kFALSE;   // wedge (together with momcut)
    return kTRUE;
}

// ---------------------------------------------------------------------------
Int_t HParticleEvtInfoFiller::execute(void)
{
    HWallHit           *wall_hit         = 0;
    HRichHit           *rich_hit         = 0;
    HRichDirClus       *rich_clus        = 0;
    HMdcClus           *mdc_clus         = 0;
    HMdcSeg            *mdc_seg          = 0;
    HShowerHit         *shower_hit       = 0;
    HEmcCluster        *emc_clus         = 0;
    HTofHit            *tof_hit          = 0;
    HRpcCluster        *rpc_cluster      = 0;
    HRpcHit            *rpc_hit          = 0;
    HParticleCand      *particle_cand    = 0;
    HParticleEvtInfo   *pParticleEvtInfo = 0;

    Int_t wall_hits                                     = 0;
    Int_t rings                                         = 0;
    Int_t rich_rings             [MAXSECTOR]            = { 0 };
    Int_t rich_corr_rings        [MAXSECTOR]            = { 0 };
    Int_t rich_clusters          [MAXSECTOR]            = { 0 };
    Int_t mdc_clusters           [MAXSECTOR][MAXIOSEG]  = { { 0 }, { 0 } };
    Int_t mdc_segments_fitted    [MAXSECTOR][MAXIOSEG]  = { { 0 }, { 0 } };
    Int_t mdc_segments_unfitted  [MAXSECTOR][MAXIOSEG]  = { { 0 }, { 0 } };
    Int_t tof_hits               [MAXSECTOR]            = { 0 };
    Int_t rpc_clst               [MAXSECTOR]            = { 0 };
    Int_t rpc_hits               [MAXSECTOR]            = { 0 };
    Int_t tof_hits_cut           [MAXSECTOR]            = { 0 };
    Int_t rpc_clst_cut           [MAXSECTOR]            = { 0 };
    Int_t rpc_hits_cut           [MAXSECTOR]            = { 0 };
    Int_t shower_hits            [MAXSECTOR]            = { 0 };
    Int_t particle_cands         [MAXSECTOR]            = { 0 };
    Int_t selected_particle_cands[MAXSECTOR]            = { 0 };
    Int_t primary_particle_cands [MAXSECTOR]            = { 0 };

    Int_t ctMETAPileUp = 0;
    Int_t ctMDCPileUp  = 0;


    TArrayI  pUsedRichHit;
    Int_t    idxRich;







    // fill counters
    if (pWallHitIter) {
	pWallHitIter->Reset();
	while ((wall_hit = (HWallHit*)pWallHitIter->Next())) { ++ wall_hits; }
    }

    if (pRichHitIter) {
	pRichHitIter->Reset();
	while ((rich_hit = (HRichHit*)pRichHitIter->Next())) {
	    ++ rings;
	    ++ rich_rings[rich_hit->getSector()];
	}
    }

    if (pRichClusIter) {
	pRichClusIter->Reset();
	while ((rich_clus = (HRichDirClus*)pRichClusIter->Next())){
	    ++ rich_clusters[rich_clus->getSector()];
	}
    }

    if (pMdcClusIter) {
	pMdcClusIter->Reset();
	while ((mdc_clus = (HMdcClus*)pMdcClusIter->Next())) {
	    ++ mdc_clusters[mdc_clus->getSec()][mdc_clus->getIOSeg()];
	}
    }

    if (pMdcSegIter) {
	pMdcSegIter->Reset();
	while ((mdc_seg = (HMdcSeg*)pMdcSegIter->Next())) {
            if(mdc_seg->isFake()) continue;
	    if (mdc_seg->getChi2() == -1) ++ mdc_segments_unfitted[mdc_seg->getSec()][mdc_seg->getIOSeg()];
	    else	                  ++ mdc_segments_fitted  [mdc_seg->getSec()][mdc_seg->getIOSeg()];
	}
    }


    //-----------------------------------------------------------------
    Int_t wires   [6][4][6][220]; // wire address -> ntimes
    Int_t wiresRaw[6][4][6][220]; // wire address from raw before timecut
    Int_t wiresPileup[6][4][6][220]; // wire address from raw before timecut
    Int_t flashWires[6][4];          // number of flash wires
    Int_t deltaElWires[6][4];        // number of delta electr. wires
    // clear the count table per wire
    for(Int_t s = 0; s < 6; s ++){
	for(Int_t m = 0; m < 4; m ++){
            flashWires[s][m] = 0;
            deltaElWires[s][m] = 0;
	    for(Int_t l = 0; l < 6; l ++){
		for(Int_t c = 0; c < 220; c ++){
		    wires[s][m][l][c]    = -1;
		    wiresRaw[s][m][l][c] = -1;
		    wiresPileup[s][m][l][c] = -1;
		}
	    }
	}
    }
    // loop over Mdc Raw cat and make a list of all
    // wires in the current event. the initial count
    // of the wire is set to 0

    HCategory* mdcRawCat = (HCategory*) gHades->getCurrentEvent()->getCategory(catMdcRaw);
    if(mdcRawCat&&lookupMdcGeom&&calparMdc){
	HStart2Hit* starthit =0;
        starthit = HCategoryManager::getObject(starthit,catStart2Hit,0,kTRUE);
	Float_t starttime = 0;
        if(starthit) starttime = starthit->getTime();

	HMdcRaw* raw;
        Int_t s,m,l,c,mb,tdc;
	Int_t size = mdcRawCat->getEntries();
	for(Int_t i = 0; i < size; i ++){
	    raw = HCategoryManager::getObject(raw,mdcRawCat,i);
	    if(raw){
		raw->getAddress(s,m,mb,tdc);

		if (s<0 || m<0) continue;
		HMdcLookupMoth& lookGMoth = (*lookupMdcGeom)[s][m][mb];
		if(&lookGMoth == NULL || lookGMoth.getSize() == 0) continue;
		HMdcLookupChan& chan=(*lookupMdcGeom)[s][m][mb][tdc];
		l=chan.getNLayer();
		c=chan.getNCell();
                if(l<0 || c<0) continue;
                if(raw->isFlashWire())   flashWires[s][m]++;
                if(raw->isDeltaElWire()) deltaElWires[s][m]++;
		wiresRaw[s][m][l][c] ++;
		HMdcCalParTdc& t = (*calparMdc)[s][m][mb][tdc];
		Float_t offset = t.getOffset();
		Float_t slope  = t.getSlope();
                if(offset<0) continue;
		Float_t Time1 = (offset - (raw->getTime(1) * slope) + starttime);
                Float_t Time2 = (offset - (raw->getTime(2) * slope) + starttime);

		if(Time1>fMdcPILEUPCut[m] && Time2-Time1 > 20) wiresPileup[s][m][l][c] ++;

	    }
	}
    }
    // loop over Mdc Cal1 cat and make a list of all
    // wires in the current event. the initial count
    // of the wire is set to 0

    HCategory* mdcCal1Cat = (HCategory*) gHades->getCurrentEvent()->getCategory(catMdcCal1);
    if(mdcCal1Cat){
	HMdcCal1* cal;
        Int_t s,m,l,c;
	Int_t size = mdcCal1Cat->getEntries();
	for(Int_t i = 0; i < size; i ++){
	    cal = HCategoryManager::getObject(cal,mdcCal1Cat,i);
	    if(cal){
		cal->getAddress(s,m,l,c);
		HMdcCal1Sim* calsim = dynamic_cast<HMdcCal1Sim*>(cal);
		if(calsim){ // sim or embedding
		    if(calsim->getStatus1()>0){
			wires[s][m][l][c] ++;
		    }
		} else {
		    wires[s][m][l][c] ++;
		}
	    }
	}
    }
    // loop over MdcSegment cat and count up
    // each wire which has been used in segments.
    // Non fitted wires are ignored.

    HCategory* mdcSegCat = (HCategory*) gHades->getCurrentEvent()->getCategory(catMdcSeg);
    if(mdcSegCat){
	HMdcSeg* seg;
	Int_t s,m=0,l,c,io,ncell;
	Int_t size = mdcSegCat->getEntries();
	for(Int_t i = 0; i < size; i ++){
	    seg = HCategoryManager::getObject(seg,mdcSegCat,i);
	    if(seg){
                if(seg->isFake()) continue;
		s  = seg->getSec();
		io = seg->getIOSeg();
		for(Int_t lay = 0; lay < 12; lay ++){
		    if(io == 0 ){ m = ( lay < 6 ) ? 0 : 1;}
		    if(io == 1 ){ m = ( lay < 6 ) ? 2 : 3;}

		    if(lay >= 6 ) l = lay - 6;
		    else          l = lay;

		    ncell = seg->getNCells(lay);

		    for(Int_t n = 0; n < ncell; n ++){
			c = seg->getCell(lay,n);
			wires[s][m][l][c] ++;
		    }
		}
	    }
	}
     }
     // pileup
     for(Int_t s = 0; s < 6; s ++){
	for(Int_t m = 0; m < 4; m ++){
	    for(Int_t l = 0; l < 6; l ++){
		for(Int_t c = 0; c < 220; c ++){
		    if(wires[s][m][l][c] > 0 && wiresPileup[s][m][l][c] == 0) ctMDCPileUp++;
		}
	    }
	}
    }

    //-----------------------------------------------------------------

    if (pTofHitIter) {
	pTofHitIter->Reset();
	while ((tof_hit = (HTofHit*)pTofHitIter->Next())) {
	    ++ tof_hits[(Int_t)tof_hit->getSector()];
	    if(tof_hit->getTof() < ftimeTofCut && tof_hit->getTof() > 0 )  ++ tof_hits_cut[(Int_t)tof_hit->getSector()];

	    if(tof_hit->getTof() < 0 || tof_hit->getTof() > fMetaPILEUPCut ) ctMETAPileUp++;
	}
    }

    if (pRpcClusterIter) {
	pRpcClusterIter->Reset();
	while ((rpc_cluster = (HRpcCluster*)pRpcClusterIter->Next())) {
	    ++ rpc_clst[(Int_t)rpc_cluster->getSector()];
	    if(rpc_cluster->getTof() < ftimeRpcCut && rpc_cluster->getTof() > 0 )  ++ rpc_clst_cut[(Int_t)rpc_cluster->getSector()];
	    if(rpc_cluster->getTof() < 0 || rpc_cluster->getTof() > fMetaPILEUPCut ) ctMETAPileUp++;

	}
    }

    if (pRpcHitIter) {
	pRpcHitIter->Reset();
	while ((rpc_hit = (HRpcHit*)pRpcHitIter->Next())) {
	    ++ rpc_hits[(Int_t)rpc_hit->getSector()];
            if(rpc_hit->getTof() < ftimeRpcCut && rpc_hit->getTof() > 0 )  ++ rpc_hits_cut[(Int_t)rpc_hit->getSector()];
	}
    }

    if (pShowerHitIter) {
	pShowerHitIter->Reset();
	while ((shower_hit = (HShowerHit*) pShowerHitIter->Next())) {
	    if(shower_hit->getModule() == 0) ++ shower_hits[(Int_t)shower_hit->getSector()];
	}
    }
    if (pEmcClusIter) {
	pEmcClusIter->Reset();
	while ((emc_clus = (HEmcCluster*) pEmcClusIter->Next())) {
	    ++ shower_hits[(Int_t)emc_clus->getSector()];
	}
    }

    pUsedRichHit.Set(rings);
    pUsedRichHit.Reset();


    //-----------------------------------------------------------------

    Bool_t isSimulation = kFALSE;
    if(gHades->getEmbeddingMode()>0) isSimulation = kFALSE; // embedding is treated as real
    else {
	HCategory* kinecat = HCategoryManager::getCategory(catGeantKine,-1); // silent
	if(kinecat) isSimulation = kTRUE;
    }


    Bool_t kGOODRECOVERTEX  = kFALSE;
    Bool_t kGOODCLUSTVERTEX = kFALSE;
    Bool_t kGOODSTART       = kFALSE;
    Bool_t kGOODSTART2      = kFALSE;
    Bool_t kGOODTRIGGER     = kFALSE;
    Bool_t kNOPILEUPMETA    = kFALSE;
    Bool_t kNOPILEUPMDC     = kFALSE;
    Bool_t kNOPILEUPSTART   = kFALSE;
    Bool_t kNOVETO          = kFALSE;
    Bool_t kNOSTART         = kFALSE;
    Bool_t kGOODSTARTVETO   = kFALSE;
    Bool_t kGOODSTARTMETA   = kFALSE;
    Bool_t kNOFLASHMDC      = kTRUE;
    Bool_t kNODELTAELECMDC  = kTRUE;
    Bool_t kNOEVENTPILEUP   = kTRUE;


    HEventHeader* header = gHades->getCurrentEvent()->getHeader() ;


    if(isSimulation){ // switch on all flags which need START + VETO + TRIGGER
	kGOODSTART      = kTRUE;
	kGOODSTART2     = kTRUE;
	kNOPILEUPSTART  = kTRUE;
	kNOVETO         = kTRUE;
	kNOSTART        = kTRUE;
	kGOODSTARTVETO  = kTRUE;
	kGOODSTARTMETA  = kTRUE;
	kGOODTRIGGER    = kTRUE;

    }  else {

	if(header->isTBit(ftriggerBit))       { kGOODTRIGGER     = kTRUE; }
	kNOPILEUPSTART = HParticleTool::isNoSTARTPileUp();
        kGOODSTART     = HParticleTool::isGoodSTART(fMinStartCorrFlag);
        kGOODSTART2    = HParticleTool::isGoodSTART(2);
	kNOVETO        = HParticleTool::isNoVETO(fvetoMin,fvetoMax);
	kNOSTART       = HParticleTool::isNoSTART(fvetoMin,fvetoMax,0.5);
	kGOODSTARTVETO = HParticleTool::isGoodSTARTVETO(fminStartVeto,fmaxStartVeto,fwindowVeto);
	kGOODSTARTMETA = HParticleTool::isGoodSTARTMETA(fminStartMeta,fmaxStartMeta,fthreshMeta,fwindowMeta,foffsetMeta);

    }

    kGOODCLUSTVERTEX = HParticleTool::isGoodClusterVertex(fvertexzCut);
    kGOODRECOVERTEX  = HParticleTool::isGoodRecoVertex   (fvertexzCut);
    kNOEVENTPILEUP   = header->getVertexCluster().isPileupCluster() ? kFALSE : kTRUE;

    if(ctMETAPileUp <= fMetaNPILEUPCut)                                   { kNOPILEUPMETA    = kTRUE; }
    if(ctMDCPileUp  <= fMdcPILEUPNCut )                                   { kNOPILEUPMDC     = kTRUE; }
    //-----------------------------------------------------------------

    if (pParticleCandIter)
    {
        HGeomVector base, dir;
	HGeomVector vertex = HParticleTool::getGlobalVertex(Particle::kVertexParticle,kFALSE);

	Int_t ctNCand    [7] = {0,0,0,0,0,0,0};
        Int_t ctNCandMIPS[7] = {0,0,0,0,0,0,0};
        Int_t ctNCandLEP [7] = {0,0,0,0,0,0,0};


	pParticleCandIter->Reset();
	while ((particle_cand = dynamic_cast<HParticleCand*>(pParticleCandIter->Next())))
	{
	    ++ particle_cands[particle_cand->getSector()];
	    if(particle_cand->isFlagBit(Particle::kIsUsed))
	    {
		++ selected_particle_cands[particle_cand->getSector()];

		HParticleTool::calcSegVector(particle_cand->getZ(),particle_cand->getR(),particle_cand->getPhi(), particle_cand->getTheta(),base,dir);
		Double_t mindist = HParticleTool::calculateMinimumDistanceStraightToPoint(base,dir,vertex);
		if(mindist<fprimary_mindist) { ++ primary_particle_cands[particle_cand->getSector()]; particle_cand->setPrimaryVertex(); }

		//-----------------------------------------------------------------
                // running mean collection
		if(kGOODTRIGGER && kGOODCLUSTVERTEX && kGOODSTART){  // some minimal conditions for relevant events
		    if(isLepton(particle_cand)){
			ctNCandLEP[particle_cand->getSector()]++;
			ctNCandLEP[6]++;
		    }

		    Float_t beta = particle_cand->getBeta();
		    if(beta>0){
			ctNCand[particle_cand->getSector()]++;
			ctNCand[6]++;
			if(beta>fMeanMIPSBetaCut){
			    ctNCandMIPS[particle_cand->getSector()]++;
			    ctNCandMIPS[6]++;
			}
		    }
		}
		//-----------------------------------------------------------------

	    }
	    if ( (idxRich = particle_cand->getRichInd()) > -1 &&
		 (particle_cand->getRingCorr() == Particle::kIsRICHRK || particle_cand->getRingCorr() == (Particle::kIsRICHRK|Particle::kIsRICHMDC) )  &&
		pUsedRichHit.At(idxRich) == 0 )
	    {
		pUsedRichHit.AddAt(1, idxRich);
		++ rich_corr_rings[particle_cand->getSector()];
	    }
	}

	//-----------------------------------------------------------------
        // calculate running mean
	if(ctNCand[6]>0){ // skipp empty events

	    meanALL .calcMean(ctNCand    [6]);
	    meanMIPS.calcMean(ctNCandMIPS[6]);
	    meanLEP .calcMean(ctNCandLEP [6]);
	    for(Int_t s=0;s<6;s++) {
		meanALLSec [s].calcMean(ctNCand    [s]);
		meanMIPSSec[s].calcMean(ctNCandMIPS[s]);
        	meanLEPSec[s] .calcMean(ctNCandLEP [s]);
            }
	}
	//-----------------------------------------------------------------

    } // end particle loop



    // fill output category
    Int_t index = -1;
    if((pParticleEvtInfo = HCategoryManager::newObject(pParticleEvtInfo,pParticleEvtInfoCat,index)) != 0 )
    {
	pParticleEvtInfo = new (pParticleEvtInfo) HParticleEvtInfo;
	pParticleEvtInfo->setFWallMult               ( wall_hits );
	pParticleEvtInfo->setRichMult                ( rich_rings );
	pParticleEvtInfo->setRichCorrMult            ( rich_corr_rings );
	pParticleEvtInfo->setRichClusMult            ( rich_clusters );
	pParticleEvtInfo->setTofMult                 ( tof_hits );
	pParticleEvtInfo->setRpcMult                 ( rpc_clst );
	pParticleEvtInfo->setRpcMultHit              ( rpc_hits );
	pParticleEvtInfo->setTofMultCut              ( tof_hits_cut );
	pParticleEvtInfo->setRpcMultCut              ( rpc_clst_cut );
	pParticleEvtInfo->setRpcMultHitCut           ( rpc_hits_cut );
	pParticleEvtInfo->setShowerMult              ( shower_hits );     // EMC too
	pParticleEvtInfo->setParticleCandMult        ( particle_cands );
	pParticleEvtInfo->setSelectedParticleCandMult( selected_particle_cands );
	pParticleEvtInfo->setPrimaryParticleCandMult ( primary_particle_cands );
	pParticleEvtInfo->setMdcClusMult             ( mdc_clusters );
	pParticleEvtInfo->setMdcSegFittedMult        ( mdc_segments_fitted );
	pParticleEvtInfo->setMdcSegUnfittedMult      ( mdc_segments_unfitted );
	for(Int_t s = 0; s < 6; s ++){
            Int_t sumFlash = 0;
            Int_t sumDelta = 0;
	    for(Int_t m = 0; m < 4; m ++){
                if(m == 2) {
                  sumFlash = 0;
                  sumDelta = 0;
                }
		for(Int_t l = 0; l < 6; l ++){
		    Int_t sumLayUnused = 0;
                    Int_t sumLay       = 0;
                    Int_t sumLayRaw    = 0;
		    for(Int_t c = 0; c < 220; c ++){
			if(wires   [s][m][l][c] == 0) sumLayUnused ++;
                        if(wires   [s][m][l][c] >  0) sumLay       ++;
	                if(wiresRaw[s][m][l][c] == 0) sumLayRaw    ++;
	            }
                    pParticleEvtInfo->setMdcWires      (s,m,l,sumLay);
                    pParticleEvtInfo->setMdcWiresUnused(s,m,l,sumLayUnused);
                    pParticleEvtInfo->setMdcWiresRaw   (s,m,l,sumLayRaw);
		}
                pParticleEvtInfo->setMdcFlashWires (s,m,flashWires[s][m]);
                pParticleEvtInfo->setMdcDeltaElWires(s,m,deltaElWires[s][m]);
                sumFlash += flashWires[s][m];
                sumDelta += deltaElWires[s][m];
                if( sumFlash > fFlashEventCut   ) kNOFLASHMDC     = kFALSE;
                if( sumDelta > fDeltaElEventCut ) kNODELTAELECMDC = kFALSE;
	    }
	}

	if(pWallEventPlaneCat){
	    HWallEventPlane* evtplane = 0;
	    evtplane = HCategoryManager::getObject(evtplane,pWallEventPlaneCat,0,kTRUE);
	    if(evtplane){
		pParticleEvtInfo->setRPlanePhi  (evtplane->getPhi());
		pParticleEvtInfo->setPhiA       (evtplane->getPhiA() );
		pParticleEvtInfo->setPhiB       (evtplane->getPhiB());
		pParticleEvtInfo->setPhiAB      (evtplane->getPhiAB());
		pParticleEvtInfo->setNA         (evtplane->getNA());
		pParticleEvtInfo->setNB         (evtplane->getNB());

	    }
	}


	if(kGOODCLUSTVERTEX)pParticleEvtInfo->setSelectorBit(kGoodVertexClust);
	if(kGOODRECOVERTEX) pParticleEvtInfo->setSelectorBit(kGoodVertexCand);
	if(kGOODSTART)      pParticleEvtInfo->setSelectorBit(kGoodSTART);
	if(kGOODSTART2)     pParticleEvtInfo->setSelectorBit(kGoodSTART2);
	if(kGOODTRIGGER)    pParticleEvtInfo->setSelectorBit(kGoodTRIGGER);
	if(kNOPILEUPMETA)   pParticleEvtInfo->setSelectorBit(kNoPileUpMETA);
	if(kNOPILEUPMDC)    pParticleEvtInfo->setSelectorBit(kNoPileUpMDC);
	if(kNOPILEUPSTART)  pParticleEvtInfo->setSelectorBit(kNoPileUpSTART);
        if(kNOVETO)         pParticleEvtInfo->setSelectorBit(kNoVETO);
        if(kNOSTART)        pParticleEvtInfo->setSelectorBit(kNoSTART);
        if(kGOODSTARTVETO)  pParticleEvtInfo->setSelectorBit(kGoodSTARTVETO);
	if(kGOODSTARTMETA)  pParticleEvtInfo->setSelectorBit(kGoodSTARTMETA);
        if(kNOFLASHMDC)     pParticleEvtInfo->setSelectorBit(kNoFlashMDC);
        if(kNODELTAELECMDC) pParticleEvtInfo->setSelectorBit(kNoDeltaElectron);
        if(kNOEVENTPILEUP)  pParticleEvtInfo->setSelectorBit(kNoEventPileUp);
        

        pParticleEvtInfo->setMeanMult    (meanALL .getMean());
        pParticleEvtInfo->setMeanMIPSMult(meanMIPS.getMean());
        pParticleEvtInfo->setMeanLEPMult (meanLEP .getMean());
        pParticleEvtInfo->setSigmaMult    (meanALL .getSigma());
        pParticleEvtInfo->setSigmaMIPSMult(meanMIPS.getSigma());
        pParticleEvtInfo->setSigmaLEPMult (meanLEP .getSigma());
        for(Int_t s = 0; s < 6; s ++){
	    pParticleEvtInfo->setMeanMult    (s,meanALLSec [s].getMean());
	    pParticleEvtInfo->setMeanMIPSMult(s,meanMIPSSec[s].getMean());
	    pParticleEvtInfo->setMeanLEPMult (s,meanLEPSec [s].getMean());
	    pParticleEvtInfo->setSigmaMult    (s,meanALLSec [s].getSigma());
	    pParticleEvtInfo->setSigmaMIPSMult(s,meanMIPSSec[s].getSigma());
	    pParticleEvtInfo->setSigmaLEPMult (s,meanLEPSec [s].getSigma());
	}

    }
    else
    {
	Error( "execute", "Couldn't get a new slot from 'catParticleEvtInfo'!" );
	exit( 2 );
    }

    return 0;
}
 hparticleevtinfofiller.cc:1
 hparticleevtinfofiller.cc:2
 hparticleevtinfofiller.cc:3
 hparticleevtinfofiller.cc:4
 hparticleevtinfofiller.cc:5
 hparticleevtinfofiller.cc:6
 hparticleevtinfofiller.cc:7
 hparticleevtinfofiller.cc:8
 hparticleevtinfofiller.cc:9
 hparticleevtinfofiller.cc:10
 hparticleevtinfofiller.cc:11
 hparticleevtinfofiller.cc:12
 hparticleevtinfofiller.cc:13
 hparticleevtinfofiller.cc:14
 hparticleevtinfofiller.cc:15
 hparticleevtinfofiller.cc:16
 hparticleevtinfofiller.cc:17
 hparticleevtinfofiller.cc:18
 hparticleevtinfofiller.cc:19
 hparticleevtinfofiller.cc:20
 hparticleevtinfofiller.cc:21
 hparticleevtinfofiller.cc:22
 hparticleevtinfofiller.cc:23
 hparticleevtinfofiller.cc:24
 hparticleevtinfofiller.cc:25
 hparticleevtinfofiller.cc:26
 hparticleevtinfofiller.cc:27
 hparticleevtinfofiller.cc:28
 hparticleevtinfofiller.cc:29
 hparticleevtinfofiller.cc:30
 hparticleevtinfofiller.cc:31
 hparticleevtinfofiller.cc:32
 hparticleevtinfofiller.cc:33
 hparticleevtinfofiller.cc:34
 hparticleevtinfofiller.cc:35
 hparticleevtinfofiller.cc:36
 hparticleevtinfofiller.cc:37
 hparticleevtinfofiller.cc:38
 hparticleevtinfofiller.cc:39
 hparticleevtinfofiller.cc:40
 hparticleevtinfofiller.cc:41
 hparticleevtinfofiller.cc:42
 hparticleevtinfofiller.cc:43
 hparticleevtinfofiller.cc:44
 hparticleevtinfofiller.cc:45
 hparticleevtinfofiller.cc:46
 hparticleevtinfofiller.cc:47
 hparticleevtinfofiller.cc:48
 hparticleevtinfofiller.cc:49
 hparticleevtinfofiller.cc:50
 hparticleevtinfofiller.cc:51
 hparticleevtinfofiller.cc:52
 hparticleevtinfofiller.cc:53
 hparticleevtinfofiller.cc:54
 hparticleevtinfofiller.cc:55
 hparticleevtinfofiller.cc:56
 hparticleevtinfofiller.cc:57
 hparticleevtinfofiller.cc:58
 hparticleevtinfofiller.cc:59
 hparticleevtinfofiller.cc:60
 hparticleevtinfofiller.cc:61
 hparticleevtinfofiller.cc:62
 hparticleevtinfofiller.cc:63
 hparticleevtinfofiller.cc:64
 hparticleevtinfofiller.cc:65
 hparticleevtinfofiller.cc:66
 hparticleevtinfofiller.cc:67
 hparticleevtinfofiller.cc:68
 hparticleevtinfofiller.cc:69
 hparticleevtinfofiller.cc:70
 hparticleevtinfofiller.cc:71
 hparticleevtinfofiller.cc:72
 hparticleevtinfofiller.cc:73
 hparticleevtinfofiller.cc:74
 hparticleevtinfofiller.cc:75
 hparticleevtinfofiller.cc:76
 hparticleevtinfofiller.cc:77
 hparticleevtinfofiller.cc:78
 hparticleevtinfofiller.cc:79
 hparticleevtinfofiller.cc:80
 hparticleevtinfofiller.cc:81
 hparticleevtinfofiller.cc:82
 hparticleevtinfofiller.cc:83
 hparticleevtinfofiller.cc:84
 hparticleevtinfofiller.cc:85
 hparticleevtinfofiller.cc:86
 hparticleevtinfofiller.cc:87
 hparticleevtinfofiller.cc:88
 hparticleevtinfofiller.cc:89
 hparticleevtinfofiller.cc:90
 hparticleevtinfofiller.cc:91
 hparticleevtinfofiller.cc:92
 hparticleevtinfofiller.cc:93
 hparticleevtinfofiller.cc:94
 hparticleevtinfofiller.cc:95
 hparticleevtinfofiller.cc:96
 hparticleevtinfofiller.cc:97
 hparticleevtinfofiller.cc:98
 hparticleevtinfofiller.cc:99
 hparticleevtinfofiller.cc:100
 hparticleevtinfofiller.cc:101
 hparticleevtinfofiller.cc:102
 hparticleevtinfofiller.cc:103
 hparticleevtinfofiller.cc:104
 hparticleevtinfofiller.cc:105
 hparticleevtinfofiller.cc:106
 hparticleevtinfofiller.cc:107
 hparticleevtinfofiller.cc:108
 hparticleevtinfofiller.cc:109
 hparticleevtinfofiller.cc:110
 hparticleevtinfofiller.cc:111
 hparticleevtinfofiller.cc:112
 hparticleevtinfofiller.cc:113
 hparticleevtinfofiller.cc:114
 hparticleevtinfofiller.cc:115
 hparticleevtinfofiller.cc:116
 hparticleevtinfofiller.cc:117
 hparticleevtinfofiller.cc:118
 hparticleevtinfofiller.cc:119
 hparticleevtinfofiller.cc:120
 hparticleevtinfofiller.cc:121
 hparticleevtinfofiller.cc:122
 hparticleevtinfofiller.cc:123
 hparticleevtinfofiller.cc:124
 hparticleevtinfofiller.cc:125
 hparticleevtinfofiller.cc:126
 hparticleevtinfofiller.cc:127
 hparticleevtinfofiller.cc:128
 hparticleevtinfofiller.cc:129
 hparticleevtinfofiller.cc:130
 hparticleevtinfofiller.cc:131
 hparticleevtinfofiller.cc:132
 hparticleevtinfofiller.cc:133
 hparticleevtinfofiller.cc:134
 hparticleevtinfofiller.cc:135
 hparticleevtinfofiller.cc:136
 hparticleevtinfofiller.cc:137
 hparticleevtinfofiller.cc:138
 hparticleevtinfofiller.cc:139
 hparticleevtinfofiller.cc:140
 hparticleevtinfofiller.cc:141
 hparticleevtinfofiller.cc:142
 hparticleevtinfofiller.cc:143
 hparticleevtinfofiller.cc:144
 hparticleevtinfofiller.cc:145
 hparticleevtinfofiller.cc:146
 hparticleevtinfofiller.cc:147
 hparticleevtinfofiller.cc:148
 hparticleevtinfofiller.cc:149
 hparticleevtinfofiller.cc:150
 hparticleevtinfofiller.cc:151
 hparticleevtinfofiller.cc:152
 hparticleevtinfofiller.cc:153
 hparticleevtinfofiller.cc:154
 hparticleevtinfofiller.cc:155
 hparticleevtinfofiller.cc:156
 hparticleevtinfofiller.cc:157
 hparticleevtinfofiller.cc:158
 hparticleevtinfofiller.cc:159
 hparticleevtinfofiller.cc:160
 hparticleevtinfofiller.cc:161
 hparticleevtinfofiller.cc:162
 hparticleevtinfofiller.cc:163
 hparticleevtinfofiller.cc:164
 hparticleevtinfofiller.cc:165
 hparticleevtinfofiller.cc:166
 hparticleevtinfofiller.cc:167
 hparticleevtinfofiller.cc:168
 hparticleevtinfofiller.cc:169
 hparticleevtinfofiller.cc:170
 hparticleevtinfofiller.cc:171
 hparticleevtinfofiller.cc:172
 hparticleevtinfofiller.cc:173
 hparticleevtinfofiller.cc:174
 hparticleevtinfofiller.cc:175
 hparticleevtinfofiller.cc:176
 hparticleevtinfofiller.cc:177
 hparticleevtinfofiller.cc:178
 hparticleevtinfofiller.cc:179
 hparticleevtinfofiller.cc:180
 hparticleevtinfofiller.cc:181
 hparticleevtinfofiller.cc:182
 hparticleevtinfofiller.cc:183
 hparticleevtinfofiller.cc:184
 hparticleevtinfofiller.cc:185
 hparticleevtinfofiller.cc:186
 hparticleevtinfofiller.cc:187
 hparticleevtinfofiller.cc:188
 hparticleevtinfofiller.cc:189
 hparticleevtinfofiller.cc:190
 hparticleevtinfofiller.cc:191
 hparticleevtinfofiller.cc:192
 hparticleevtinfofiller.cc:193
 hparticleevtinfofiller.cc:194
 hparticleevtinfofiller.cc:195
 hparticleevtinfofiller.cc:196
 hparticleevtinfofiller.cc:197
 hparticleevtinfofiller.cc:198
 hparticleevtinfofiller.cc:199
 hparticleevtinfofiller.cc:200
 hparticleevtinfofiller.cc:201
 hparticleevtinfofiller.cc:202
 hparticleevtinfofiller.cc:203
 hparticleevtinfofiller.cc:204
 hparticleevtinfofiller.cc:205
 hparticleevtinfofiller.cc:206
 hparticleevtinfofiller.cc:207
 hparticleevtinfofiller.cc:208
 hparticleevtinfofiller.cc:209
 hparticleevtinfofiller.cc:210
 hparticleevtinfofiller.cc:211
 hparticleevtinfofiller.cc:212
 hparticleevtinfofiller.cc:213
 hparticleevtinfofiller.cc:214
 hparticleevtinfofiller.cc:215
 hparticleevtinfofiller.cc:216
 hparticleevtinfofiller.cc:217
 hparticleevtinfofiller.cc:218
 hparticleevtinfofiller.cc:219
 hparticleevtinfofiller.cc:220
 hparticleevtinfofiller.cc:221
 hparticleevtinfofiller.cc:222
 hparticleevtinfofiller.cc:223
 hparticleevtinfofiller.cc:224
 hparticleevtinfofiller.cc:225
 hparticleevtinfofiller.cc:226
 hparticleevtinfofiller.cc:227
 hparticleevtinfofiller.cc:228
 hparticleevtinfofiller.cc:229
 hparticleevtinfofiller.cc:230
 hparticleevtinfofiller.cc:231
 hparticleevtinfofiller.cc:232
 hparticleevtinfofiller.cc:233
 hparticleevtinfofiller.cc:234
 hparticleevtinfofiller.cc:235
 hparticleevtinfofiller.cc:236
 hparticleevtinfofiller.cc:237
 hparticleevtinfofiller.cc:238
 hparticleevtinfofiller.cc:239
 hparticleevtinfofiller.cc:240
 hparticleevtinfofiller.cc:241
 hparticleevtinfofiller.cc:242
 hparticleevtinfofiller.cc:243
 hparticleevtinfofiller.cc:244
 hparticleevtinfofiller.cc:245
 hparticleevtinfofiller.cc:246
 hparticleevtinfofiller.cc:247
 hparticleevtinfofiller.cc:248
 hparticleevtinfofiller.cc:249
 hparticleevtinfofiller.cc:250
 hparticleevtinfofiller.cc:251
 hparticleevtinfofiller.cc:252
 hparticleevtinfofiller.cc:253
 hparticleevtinfofiller.cc:254
 hparticleevtinfofiller.cc:255
 hparticleevtinfofiller.cc:256
 hparticleevtinfofiller.cc:257
 hparticleevtinfofiller.cc:258
 hparticleevtinfofiller.cc:259
 hparticleevtinfofiller.cc:260
 hparticleevtinfofiller.cc:261
 hparticleevtinfofiller.cc:262
 hparticleevtinfofiller.cc:263
 hparticleevtinfofiller.cc:264
 hparticleevtinfofiller.cc:265
 hparticleevtinfofiller.cc:266
 hparticleevtinfofiller.cc:267
 hparticleevtinfofiller.cc:268
 hparticleevtinfofiller.cc:269
 hparticleevtinfofiller.cc:270
 hparticleevtinfofiller.cc:271
 hparticleevtinfofiller.cc:272
 hparticleevtinfofiller.cc:273
 hparticleevtinfofiller.cc:274
 hparticleevtinfofiller.cc:275
 hparticleevtinfofiller.cc:276
 hparticleevtinfofiller.cc:277
 hparticleevtinfofiller.cc:278
 hparticleevtinfofiller.cc:279
 hparticleevtinfofiller.cc:280
 hparticleevtinfofiller.cc:281
 hparticleevtinfofiller.cc:282
 hparticleevtinfofiller.cc:283
 hparticleevtinfofiller.cc:284
 hparticleevtinfofiller.cc:285
 hparticleevtinfofiller.cc:286
 hparticleevtinfofiller.cc:287
 hparticleevtinfofiller.cc:288
 hparticleevtinfofiller.cc:289
 hparticleevtinfofiller.cc:290
 hparticleevtinfofiller.cc:291
 hparticleevtinfofiller.cc:292
 hparticleevtinfofiller.cc:293
 hparticleevtinfofiller.cc:294
 hparticleevtinfofiller.cc:295
 hparticleevtinfofiller.cc:296
 hparticleevtinfofiller.cc:297
 hparticleevtinfofiller.cc:298
 hparticleevtinfofiller.cc:299
 hparticleevtinfofiller.cc:300
 hparticleevtinfofiller.cc:301
 hparticleevtinfofiller.cc:302
 hparticleevtinfofiller.cc:303
 hparticleevtinfofiller.cc:304
 hparticleevtinfofiller.cc:305
 hparticleevtinfofiller.cc:306
 hparticleevtinfofiller.cc:307
 hparticleevtinfofiller.cc:308
 hparticleevtinfofiller.cc:309
 hparticleevtinfofiller.cc:310
 hparticleevtinfofiller.cc:311
 hparticleevtinfofiller.cc:312
 hparticleevtinfofiller.cc:313
 hparticleevtinfofiller.cc:314
 hparticleevtinfofiller.cc:315
 hparticleevtinfofiller.cc:316
 hparticleevtinfofiller.cc:317
 hparticleevtinfofiller.cc:318
 hparticleevtinfofiller.cc:319
 hparticleevtinfofiller.cc:320
 hparticleevtinfofiller.cc:321
 hparticleevtinfofiller.cc:322
 hparticleevtinfofiller.cc:323
 hparticleevtinfofiller.cc:324
 hparticleevtinfofiller.cc:325
 hparticleevtinfofiller.cc:326
 hparticleevtinfofiller.cc:327
 hparticleevtinfofiller.cc:328
 hparticleevtinfofiller.cc:329
 hparticleevtinfofiller.cc:330
 hparticleevtinfofiller.cc:331
 hparticleevtinfofiller.cc:332
 hparticleevtinfofiller.cc:333
 hparticleevtinfofiller.cc:334
 hparticleevtinfofiller.cc:335
 hparticleevtinfofiller.cc:336
 hparticleevtinfofiller.cc:337
 hparticleevtinfofiller.cc:338
 hparticleevtinfofiller.cc:339
 hparticleevtinfofiller.cc:340
 hparticleevtinfofiller.cc:341
 hparticleevtinfofiller.cc:342
 hparticleevtinfofiller.cc:343
 hparticleevtinfofiller.cc:344
 hparticleevtinfofiller.cc:345
 hparticleevtinfofiller.cc:346
 hparticleevtinfofiller.cc:347
 hparticleevtinfofiller.cc:348
 hparticleevtinfofiller.cc:349
 hparticleevtinfofiller.cc:350
 hparticleevtinfofiller.cc:351
 hparticleevtinfofiller.cc:352
 hparticleevtinfofiller.cc:353
 hparticleevtinfofiller.cc:354
 hparticleevtinfofiller.cc:355
 hparticleevtinfofiller.cc:356
 hparticleevtinfofiller.cc:357
 hparticleevtinfofiller.cc:358
 hparticleevtinfofiller.cc:359
 hparticleevtinfofiller.cc:360
 hparticleevtinfofiller.cc:361
 hparticleevtinfofiller.cc:362
 hparticleevtinfofiller.cc:363
 hparticleevtinfofiller.cc:364
 hparticleevtinfofiller.cc:365
 hparticleevtinfofiller.cc:366
 hparticleevtinfofiller.cc:367
 hparticleevtinfofiller.cc:368
 hparticleevtinfofiller.cc:369
 hparticleevtinfofiller.cc:370
 hparticleevtinfofiller.cc:371
 hparticleevtinfofiller.cc:372
 hparticleevtinfofiller.cc:373
 hparticleevtinfofiller.cc:374
 hparticleevtinfofiller.cc:375
 hparticleevtinfofiller.cc:376
 hparticleevtinfofiller.cc:377
 hparticleevtinfofiller.cc:378
 hparticleevtinfofiller.cc:379
 hparticleevtinfofiller.cc:380
 hparticleevtinfofiller.cc:381
 hparticleevtinfofiller.cc:382
 hparticleevtinfofiller.cc:383
 hparticleevtinfofiller.cc:384
 hparticleevtinfofiller.cc:385
 hparticleevtinfofiller.cc:386
 hparticleevtinfofiller.cc:387
 hparticleevtinfofiller.cc:388
 hparticleevtinfofiller.cc:389
 hparticleevtinfofiller.cc:390
 hparticleevtinfofiller.cc:391
 hparticleevtinfofiller.cc:392
 hparticleevtinfofiller.cc:393
 hparticleevtinfofiller.cc:394
 hparticleevtinfofiller.cc:395
 hparticleevtinfofiller.cc:396
 hparticleevtinfofiller.cc:397
 hparticleevtinfofiller.cc:398
 hparticleevtinfofiller.cc:399
 hparticleevtinfofiller.cc:400
 hparticleevtinfofiller.cc:401
 hparticleevtinfofiller.cc:402
 hparticleevtinfofiller.cc:403
 hparticleevtinfofiller.cc:404
 hparticleevtinfofiller.cc:405
 hparticleevtinfofiller.cc:406
 hparticleevtinfofiller.cc:407
 hparticleevtinfofiller.cc:408
 hparticleevtinfofiller.cc:409
 hparticleevtinfofiller.cc:410
 hparticleevtinfofiller.cc:411
 hparticleevtinfofiller.cc:412
 hparticleevtinfofiller.cc:413
 hparticleevtinfofiller.cc:414
 hparticleevtinfofiller.cc:415
 hparticleevtinfofiller.cc:416
 hparticleevtinfofiller.cc:417
 hparticleevtinfofiller.cc:418
 hparticleevtinfofiller.cc:419
 hparticleevtinfofiller.cc:420
 hparticleevtinfofiller.cc:421
 hparticleevtinfofiller.cc:422
 hparticleevtinfofiller.cc:423
 hparticleevtinfofiller.cc:424
 hparticleevtinfofiller.cc:425
 hparticleevtinfofiller.cc:426
 hparticleevtinfofiller.cc:427
 hparticleevtinfofiller.cc:428
 hparticleevtinfofiller.cc:429
 hparticleevtinfofiller.cc:430
 hparticleevtinfofiller.cc:431
 hparticleevtinfofiller.cc:432
 hparticleevtinfofiller.cc:433
 hparticleevtinfofiller.cc:434
 hparticleevtinfofiller.cc:435
 hparticleevtinfofiller.cc:436
 hparticleevtinfofiller.cc:437
 hparticleevtinfofiller.cc:438
 hparticleevtinfofiller.cc:439
 hparticleevtinfofiller.cc:440
 hparticleevtinfofiller.cc:441
 hparticleevtinfofiller.cc:442
 hparticleevtinfofiller.cc:443
 hparticleevtinfofiller.cc:444
 hparticleevtinfofiller.cc:445
 hparticleevtinfofiller.cc:446
 hparticleevtinfofiller.cc:447
 hparticleevtinfofiller.cc:448
 hparticleevtinfofiller.cc:449
 hparticleevtinfofiller.cc:450
 hparticleevtinfofiller.cc:451
 hparticleevtinfofiller.cc:452
 hparticleevtinfofiller.cc:453
 hparticleevtinfofiller.cc:454
 hparticleevtinfofiller.cc:455
 hparticleevtinfofiller.cc:456
 hparticleevtinfofiller.cc:457
 hparticleevtinfofiller.cc:458
 hparticleevtinfofiller.cc:459
 hparticleevtinfofiller.cc:460
 hparticleevtinfofiller.cc:461
 hparticleevtinfofiller.cc:462
 hparticleevtinfofiller.cc:463
 hparticleevtinfofiller.cc:464
 hparticleevtinfofiller.cc:465
 hparticleevtinfofiller.cc:466
 hparticleevtinfofiller.cc:467
 hparticleevtinfofiller.cc:468
 hparticleevtinfofiller.cc:469
 hparticleevtinfofiller.cc:470
 hparticleevtinfofiller.cc:471
 hparticleevtinfofiller.cc:472
 hparticleevtinfofiller.cc:473
 hparticleevtinfofiller.cc:474
 hparticleevtinfofiller.cc:475
 hparticleevtinfofiller.cc:476
 hparticleevtinfofiller.cc:477
 hparticleevtinfofiller.cc:478
 hparticleevtinfofiller.cc:479
 hparticleevtinfofiller.cc:480
 hparticleevtinfofiller.cc:481
 hparticleevtinfofiller.cc:482
 hparticleevtinfofiller.cc:483
 hparticleevtinfofiller.cc:484
 hparticleevtinfofiller.cc:485
 hparticleevtinfofiller.cc:486
 hparticleevtinfofiller.cc:487
 hparticleevtinfofiller.cc:488
 hparticleevtinfofiller.cc:489
 hparticleevtinfofiller.cc:490
 hparticleevtinfofiller.cc:491
 hparticleevtinfofiller.cc:492
 hparticleevtinfofiller.cc:493
 hparticleevtinfofiller.cc:494
 hparticleevtinfofiller.cc:495
 hparticleevtinfofiller.cc:496
 hparticleevtinfofiller.cc:497
 hparticleevtinfofiller.cc:498
 hparticleevtinfofiller.cc:499
 hparticleevtinfofiller.cc:500
 hparticleevtinfofiller.cc:501
 hparticleevtinfofiller.cc:502
 hparticleevtinfofiller.cc:503
 hparticleevtinfofiller.cc:504
 hparticleevtinfofiller.cc:505
 hparticleevtinfofiller.cc:506
 hparticleevtinfofiller.cc:507
 hparticleevtinfofiller.cc:508
 hparticleevtinfofiller.cc:509
 hparticleevtinfofiller.cc:510
 hparticleevtinfofiller.cc:511
 hparticleevtinfofiller.cc:512
 hparticleevtinfofiller.cc:513
 hparticleevtinfofiller.cc:514
 hparticleevtinfofiller.cc:515
 hparticleevtinfofiller.cc:516
 hparticleevtinfofiller.cc:517
 hparticleevtinfofiller.cc:518
 hparticleevtinfofiller.cc:519
 hparticleevtinfofiller.cc:520
 hparticleevtinfofiller.cc:521
 hparticleevtinfofiller.cc:522
 hparticleevtinfofiller.cc:523
 hparticleevtinfofiller.cc:524
 hparticleevtinfofiller.cc:525
 hparticleevtinfofiller.cc:526
 hparticleevtinfofiller.cc:527
 hparticleevtinfofiller.cc:528
 hparticleevtinfofiller.cc:529
 hparticleevtinfofiller.cc:530
 hparticleevtinfofiller.cc:531
 hparticleevtinfofiller.cc:532
 hparticleevtinfofiller.cc:533
 hparticleevtinfofiller.cc:534
 hparticleevtinfofiller.cc:535
 hparticleevtinfofiller.cc:536
 hparticleevtinfofiller.cc:537
 hparticleevtinfofiller.cc:538
 hparticleevtinfofiller.cc:539
 hparticleevtinfofiller.cc:540
 hparticleevtinfofiller.cc:541
 hparticleevtinfofiller.cc:542
 hparticleevtinfofiller.cc:543
 hparticleevtinfofiller.cc:544
 hparticleevtinfofiller.cc:545
 hparticleevtinfofiller.cc:546
 hparticleevtinfofiller.cc:547
 hparticleevtinfofiller.cc:548
 hparticleevtinfofiller.cc:549
 hparticleevtinfofiller.cc:550
 hparticleevtinfofiller.cc:551
 hparticleevtinfofiller.cc:552
 hparticleevtinfofiller.cc:553
 hparticleevtinfofiller.cc:554
 hparticleevtinfofiller.cc:555
 hparticleevtinfofiller.cc:556
 hparticleevtinfofiller.cc:557
 hparticleevtinfofiller.cc:558
 hparticleevtinfofiller.cc:559
 hparticleevtinfofiller.cc:560
 hparticleevtinfofiller.cc:561
 hparticleevtinfofiller.cc:562
 hparticleevtinfofiller.cc:563
 hparticleevtinfofiller.cc:564
 hparticleevtinfofiller.cc:565
 hparticleevtinfofiller.cc:566
 hparticleevtinfofiller.cc:567
 hparticleevtinfofiller.cc:568
 hparticleevtinfofiller.cc:569
 hparticleevtinfofiller.cc:570
 hparticleevtinfofiller.cc:571
 hparticleevtinfofiller.cc:572
 hparticleevtinfofiller.cc:573
 hparticleevtinfofiller.cc:574
 hparticleevtinfofiller.cc:575
 hparticleevtinfofiller.cc:576
 hparticleevtinfofiller.cc:577
 hparticleevtinfofiller.cc:578
 hparticleevtinfofiller.cc:579
 hparticleevtinfofiller.cc:580
 hparticleevtinfofiller.cc:581
 hparticleevtinfofiller.cc:582
 hparticleevtinfofiller.cc:583
 hparticleevtinfofiller.cc:584
 hparticleevtinfofiller.cc:585
 hparticleevtinfofiller.cc:586
 hparticleevtinfofiller.cc:587
 hparticleevtinfofiller.cc:588
 hparticleevtinfofiller.cc:589
 hparticleevtinfofiller.cc:590
 hparticleevtinfofiller.cc:591
 hparticleevtinfofiller.cc:592
 hparticleevtinfofiller.cc:593
 hparticleevtinfofiller.cc:594
 hparticleevtinfofiller.cc:595
 hparticleevtinfofiller.cc:596
 hparticleevtinfofiller.cc:597
 hparticleevtinfofiller.cc:598
 hparticleevtinfofiller.cc:599
 hparticleevtinfofiller.cc:600
 hparticleevtinfofiller.cc:601
 hparticleevtinfofiller.cc:602
 hparticleevtinfofiller.cc:603
 hparticleevtinfofiller.cc:604
 hparticleevtinfofiller.cc:605
 hparticleevtinfofiller.cc:606
 hparticleevtinfofiller.cc:607
 hparticleevtinfofiller.cc:608
 hparticleevtinfofiller.cc:609
 hparticleevtinfofiller.cc:610
 hparticleevtinfofiller.cc:611
 hparticleevtinfofiller.cc:612
 hparticleevtinfofiller.cc:613
 hparticleevtinfofiller.cc:614
 hparticleevtinfofiller.cc:615
 hparticleevtinfofiller.cc:616
 hparticleevtinfofiller.cc:617
 hparticleevtinfofiller.cc:618
 hparticleevtinfofiller.cc:619
 hparticleevtinfofiller.cc:620
 hparticleevtinfofiller.cc:621
 hparticleevtinfofiller.cc:622
 hparticleevtinfofiller.cc:623
 hparticleevtinfofiller.cc:624
 hparticleevtinfofiller.cc:625
 hparticleevtinfofiller.cc:626
 hparticleevtinfofiller.cc:627
 hparticleevtinfofiller.cc:628
 hparticleevtinfofiller.cc:629
 hparticleevtinfofiller.cc:630
 hparticleevtinfofiller.cc:631
 hparticleevtinfofiller.cc:632
 hparticleevtinfofiller.cc:633
 hparticleevtinfofiller.cc:634
 hparticleevtinfofiller.cc:635
 hparticleevtinfofiller.cc:636
 hparticleevtinfofiller.cc:637
 hparticleevtinfofiller.cc:638
 hparticleevtinfofiller.cc:639
 hparticleevtinfofiller.cc:640
 hparticleevtinfofiller.cc:641
 hparticleevtinfofiller.cc:642
 hparticleevtinfofiller.cc:643
 hparticleevtinfofiller.cc:644
 hparticleevtinfofiller.cc:645
 hparticleevtinfofiller.cc:646
 hparticleevtinfofiller.cc:647
 hparticleevtinfofiller.cc:648
 hparticleevtinfofiller.cc:649
 hparticleevtinfofiller.cc:650
 hparticleevtinfofiller.cc:651
 hparticleevtinfofiller.cc:652
 hparticleevtinfofiller.cc:653
 hparticleevtinfofiller.cc:654
 hparticleevtinfofiller.cc:655
 hparticleevtinfofiller.cc:656
 hparticleevtinfofiller.cc:657
 hparticleevtinfofiller.cc:658
 hparticleevtinfofiller.cc:659
 hparticleevtinfofiller.cc:660
 hparticleevtinfofiller.cc:661
 hparticleevtinfofiller.cc:662
 hparticleevtinfofiller.cc:663
 hparticleevtinfofiller.cc:664
 hparticleevtinfofiller.cc:665
 hparticleevtinfofiller.cc:666
 hparticleevtinfofiller.cc:667
 hparticleevtinfofiller.cc:668
 hparticleevtinfofiller.cc:669
 hparticleevtinfofiller.cc:670
 hparticleevtinfofiller.cc:671
 hparticleevtinfofiller.cc:672
 hparticleevtinfofiller.cc:673
 hparticleevtinfofiller.cc:674
 hparticleevtinfofiller.cc:675
 hparticleevtinfofiller.cc:676
 hparticleevtinfofiller.cc:677
 hparticleevtinfofiller.cc:678
 hparticleevtinfofiller.cc:679
 hparticleevtinfofiller.cc:680
 hparticleevtinfofiller.cc:681
 hparticleevtinfofiller.cc:682
 hparticleevtinfofiller.cc:683
 hparticleevtinfofiller.cc:684
 hparticleevtinfofiller.cc:685
 hparticleevtinfofiller.cc:686
 hparticleevtinfofiller.cc:687
 hparticleevtinfofiller.cc:688
 hparticleevtinfofiller.cc:689
 hparticleevtinfofiller.cc:690
 hparticleevtinfofiller.cc:691
 hparticleevtinfofiller.cc:692
 hparticleevtinfofiller.cc:693
 hparticleevtinfofiller.cc:694
 hparticleevtinfofiller.cc:695
 hparticleevtinfofiller.cc:696
 hparticleevtinfofiller.cc:697
 hparticleevtinfofiller.cc:698
 hparticleevtinfofiller.cc:699
 hparticleevtinfofiller.cc:700
 hparticleevtinfofiller.cc:701
 hparticleevtinfofiller.cc:702
 hparticleevtinfofiller.cc:703
 hparticleevtinfofiller.cc:704
 hparticleevtinfofiller.cc:705
 hparticleevtinfofiller.cc:706
 hparticleevtinfofiller.cc:707
 hparticleevtinfofiller.cc:708
 hparticleevtinfofiller.cc:709
 hparticleevtinfofiller.cc:710
 hparticleevtinfofiller.cc:711
 hparticleevtinfofiller.cc:712
 hparticleevtinfofiller.cc:713
 hparticleevtinfofiller.cc:714
 hparticleevtinfofiller.cc:715
 hparticleevtinfofiller.cc:716
 hparticleevtinfofiller.cc:717
 hparticleevtinfofiller.cc:718
 hparticleevtinfofiller.cc:719
 hparticleevtinfofiller.cc:720
 hparticleevtinfofiller.cc:721
 hparticleevtinfofiller.cc:722
 hparticleevtinfofiller.cc:723
 hparticleevtinfofiller.cc:724
 hparticleevtinfofiller.cc:725
 hparticleevtinfofiller.cc:726
 hparticleevtinfofiller.cc:727
 hparticleevtinfofiller.cc:728
 hparticleevtinfofiller.cc:729
 hparticleevtinfofiller.cc:730
 hparticleevtinfofiller.cc:731
 hparticleevtinfofiller.cc:732
 hparticleevtinfofiller.cc:733
 hparticleevtinfofiller.cc:734
 hparticleevtinfofiller.cc:735
 hparticleevtinfofiller.cc:736
 hparticleevtinfofiller.cc:737
 hparticleevtinfofiller.cc:738
 hparticleevtinfofiller.cc:739
 hparticleevtinfofiller.cc:740
 hparticleevtinfofiller.cc:741
 hparticleevtinfofiller.cc:742
 hparticleevtinfofiller.cc:743
 hparticleevtinfofiller.cc:744
 hparticleevtinfofiller.cc:745
 hparticleevtinfofiller.cc:746
 hparticleevtinfofiller.cc:747
 hparticleevtinfofiller.cc:748
 hparticleevtinfofiller.cc:749
 hparticleevtinfofiller.cc:750
 hparticleevtinfofiller.cc:751
 hparticleevtinfofiller.cc:752
 hparticleevtinfofiller.cc:753
 hparticleevtinfofiller.cc:754
 hparticleevtinfofiller.cc:755
 hparticleevtinfofiller.cc:756
 hparticleevtinfofiller.cc:757
 hparticleevtinfofiller.cc:758
 hparticleevtinfofiller.cc:759
 hparticleevtinfofiller.cc:760
 hparticleevtinfofiller.cc:761
 hparticleevtinfofiller.cc:762
 hparticleevtinfofiller.cc:763
 hparticleevtinfofiller.cc:764
 hparticleevtinfofiller.cc:765
 hparticleevtinfofiller.cc:766
 hparticleevtinfofiller.cc:767
 hparticleevtinfofiller.cc:768
 hparticleevtinfofiller.cc:769
 hparticleevtinfofiller.cc:770
 hparticleevtinfofiller.cc:771
 hparticleevtinfofiller.cc:772
 hparticleevtinfofiller.cc:773
 hparticleevtinfofiller.cc:774
 hparticleevtinfofiller.cc:775
 hparticleevtinfofiller.cc:776
 hparticleevtinfofiller.cc:777
 hparticleevtinfofiller.cc:778
 hparticleevtinfofiller.cc:779
 hparticleevtinfofiller.cc:780
 hparticleevtinfofiller.cc:781
 hparticleevtinfofiller.cc:782
 hparticleevtinfofiller.cc:783
 hparticleevtinfofiller.cc:784
 hparticleevtinfofiller.cc:785
 hparticleevtinfofiller.cc:786
 hparticleevtinfofiller.cc:787
 hparticleevtinfofiller.cc:788
 hparticleevtinfofiller.cc:789
 hparticleevtinfofiller.cc:790
 hparticleevtinfofiller.cc:791
 hparticleevtinfofiller.cc:792
 hparticleevtinfofiller.cc:793
 hparticleevtinfofiller.cc:794
 hparticleevtinfofiller.cc:795
 hparticleevtinfofiller.cc:796
 hparticleevtinfofiller.cc:797
 hparticleevtinfofiller.cc:798
 hparticleevtinfofiller.cc:799
 hparticleevtinfofiller.cc:800
 hparticleevtinfofiller.cc:801
 hparticleevtinfofiller.cc:802
 hparticleevtinfofiller.cc:803
 hparticleevtinfofiller.cc:804
 hparticleevtinfofiller.cc:805
 hparticleevtinfofiller.cc:806
 hparticleevtinfofiller.cc:807
 hparticleevtinfofiller.cc:808
 hparticleevtinfofiller.cc:809
 hparticleevtinfofiller.cc:810
 hparticleevtinfofiller.cc:811
 hparticleevtinfofiller.cc:812
 hparticleevtinfofiller.cc:813
 hparticleevtinfofiller.cc:814
 hparticleevtinfofiller.cc:815
 hparticleevtinfofiller.cc:816
 hparticleevtinfofiller.cc:817
 hparticleevtinfofiller.cc:818
 hparticleevtinfofiller.cc:819
 hparticleevtinfofiller.cc:820
 hparticleevtinfofiller.cc:821
 hparticleevtinfofiller.cc:822
 hparticleevtinfofiller.cc:823
 hparticleevtinfofiller.cc:824
 hparticleevtinfofiller.cc:825
 hparticleevtinfofiller.cc:826
 hparticleevtinfofiller.cc:827
 hparticleevtinfofiller.cc:828