#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; 
    fMetaNPILEUPCut  = 5;
    fMetaPILEUPCut   =  60;
    fMdcPILEUPCut[0] = 200;     
    fMdcPILEUPCut[1] = 200;     
    fMdcPILEUPCut[2] = 400;     
    fMdcPILEUPCut[3] = 400;     
    fMdcPILEUPNCut   = 5*7;     
    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;
    
    fvetoMin = -15;
    fvetoMax =  15;
    
    fminStartMeta = 80;
    fmaxStartMeta = 350;
    fthreshMeta   = 4;
    fwindowMeta   = 5;
    foffsetMeta   = 7;
    
    fminStartVeto = 15;
    fmaxStartVeto = 350;
    fwindowVeto   = 2.;
    
    
    fFlashEventCut   = 20; 
    
    fDeltaElEventCut = 100;
    if(beamtime == "jul14" || beamtime == "aug14") { 
	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; 
	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;
    
    Int_t doErrorMessage = 0 ; 
    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()");
    
    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;   
    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;
    
    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]; 
    Int_t wiresRaw[6][4][6][220]; 
    Int_t wiresPileup[6][4][6][220]; 
    Int_t flashWires[6][4];          
    Int_t deltaElWires[6][4];        
    
    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;
		}
	    }
	}
    }
    
    
    
    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] ++;
	    }
	}
    }
    
    
    
    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){ 
		    if(calsim->getStatus1()>0){
			wires[s][m][l][c] ++;
		    }
		} else {
		    wires[s][m][l][c] ++;
		}
	    }
	}
    }
    
    
    
    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] ++;
		    }
		}
	    }
	}
     }
     
     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; 
    else {
	HCategory* kinecat = HCategoryManager::getCategory(catGeantKine,-1); 
	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){ 
	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(); }
		
                
		if(kGOODTRIGGER && kGOODCLUSTVERTEX && kGOODSTART){  
		    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()];
	    }
	}
	
        
	if(ctNCand[6]>0){ 
	    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]);
            }
	}
	
    } 
    
    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 );     
	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