ROOT logo
//_HADES_CLASS_DESCRIPTION 
//_HADES_CLASS_DESCRIPTION 
////////////////////////////////////////////////////////////////////////////////
//
//  HParticleConstants
//
//  util class for displaying defined constants
//
////////////////////////////////////////////////////////////////////////////////

#include "hparticleconstants.h"

#include "hparticledef.h"
#include "walldef.h"
#include "tofdef.h"
#include "hstartdef.h"
#include "rpcdef.h"
#include "richdef.h"
#include "hpiontrackerdef.h"
#include "hmdctrackgdef.h"
#include "hmdctrackddef.h"
#include "hkaldef.h"
#include "hmdcdef.h"
#include "showerdef.h"
#include "emcdef.h"
#include "hgeantdef.h"
#include "haddef.h"
#include "htrbnetdef.h"

#include "TError.h"

#include <string.h>
#include <iostream>
#include <iomanip>
using namespace std;
using namespace Particle;

ClassImp(HParticleConstants)
// -----------------------------------------------------------------------------

// -----------------------------------------------------------------------------
Bool_t HParticleConstants::addConstant(Long_t id, TString name, Int_t form,TString space,TString descr)
{
    if(nameToProp.find(name) == nameToProp.end() ){ // name was not used before
	constantproperties prop;
	prop.fill(id,name,form,space,descr);
	nameToProp[name] = prop;
        vnames.push_back(name);
	return kTRUE;
    } else {
	::Error("HParticleConstants::addConstant()","name was used already before!");
	return kFALSE;
    }
}

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

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

void HParticleConstants::clearConstants()
{
    // clear all particles in data base
    nameToProp.clear();
    vnames.clear();
}

// -----------------------------------------------------------------------------
vector<TString> HParticleConstants::initConstantNamesV(){
    vector<TString> n;
    return n;
}

map<TString,constantproperties> HParticleConstants::initConstantNames()
{
    // to be called only for init of static vectors

    //clearConstants();
    map<TString ,constantproperties> nameToPropL;


    //start categories
    addConstant(catStart2Raw ,"catStart2Raw",0,"libStart","");
    addConstant(catStart2Cal ,"catStart2Cal",0,"libStart","");
    addConstant(catStart2Hit ,"catStart2Hit",0,"libStart","");
    addConstant(catTBoxChan  ,"catTBoxChan" ,0,"libStart","");

    //rich categories
    addConstant(catRichRaw    ,"catRichRaw"    ,0,"libRich","");
    addConstant(catRichCal    ,"catRichCal"    ,0,"libRich","");
    addConstant(catRichHit    ,"catRichHit"    ,0,"libRich","");
    addConstant(catRichHitHdr ,"catRichHitHdr" ,0,"libRich","");
    addConstant(catRichDirClus,"catRichDirClus",0,"libRich","");
    addConstant(catRichTrack  ,"catRichTrack"  ,0,"libRich","");
    addConstant(catRich700Raw ,"catRich700Raw" ,0,"libRich","");

    //mdc categories
    addConstant(catMdcRaw           ,"catMdcRaw"           ,0,"libMdc","");
    addConstant(catMdcHit           ,"catMdcHit"           ,0,"libMdc","");
    addConstant(catMdcCal1          ,"catMdcCal1"          ,0,"libMdc","");
    addConstant(catMdcCal2          ,"catMdcCal2"          ,0,"libMdc","");
    addConstant(catMdcGeantCell     ,"catMdcGeantCell"     ,0,"libMdc","");
    addConstant(catMdcSeg           ,"catMdcSeg"           ,0,"libMdc","");
    addConstant(catMdcTrack         ,"catMdcTrack"         ,0,"libMdc","");
    addConstant(catMdcRawEventHeader,"catMdcRawEventHeader",0,"libMdc","");
    addConstant(catMdcTrkCand       ,"catMdcTrkCand"       ,0,"libMdc","");
    addConstant(catMdcDataWord      ,"catMdcDataWord"      ,0,"libMdc","");
    addConstant(catMdcSlope         ,"catMdcSlope"         ,0,"libMdc","");
    addConstant(catMdcRawCor        ,"catMdcRawCor"        ,0,"libMdc","");
    addConstant(catMdcHitIdeal      ,"catMdcHitIdeal"      ,0,"libMdc","");
    addConstant(catMdcSegIdeal      ,"catMdcSegIdeal"      ,0,"libMdc","");
    addConstant(catMdcTrkCandIdeal  ,"catMdcTrkCandIdeal"  ,0,"libMdc","");
    addConstant(catMdcOepStatus     ,"catMdcOepStatus"     ,0,"libMdc","");

    //mdctrackd categories
    addConstant(catMdcClus    ,"catMdcClus"   ,0,"libMdcTrackD","");
    addConstant(catMdcClusFit ,"catMdcClusFit",0,"libMdcTrackD","");
    addConstant(catMdcWireFit ,"catMdcWireFit",0,"libMdcTrackD","");
    addConstant(catMdcClusInf ,"catMdcClusInf",0,"libMdcTrackD","");

    //mdctrackg categories
    addConstant(catBaseTrack     ,"catBaseTrack"    ,0,"libMdcTrackG","");
    addConstant(catSplineTrack   ,"catSplineTrack"  ,0,"libMdcTrackG","");
    addConstant(catMetaMatch     ,"catMetaMatch"    ,0,"libMdcTrackG","");
    addConstant(catKickTrack123B ,"catKickTrack123B",0,"libMdcTrackG","");
    addConstant(catRKTrackB      ,"catRKTrackB"     ,0,"libMdcTrackG","");
    addConstant(catSplinePar     ,"catSplinePar"    ,0,"libMdcTrackG","");
    addConstant(catKalTrack      ,"catKalTrack"     ,0,"libMdcTrackG","");
    addConstant(catKalSite       ,"catKalSite"      ,0,"libMdcTrackG","");
    addConstant(catKalHitWire    ,"catKalHitWire"   ,0,"libMdcTrackG","");
    addConstant(catKalHit2d      ,"catKalHit2d"     ,0,"libMdcTrackG","");


    //tof categories
    addConstant(catTofRaw     ,"catTofRaw"    ,0,"libTof","");
    addConstant(catTofHit     ,"catTofHit"    ,0,"libTof","");
    addConstant(catTofCal     ,"catTofCal"    ,0,"libTof","");
    addConstant(catTofCluster ,"catTofCluster",0,"libTof","");
    addConstant(catTofRawTmp  ,"catTofRawTmp" ,0,"libTof","");
    addConstant(catTofHitTmp  ,"catTofHitTmp" ,0,"libTof","");

    //rpc categories
    addConstant(catRpcRaw     ,"catRpcRaw"    ,0,"libRpc","");
    addConstant(catRpcCal     ,"catRpcCal"    ,0,"libRpc","");
    addConstant(catRpcHit     ,"catRpcHit"    ,0,"libRpc","");
    addConstant(catRpcCluster ,"catRpcCluster",0,"libRpc","");
    addConstant(catRpcCalTmp  ,"catRpcCalTmp" ,0,"libRpc","");

    //shower categories
    addConstant(catShowerRaw         ,"catShowerRaw"        ,0,"libShower","");
    addConstant(catShowerHit         ,"catShowerHit"        ,0,"libShower","");
    addConstant(catShowerCal         ,"catShowerCal"        ,0,"libShower","");
    addConstant(catShowerGeantWire   ,"catShowerGeantWire"  ,0,"libShower","");
    addConstant(catShowerPID         ,"catShowerPID"        ,0,"libShower","");
    addConstant(catShowerTrack       ,"catShowerTrack"      ,0,"libShower","");
    addConstant(catShowerRawMatr     ,"catShowerRawMatr"    ,0,"libShower","");
    addConstant(catShowerHitHdr      ,"catShowerHitHdr"     ,0,"libShower","");
    addConstant(catShowerPIDTrack    ,"catShowerPIDTrack"   ,0,"libShower","");
    addConstant(catShowerHitTof      ,"catShowerHitTof"     ,0,"libShower","");
    addConstant(catShowerHitTofTrack ,"catShowerHitTofTrack",0,"libShower","");


    //emc categories
    addConstant(catEmcRaw     ,"catEmcRaw"    ,0,"libEmc","");
    addConstant(catEmcCal     ,"catEmcCal"    ,0,"libEmc","");
    addConstant(catEmcCalQA   ,"catEmcCalQA"  ,0,"libEmc","");
    addConstant(catEmcCluster ,"catEmcCluster",0,"libEmc","");


    //wall catergories
    addConstant(catWallRaw        ,"catWallRaw"       ,0,"libWall","");
    addConstant(catWallCal        ,"catWallCal"       ,0,"libWall","");
    addConstant(catWallOneHit     ,"catWallOneHit"    ,0,"libWall","");
    addConstant(catWallHit        ,"catWallHit"       ,0,"libWall","");
    addConstant(catWallEventPlane ,"catWallEventPlane",0,"libWall","");

    //piontracker categories
    addConstant(catPionTrackerRaw   ,"catPionTrackerRaw"  ,0,"libPionTracker","");
    addConstant(catPionTrackerCal   ,"catPionTrackerCal"  ,0,"libPionTracker","");
    addConstant(catPionTrackerHit   ,"catPionTrackerHit"  ,0,"libPionTracker","");
    addConstant(catPionTrackerTrack ,"catPionTrackerTrack",0,"libPionTracker","");

    //geant categories
    addConstant(catGeantHeader    ,"catGeantHeader"   ,0,"libHydra","");
    addConstant(catGeantKine      ,"catGeantKine"     ,0,"libHydra","");
    addConstant(catMdcGeantRaw    ,"catMdcGeantRaw"   ,0,"libHydra","");
    addConstant(catRichGeantRaw   ,"catRichGeantRaw"  ,0,"libHydra","");
    addConstant(catShowerGeantRaw ,"catShowerGeantRaw",0,"libHydra","");
    addConstant(catTofGeantRaw    ,"catTofGeantRaw"   ,0,"libHydra","");
    addConstant(catStartGeantRaw  ,"catStartGeantRaw" ,0,"libHydra","");
    addConstant(catWallGeantRaw   ,"catWallGeantRaw"  ,0,"libHydra","");
    addConstant(catRpcGeantRaw    ,"catRpcGeantRaw"   ,0,"libHydra","");
    addConstant(catEmcGeantRaw    ,"catEmcGeantRaw"   ,0,"libHydra","");

    addConstant(catMdc         ,"catMdc"        ,0,"libHydra","");
    addConstant(catRich        ,"catRich"       ,0,"libHydra","");
    addConstant(catShower      ,"catShower"     ,0,"libHydra","");
    addConstant(catTof         ,"catTof"        ,0,"libHydra","");
    addConstant(catStart       ,"catStart"      ,0,"libHydra","");
    addConstant(catTofino      ,"catTofino"     ,0,"libHydra","");
    addConstant(catWall        ,"catWall"       ,0,"libHydra","");
    addConstant(catHodo        ,"catHodo"       ,0,"libHydra","");
    addConstant(catSimul       ,"catSimul"      ,0,"libHydra","");
    addConstant(catRpc         ,"catRpc"        ,0,"libHydra","");
    addConstant(catEmc         ,"catEmc"        ,0,"libHydra","");
    addConstant(catPionTracker ,"catPionTracker",0,"libHydra","");
    addConstant(catMatchU      ,"catMatchU"     ,0,"libHydra","");
    addConstant(catTracks      ,"catTracks"     ,0,"libHydra","");
    addConstant(catPhyAna      ,"catPhyAna"     ,0,"libHydra","");
    addConstant(catPairs       ,"catPairs"      ,0,"libHydra","");
    addConstant(catParticle    ,"catParticle"   ,0,"libHydra","");
    addConstant(catTrbNet      ,"catTrbNet"     ,0,"libHydra","");
    addConstant(catFlex        ,"catFlex"       ,0,"libHydra","");
    addConstant(catTrack       ,"catTrack"      ,0,"libHydra","");
    addConstant(catInvalid     ,"catInvalid"    ,0,"libHydra","");


    addConstant(catParticleEvtInfo   ,"catParticleEvtInfo"   ,0,"libParticle","");
    addConstant(catParticleCal       ,"catParticleCal"       ,0,"libParticle","");
    addConstant(catParticlePair      ,"catParticlePair"      ,0,"libParticle","");
    addConstant(catParticleMdc       ,"catParticleMdc"       ,0,"libParticle","");
    addConstant(catParticleBtRing    ,"catParticleBtRing"    ,0,"libParticle","");
    addConstant(catParticleBtRingInfo,"catParticleBtRingInfo",0,"libParticle","");




    // hydra
    addConstant(kSkipEvent     ,"kSkipEvent"    ,0,"libHydra","Return value for HTask to signal skipping full event");

    //kalman
    addConstant(Kalman::kSecCoord        ,"kSecCoord"       ,0,"Kalman::coordSys","Sector coordinate system");
    addConstant(Kalman::kLayCoord        ,"kLayCoord"       ,0,"Kalman::coordSys","Virtual layer coordinate system");
    addConstant(Kalman::kKalConv         ,"kKalConv"        ,0,"Kalman::filtMethod","Math methods for matrix opererations");
    addConstant(Kalman::kKalJoseph       ,"kKalJoseph"      ,0,"Kalman::filtMethod","Math methods for matrix opererations");
    addConstant(Kalman::kKalUD           ,"kKalUD"          ,0,"Kalman::filtMethod","Math methods for matrix opererations");
    addConstant(Kalman::kKalSeq          ,"kKalSeq"         ,0,"Kalman::filtMethod","Math methods for matrix opererations");
    addConstant(Kalman::kKalSwer         ,"kKalSwer"        ,0,"Kalman::filtMethod","Math methods for matrix opererations");

    addConstant(Kalman::kWireHit         ,"kWireHit"        ,0,"Kalman::kalHitTypes","Work with drift chamber hits");
    addConstant(Kalman::kSegHit          ,"kSegHit"         ,0,"Kalman::kalHitTypes","Work with 2D segment hits");

    addConstant(Kalman::kPredicted       ,"kPredicted"      ,0,"Kalman::kalFilterTypes","Kalman state");
    addConstant(Kalman::kFiltered        ,"kFiltered"       ,0,"Kalman::kalFilterTypes","Kalman state");
    addConstant(Kalman::kSmoothed        ,"kSmoothed"       ,0,"Kalman::kalFilterTypes","Kalman state");
    addConstant(Kalman::kInvFiltered     ,"kInvFiltered"    ,0,"Kalman::kalFilterTypes","Kalman state");

    addConstant(Kalman::kIdxX0           ,"kIdxX0"          ,0,"Kalman::kalStateIdx","TrackState variables");
    addConstant(Kalman::kIdxY0           ,"kIdxY0"          ,0,"Kalman::kalStateIdx","TrackState variables");
    addConstant(Kalman::kIdxTanPhi       ,"kIdxTanPhi"      ,0,"Kalman::kalStateIdx","TrackState variables");
    addConstant(Kalman::kIdxTanTheta     ,"kIdxTanTheta"    ,0,"Kalman::kalStateIdx","TrackState variables");
    addConstant(Kalman::kIdxQP           ,"kIdxQP"          ,0,"Kalman::kalStateIdx","TrackState variables");
    addConstant(Kalman::kIdxZ0           ,"kIdxZ0"          ,0,"Kalman::kalStateIdx","TrackState variables");

    addConstant(Kalman::kNoRot           ,"kNoRot"          ,0,"Kalman::kalRotateOptions","Do not Rotate coordinate so that it points in inital track direction");
    addConstant(Kalman::kVarRot          ,"kVarRot"         ,0,"Kalman::kalRotateOptions","Rotate coordinate so that it points in inital track direction");

    addConstant(Kalman::kMatIdxA         ,"kMatIdxA"        ,0,"Kalman::matIdx","Material property");
    addConstant(Kalman::kMatIdxZ         ,"kMatIdxZ"        ,0,"Kalman::matIdx","Material property");
    addConstant(Kalman::kMatIdxDensity   ,"kMatIdxDensity"  ,0,"Kalman::matIdx","Material property");
    addConstant(Kalman::kMatIdxExEner    ,"kMatIdxExEner"   ,0,"Kalman::matIdx","Material property");
    addConstant(Kalman::kMatIdxRadLength ,"kMatIdxRadLength",0,"Kalman::matIdx","Material property");


    //Particle::eSelMeta
    addConstant(kNoUse    ,"kNoUse"    ,0,"Particle::eSelMeta","Selected META hit type in HParticleCand");
    addConstant(kTofClst  ,"kTofClst"  ,0,"Particle::eSelMeta","Selected META hit type in HParticleCand");
    addConstant(kTofHit1  ,"kTofHit1"  ,0,"Particle::eSelMeta","Selected META hit type in HParticleCand");
    addConstant(kTofHit2  ,"kTofHit2"  ,0,"Particle::eSelMeta","Selected META hit type in HParticleCand");
    addConstant(kRpcClst  ,"kRpcClst"  ,0,"Particle::eSelMeta","Selected META hit type in HParticleCand");
    addConstant(kShowerHit,"kShowerHit",0,"Particle::eSelMeta","Selected META hit type in HParticleCand");
    addConstant(kEmcClst  ,"kEmcClst"  ,0,"Particle::eSelMeta","Selected META hit type in HParticleCand");


    //Particle::eDetBits
    addConstant(kIsNotSet     ,"kIsNotSet"    ,1,"Particle::eDetBits","This object does not contain valid data");
    addConstant(kIsInRICHIPU  ,"kIsInRICHIPU" ,1,"Particle::eDetBits","1    RICH IPU has seen this trackid");
    addConstant(kIsInOuterMDC ,"kIsInOuterMDC",1,"Particle::eDetBits","2    Outer Mdc has seen this trackid");
    addConstant(kIsInRICH     ,"kIsInRICH"    ,1,"Particle::eDetBits","4    RICH has seen this trackid");
    addConstant(kIsInInnerMDC ,"kIsInInnerMDC",1,"Particle::eDetBits","8    Inner Mdc has seen this trackid");
    addConstant(kIsInSHOWER   ,"kIsInSHOWER"  ,1,"Particle::eDetBits","16   Shower has seen this trackid");
    addConstant(kIsInEMC      ,"kIsInEMC"     ,1,"Particle::eDetBits","16   EMC has seen this trackid (SHOWER and EMC will not be used together)");
    addConstant(kIsInTOF      ,"kIsInTOF"     ,1,"Particle::eDetBits","32   TOF has seen this trackid");
    addConstant(kIsInRPC      ,"kIsInRPC"     ,1,"Particle::eDetBits","64   Rpc has seen this trackid");
    addConstant(kIsInMETA     ,"kIsInMETA"    ,1,"Particle::eDetBits","128  One of the Meta dets has seen this trackid");
    addConstant(kIsGhost      ,"kIsGhost"     ,1,"Particle::eDetBits","256  Tracking Ghost");
    addConstant(kIsInnerGhost ,"kIsInnerGhost",1,"Particle::eDetBits","512  Tracking Ghost in inner MDC");
    addConstant(kIsOuterGhost ,"kIsOuterGhost",1,"Particle::eDetBits","1024 Tracking Ghost in outer MDC");

    //Particle::eMatching
    addConstant(kIsNoMatch ,"kIsNoMatch",1,"Particle::eMatching","This object does not contain valid data");
    addConstant(kIsRICHMDC ,"kIsRICHMDC",1,"Particle::eMatching","1 RICH MDC matching");
    addConstant(kIsRICHRK  ,"kIsRICHRK" ,1,"Particle::eMatching","2 RICH RK matching");

    //Particle::eVertex
    addConstant(kVertexCluster  ,"kVertexCluster"  ,0,"Particle::eVertex","vertex from cluster finder");
    addConstant(kVertexSegment  ,"kVertexSegment"  ,0,"Particle::eVertex","vertex from fitted inner segments");
    addConstant(kVertexParticle ,"kVertexParticle" ,0,"Particle::eVertex","vertex from reconstructed particle candidates");
    addConstant(kVertexUser     ,"kVertexUser"     ,0,"Particle::eVertex","vertex provided by user");


    //Particle::eMomReco
    addConstant(kMomSpline ,"kMomSpline",0,"Particle::eMomReco","from spline");
    addConstant(kMomRK     ,"kMomRK"    ,0,"Particle::eMomReco","from runge kutta");
    addConstant(kMomKalman ,"kMomKalman",0,"Particle::eMomReco","from kalman");

    //Particle::ePair
    addConstant(kIsUS    ,"kIsUS"   ,0,"Particle::ePair","This pair is unlike sign");
    addConstant(kIsLSPos ,"kIsLSPos",0,"Particle::ePair","This pair is like sign, both positive");
    addConstant(kIsLSNeg ,"kIsLSNeg",0,"Particle::ePair","This pair is like sign, both negative");


    //Particle::eFlagBits
    addConstant(kIsDoubleHitRICH          ,"kIsDoubleHitRICH"          ,0,"Particle::eFlagBits","RICH hit has been used more than once in event");
    addConstant(kIsDoubleHitInnerMDC      ,"kIsDoubleHitInnerMDC"      ,0,"Particle::eFlagBits","Inner MDC seg has been used more than once in event");
    addConstant(kIsDoubleHitOuterMDC      ,"kIsDoubleHitOuterMDC"      ,0,"Particle::eFlagBits","Outer MDC seg has been used more than once in event");
    addConstant(kIsDoubleHitMETA          ,"kIsDoubleHitMETA"          ,0,"Particle::eFlagBits","META HIT has been used more than once in event");
    addConstant(kIsBestHitRICH            ,"kIsBestHitRICH"            ,0,"Particle::eFlagBits","Hit exists");
    addConstant(kIsBestHitInnerMDC        ,"kIsBestHitInnerMDC"        ,0,"Particle::eFlagBits","(by chi2,  chi2 >= 0 )");
    addConstant(kIsBestHitOuterMDC        ,"kIsBestHitOuterMDC"        ,0,"Particle::eFlagBits","(by chi2 , chi2 >= 0 )");
    addConstant(kIsBestHitMETA            ,"kIsBestHitMETA"            ,0,"Particle::eFlagBits","(by RKMETA match quality)");
    addConstant(kIsBestRK                 ,"kIsBestRK"                 ,0,"Particle::eFlagBits","(by RK chi2, none fitted outer segments with lower priority)");
    addConstant(kIsBestRKRKMETA           ,"kIsBestRKRKMETA"           ,0,"Particle::eFlagBits","(by RK chi2 * RK META match quality)");
    addConstant(kIsBestRKRKMETARadius     ,"kIsBestRKRKMETARadius"     ,0,"Particle::eFlagBits","(by RK chi2 * RK META match radius)");
    addConstant(kIsBestUser               ,"kIsBestUser"               ,0,"Particle::eFlagBits","(user function)");
    addConstant(kIsAcceptedHitRICH        ,"kIsAcceptedHitRICH"        ,0,"Particle::eFlagBits","Hit exists");
    addConstant(kIsAcceptedHitRICHMDC     ,"kIsAcceptedHitRICHMDC"     ,0,"Particle::eFlagBits","RICH hit + ring correlation segment");
    addConstant(kIsAcceptedHitInnerMDC    ,"kIsAcceptedHitInnerMDC"    ,0,"Particle::eFlagBits","needs inner MDC chi2 >= 0");
    addConstant(kIsAcceptedHitOuterMDC    ,"kIsAcceptedHitOuterMDC"    ,0,"Particle::eFlagBits","needs outer MDC chi2 >= 0");
    addConstant(kIsAcceptedHitMETA        ,"kIsAcceptedHitMETA"        ,0,"Particle::eFlagBits","needs Meta Hit");
    addConstant(kIsAcceptedRKMETA         ,"kIsAcceptedRKMETA"         ,0,"Particle::eFlagBits","needs RK chi2 >= 0 + Meta hit");
    addConstant(kIsAcceptedRKRICH         ,"kIsAcceptedRKRICH"         ,0,"Particle::eFlagBits","needs RK chi2 >= 0 + RICH hit + ring correlation after RK");
    addConstant(kIsAcceptedRK             ,"kIsAcceptedRK"             ,0,"Particle::eFlagBits","needs RK chi2 >= 0");
    addConstant(kIsAcceptedRKRKMETA       ,"kIsAcceptedRKRKMETA"       ,0,"Particle::eFlagBits","needs RK chi2 >= 0 + Meta hit");
    addConstant(kIsAcceptedRKRKMETARadius ,"kIsAcceptedRKRKMETARadius" ,0,"Particle::eFlagBits","needs RK chi2 >= 0 + Meta hit");
    addConstant(kIsAcceptedUser           ,"kIsAcceptedUser"           ,0,"Particle::eFlagBits","needs RK chi2 >= 0 + Meta hit");
    addConstant(kIsLepton                 ,"kIsLepton"                 ,0,"Particle::eFlagBits","mark the selected leptons");
    addConstant(kIsUsed                   ,"kIsUsed"                   ,0,"Particle::eFlagBits","mark the object as arleady used");
    addConstant(kIsRejected               ,"kIsRejected"               ,0,"Particle::eFlagBits","mark the object as rejected");

    //Particle::ERichMatch
    addConstant(kUseRICHIndexSorter         ,"kUseRICHIndexSorter"         ,0,"Particle::ERichMatch","require RICH valid index");
    addConstant(kUseRKRICHCorrelationSorter ,"kUseRKRICHCorrelationSorter" ,0,"Particle::ERichMatch","require RK-RICH correlation (from HPidTrackCand)");
    addConstant(kUseRKRICHWindowSorter      ,"kUseRKRICHWindowSorter"      ,0,"Particle::ERichMatch","require RK-RICH matching inside +- window");

    //Particle::ESelect
    addConstant(kIsLeptonSorter ,"kIsLeptonSorter" ,0,"Particle::ESelect","run from selectLepton()");
    addConstant(kIsHadronSorter ,"kIsHadronSorter" ,0,"Particle::ESelect","run from selectHadron()");

    //Particle::ESwitch
    addConstant(kIsIndexRICHSorter          ,"kIsIndexRICHSorter"          ,0,"Particle::ESwitch","");
    addConstant(kIsIndexInnerMDCSorter      ,"kIsIndexInnerMDCSorter"      ,0,"Particle::ESwitch","");
    addConstant(kIsIndexOuterMDCSorter      ,"kIsIndexOuterMDCSorter"      ,0,"Particle::ESwitch","");
    addConstant(kIsIndexTOFSorter           ,"kIsIndexTOFSorter"           ,0,"Particle::ESwitch","");
    addConstant(kIsIndexSHOWERSorter        ,"kIsIndexSHOWERSorter"        ,0,"Particle::ESwitch","");
    addConstant(kIsIndexRPCSorter           ,"kIsIndexRPCSorter"           ,0,"Particle::ESwitch","");
    addConstant(kIsIndexMETASorter          ,"kIsIndexMETASorter"          ,0,"Particle::ESwitch","");
    addConstant(kIsBestHitRICHSorter        ,"kIsBestHitRICHSorter"        ,0,"Particle::ESwitch","");
    addConstant(kIsBestHitInnerMDCSorter    ,"kIsBestHitInnerMDCSorter"    ,0,"Particle::ESwitch","(by chi2)");
    addConstant(kIsBestHitOuterMDCSorter    ,"kIsBestHitOuterMDCSorter"    ,0,"Particle::ESwitch","(by chi2)");
    addConstant(kIsBestHitMETASorter        ,"kIsBestHitMETASorter"        ,0,"Particle::ESwitch","(by RK META match quality)");
    addConstant(kIsBestRKRKMETASorter       ,"kIsBestRKRKMETASorter"       ,0,"Particle::ESwitch","(by RK chi2 * RK META match quality)");
    addConstant(kIsBestRKRKMETARadiusSorter ,"kIsBestRKRKMETARadiusSorter" ,0,"Particle::ESwitch","(by RK chi2 * RK META match radius)");
    addConstant(kIsBestUserSorter           ,"kIsBestUserSorter"           ,0,"Particle::ESwitch","(by userFunction)");


    //Particle::eClosePairSelect
    addConstant(kSameRICH          ,"kSameRICH"          ,1,"Particle::eClosePairSelect","candidates share same RICH hit");
    addConstant(kSameInnerMDC      ,"kSameInnerMDC"      ,1,"Particle::eClosePairSelect","candidates share innerMDC seg");
    addConstant(kSameOuterMDC      ,"kSameOuterMDC"      ,1,"Particle::eClosePairSelect","candidates share outerMDC seg");
    addConstant(kSameMETA          ,"kSameMETA"          ,1,"Particle::eClosePairSelect","candidates share META hit (used META)");
    addConstant(kSamePosPolarity   ,"kSamePosPolarity"   ,1,"Particle::eClosePairSelect","candidates share have same positive polarity (polarity has to be defined)");
    addConstant(kSameNegPolarity   ,"kSameNegPolarity"   ,1,"Particle::eClosePairSelect","candidates share have same negative polarity (polarity has to be defined)");
    addConstant(kSamePolarity      ,"kSamePolarity"      ,1,"Particle::eClosePairSelect","candidates share have same polarity (polarity has to be defined)");
    addConstant(kRICH2             ,"kRICH2"             ,1,"Particle::eClosePairSelect","candidate2 has RICH");
    addConstant(kFittedInnerMDC2   ,"kFittedInnerMDC2"   ,1,"Particle::eClosePairSelect","candidate2 has fitted inner MDC seg");
    addConstant(kFittedOuterMDC2   ,"kFittedOuterMDC2"   ,1,"Particle::eClosePairSelect","candidate2 has fitted outer MDC seg");
    addConstant(kOuterMDC2         ,"kOuterMDC2"         ,1,"Particle::eClosePairSelect","candidate2 has outer MDC seg");
    addConstant(kRK2               ,"kRK2"               ,1,"Particle::eClosePairSelect","candidate2 has fitted momentum");
    addConstant(kMETA2             ,"kMETA2"             ,1,"Particle::eClosePairSelect","candidate2 has META hit");
    addConstant(kIsLepton2         ,"kIsLepton2"         ,1,"Particle::eClosePairSelect","candidate2 has kIsLepton");
    addConstant(kIsUsed2           ,"kIsUsed2"           ,1,"Particle::eClosePairSelect","candidate2 has kIsUsed");
    addConstant(kNoSameRICH        ,"kNoSameRICH"        ,1,"Particle::eClosePairSelect","candidates do not share RICH hit");
    addConstant(kNoSameInnerMDC    ,"kNoSameInnerMDC"    ,1,"Particle::eClosePairSelect","candidates do not share innerMDC seg");
    addConstant(kNoSameOuterMDC    ,"kNoSameOuterMDC"    ,1,"Particle::eClosePairSelect","candidates do not share outerMDC seg");
    addConstant(kNoSameMETA        ,"kNoSameMETA"        ,1,"Particle::eClosePairSelect","candidates do not share META hit");
    addConstant(kNoSamePosPolarity ,"kNoSamePosPolarity" ,1,"Particle::eClosePairSelect","candidates have not same pos polarity");
    addConstant(kNoSameNegPolarity ,"kNoSameNegPolarity" ,1,"Particle::eClosePairSelect","candidates have not same neg polarity");
    addConstant(kNoSamePolarity    ,"kNoSamePolarity"    ,1,"Particle::eClosePairSelect","candidates have not same polarity");
    addConstant(kNoRICH2           ,"kNoRICH2"           ,1,"Particle::eClosePairSelect","candidate2 has no RICH");
    addConstant(kNoFittedInnerMDC2 ,"kNoFittedInnerMDC2" ,1,"Particle::eClosePairSelect","candidate2 has no fitted inner MDC seg");
    addConstant(kNoFittedOuterMDC2 ,"kNoFittedOuterMDC2" ,1,"Particle::eClosePairSelect","candidate2 has no fitted outer MDC seg");
    addConstant(kNoOuterMDC2       ,"kNoOuterMDC2"       ,1,"Particle::eClosePairSelect","candidate2 has no outer MDC seg");
    addConstant(kNoRK2             ,"kNoRK2"             ,1,"Particle::eClosePairSelect","candidate2 has no fitted momentum");
    addConstant(kNoMETA2           ,"kNoMETA2"           ,1,"Particle::eClosePairSelect","candidate2 has no META hit");
    addConstant(kNoIsLepton2       ,"kNoIsLepton2"       ,1,"Particle::eClosePairSelect","candidate2 has no kIsLepton");
    addConstant(kNoIsUsed2         ,"kNoIsUsed2"         ,1,"Particle::eClosePairSelect","candidate2 has no kIsUsed");
    addConstant(kNoUseRICH         ,"kNoUseRICH"         ,1,"Particle::eClosePairSelect","do not take RICH into account");

    //Particle::eEventSelect
    addConstant(kPairCase1 ,"kPairCase1"  ,1,"Particle::ePairCase","LEPTON: kNoSameRICH|kNoSameInnerMDC|kNoSameOuterMDC|kNoSameMETA|kRICH2|kOuterMDC2|kMETA2");
    addConstant(kPairCase2 ,"kPairCase2"  ,1,"Particle::ePairCase","LEPTON: kNoSameRICH|kNoSameInnerMDC|kNoSameOuterMDC|kSameMETA  |kRICH2|kOuterMDC2|kMETA2");
    addConstant(kPairCase3 ,"kPairCase3"  ,1,"Particle::ePairCase","LEPTON: kNoSameRICH|kNoSameInnerMDC|kSameOuterMDC  |kSameMETA  |kRICH2|kOuterMDC2|kMETA2");
    addConstant(kPairCase4 ,"kPairCase4"  ,1,"Particle::ePairCase","LEPTON: kNoSameRICH|kNoSameInnerMDC|kSameOuterMDC  |kNoSameMETA|kRICH2|kOuterMDC2|kMETA2");
    addConstant(kPairCase5 ,"kPairCase5"  ,1,"Particle::ePairCase","LEPTON: kNoSameRICH|kSameInnerMDC  |kNoSameOuterMDC|kNoSameMETA|kRICH2|kOuterMDC2|kMETA2");
    addConstant(kPairCase6 ,"kPairCase6"  ,1,"Particle::ePairCase","LEPTON: kSameRICH  |kSameInnerMDC  |kNoSameOuterMDC|kNoSameMETA|kRICH2|kOuterMDC2|kMETA2");
    addConstant(kPairCase7 ,"kPairCase7"  ,1,"Particle::ePairCase","LEPTON: kSameRICH  |kNoSameInnerMDC|kNoSameOuterMDC|kNoSameMETA|kRICH2|kOuterMDC2|kMETA2");
    addConstant(kPairCase8 ,"kPairCase8"  ,1,"Particle::ePairCase","LEPTON: kSameRICH  |kNoSameInnerMDC|kNoSameOuterMDC|kSameMETA  |kRICH2|kOuterMDC2|kMETA2");
    addConstant(kPairCase9 ,"kPairCase9"  ,1,"Particle::ePairCase","LEPTON: kSameRICH  |kSameInnerMDC  |kNoSameOuterMDC|kSameMETA  |kRICH2|kOuterMDC2|kMETA2");
    addConstant(kPairCase10,"kPairCase10" ,1,"Particle::ePairCase","LEPTON: kSameRICH  |kSameInnerMDC  |kSameOuterMDC  |kNoSameMETA|kRICH2|kOuterMDC2|kMETA2");
    addConstant(kPairCase11,"kPairCase11" ,1,"Particle::ePairCase","LEPTON: kNoSameRICH|kNoSameInnerMDC|kNoSameOuterMDC            |kRICH2|kOuterMDC2|kNoMETA2");
    addConstant(kPairCase12,"kPairCase12" ,1,"Particle::ePairCase","LEPTON: kSameRICH  |kNoSameInnerMDC|kNoSameOuterMDC            |kRICH2|kOuterMDC2|kNoMETA2");
    addConstant(kPairCase13,"kPairCase13" ,1,"Particle::ePairCase","LEPTON: kSameRICH  |kSameInnerMDC  |kNoSameOuterMDC            |kRICH2|kOuterMDC2|kNoMETA2");
    addConstant(kPairCase14,"kPairCase14" ,1,"Particle::ePairCase","LEPTON: kNoSameRICH|kNoSameInnerMDC                            |kRICH2|kNoOuterMDC2|kNoMETA2");
    addConstant(kPairCase15,"kPairCase15" ,1,"Particle::ePairCase","LEPTON: kSameRICH  |kNoSameInnerMDC                            |kRICH2|kNoOuterMDC2|kNoMETA2");
    addConstant(kPairCase16 ,"kPairCase16",1,"Particle::ePairCase","HADRON: kNoUseRICH |kNoSameInnerMDC|kNoSameOuterMDC|kNoSameMETA|kOuterMDC2|kMETA2");
    addConstant(kPairCase17 ,"kPairCase17",1,"Particle::ePairCase","HADRON: kNoUseRICH |kNoSameInnerMDC|kNoSameOuterMDC|kSameMETA  |kOuterMDC2|kMETA2");
    addConstant(kPairCase18 ,"kPairCase18",1,"Particle::ePairCase","HADRON: kNoUseRICH |kNoSameInnerMDC|kSameOuterMDC  |kSameMETA  |kOuterMDC2|kMETA2");
    addConstant(kPairCase19 ,"kPairCase19",1,"Particle::ePairCase","HADRON: kNoUseRICH |kNoSameInnerMDC|kSameOuterMDC  |kNoSameMETA|kOuterMDC2|kMETA2");
    addConstant(kPairCase20 ,"kPairCase20",1,"Particle::ePairCase","HADRON: kNoUseRICH |kSameInnerMDC  |kNoSameOuterMDC|kSameMETA  |kOuterMDC2|kMETA2");
    addConstant(kPairCase21 ,"kPairCase21",1,"Particle::ePairCase","HADRON: kNoUseRICH |kSameInnerMDC  |kSameOuterMDC  |kNoSameMETA|kOuterMDC2|kMETA2");
    addConstant(kPairCase22 ,"kPairCase22",1,"Particle::ePairCase","HADRON: kNoUseRICH |kSameInnerMDC  |kNoSameOuterMDC|kNoSameMETA|kOuterMDC2|kMETA2");
    addConstant(kPairCase23 ,"kPairCase23",1,"Particle::ePairCase","HADRON: kNoUseRICH |kNoSameInnerMDC|kNoSameOuterMDC            |kOuterMDC2|kNoMETA2");
    addConstant(kPairCase24 ,"kPairCase24",1,"Particle::ePairCase","HADRON: kNoUseRICH |kSameInnerMDC  |kNoSameOuterMDC            |kOuterMDC2|kNoMETA2");
    addConstant(kPairCase25 ,"kPairCase25",1,"Particle::ePairCase","HADRON: kNoUseRICH |kNoSameInnerMDC                            |kNoOuterMDC2|kNoMETA2");
    addConstant(kPairCase26 ,"kPairCase26",1,"Particle::ePairCase","LEP+HADRON: kNoSameRICH|kNoSameInnerMDC|kNoSameOuterMDC|kNoSameMETA|kNoRICH2|kOuterMDC2|kMETA2");
    addConstant(kPairCase27 ,"kPairCase27",1,"Particle::ePairCase","LEP+HADRON: kNoSameRICH|kNoSameInnerMDC|kNoSameOuterMDC|kSameMETA  |kNoRICH2|kOuterMDC2|kMETA2");
    addConstant(kPairCase28 ,"kPairCase28",1,"Particle::ePairCase","LEP+HADRON: kNoSameRICH|kNoSameInnerMDC|kSameOuterMDC  |kSameMETA  |kNoRICH2|kOuterMDC2|kMETA2");
    addConstant(kPairCase29 ,"kPairCase29",1,"Particle::ePairCase","LEP+HADRON: kNoSameRICH|kNoSameInnerMDC|kSameOuterMDC  |kNoSameMETA|kNoRICH2|kOuterMDC2|kMETA2");
    addConstant(kPairCase30 ,"kPairCase30",1,"Particle::ePairCase","LEP+HADRON: kNoSameRICH|kSameInnerMDC  |kNoSameOuterMDC|kNoSameMETA|kNoRICH2|kOuterMDC2|kMETA2");
    addConstant(kPairCase31 ,"kPairCase31",1,"Particle::ePairCase","LEP+HADRON: kNoSameRICH|kNoSameInnerMDC|kNoSameOuterMDC            |kNoRICH2|kOuterMDC2|kNoMETA2");
    addConstant(kPairCase32 ,"kPairCase32",1,"Particle::ePairCase","LEP+HADRON: kNoSameRICH|kNoSameInnerMDC                            |kNoRICH2|kNoOuterMDC2|kNoMETA2");

    //Particle::eEventSelect
    addConstant(kGoodVertexClust ,"kGoodVertexClust" ,1,"Particle::eEventSelect","1     good cluster vertex   (chi2>0, z > -65 (apr12), -160 (Jul14+aug14), >-70 (mar19)) (requires 1 track)");
    addConstant(kGoodVertexCand  ,"kGoodVertexCand"  ,1,"Particle::eEventSelect","2     good candidate vertex (chi2>0, z > -65 (apr12), -160 (Jul14+aug14), >-70 (mar19)) (requires at least 2 reconstructed particles)");
    addConstant(kGoodSTART       ,"kGoodSTART"       ,1,"Particle::eEventSelect","4     good StartHit         (object exists (+ corrflag > -1 if HParticleStart2HitF was used)");
    addConstant(kNoPileUpSTART   ,"kNoPileUpSTART"   ,1,"Particle::eEventSelect","8     no pileup in START (object exists + no second cluster)");
    addConstant(kNoPileUpMETA    ,"kNoPileUpMETA"    ,1,"Particle::eEventSelect","16    no pileup in META  (no objects tof<0 or tof>60, threshold 0 (pionbeam)  5 apr12");
    addConstant(kNoPileUpMDC     ,"kNoPileUpMDC"     ,1,"Particle::eEventSelect","32    no pileup in MDC   (objects t1>200 (inner or t1>400 (outer)), threshold 7 (pionbeam) 35 (apr12))");
    addConstant(kNoFlashMDC      ,"kNoFlashMDC"      ,1,"Particle::eEventSelect","64    no flash event in MDC");
    addConstant(kGoodMDCMult     ,"kGoodMDCMult"     ,1,"Particle::eEventSelect","128   good sectors inside normal mult");
    addConstant(kGoodMDCMIPSMult ,"kGoodMDCMIPSMult" ,1,"Particle::eEventSelect","256   good sectors inside normal mult for MIPS");
    addConstant(kGoodLepMult     ,"kGoodLepMult"     ,1,"Particle::eEventSelect","512   good sectors inside normal lepton mult");
    addConstant(kGoodTRIGGER     ,"kGoodTRIGGER"     ,1,"Particle::eEventSelect","1024  phys trigger (pt1 jul14/aug14, pt3 apr12,mar19)");
    addConstant(kGoodSTART2      ,"kGoodSTART2"      ,1,"Particle::eEventSelect","2048  good StartHit (object exists (+ corrflag ==2 if HParticleStart2HitF was used");
    addConstant(kNoVETO          ,"kNoVETO"          ,1,"Particle::eEventSelect","4096  no VETO hit +- 15ns arround START");
    addConstant(kGoodSTARTVETO   ,"kGoodSTARTVETO"   ,1,"Particle::eEventSelect","8192  no starthit >15ns <350ns uncorrelated with veto");
    addConstant(kGoodSTARTMETA   ,"kGoodSTARTMETA"   ,1,"Particle::eEventSelect","16384 no starthit >80ns <350ns  correlated with metahits");
    addConstant(kNoDeltaElectron ,"kNoDeltaElectron" ,1,"Particle::eEventSelect","32768 no DeltaElect event in MDC");
    addConstant(kNoSTART         ,"kNoSTART"         ,1,"Particle::eEventSelect","65536 no second START in +-15ns from START hit");
    addConstant(kNoEventPileUp   ,"kNoEventPileUp"   ,1,"Particle::eEventSelect","131072 no Event pile up detected from Clusterfinder");

    //Particle::eBeamTime
    addConstant(kUnknownBeam ,"kUnknownBeam" ,0,"Particle::eBeamTime","");
    addConstant(kApr12       ,"kApr12"       ,0,"Particle::eBeamTime","");
    addConstant(kJul14       ,"kJul14"       ,0,"Particle::eBeamTime","");
    addConstant(kAug14       ,"kAug14"       ,0,"Particle::eBeamTime","");
    addConstant(kMar19       ,"kMar19"       ,0,"Particle::eBeamTime","");


    return nameToPropL;
}

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


void HParticleConstants::print(Bool_t sort){

    ::Info("HParticleConstants::print()","Printing table of all known particle constants:");

    if(sort){
	map<TString,constantproperties>::iterator iter;
	for( iter = nameToProp.begin(); iter != nameToProp.end(); ++iter ) {
	    iter->second.print();
	}
	cout<<endl;
    } else {
	for(UInt_t i=0;i<vnames.size();i++){
	    map<TString,constantproperties>::iterator iter = nameToProp.find(vnames[i]);
	    if(iter != nameToProp.end()) iter->second.print();
	    else {
		::Error("HParticleConstants::getValue", "No constant with name=%s", vnames[i].Data());
	    }
	}
    }
}

// -----------------------------------------------------------------------------
void HParticleConstants::printValue(TString name)
{
    // print value given a constants name

    map<TString,constantproperties>::iterator iter = nameToProp.find(name);
    if(iter != nameToProp.end()) iter->second.print();
    else {
	::Error("HParticleConstants::getValue", "No constant with name=%s", name.Data());
    }
}

void HParticleConstants::printValueMatch(TString name)
{
    // print constants value given a containing  name

    for (std::map<TString,constantproperties>::iterator it = nameToProp.begin(); it != nameToProp.end(); ++it)
    {
        if(it->second.fName.Contains(name)) it->second.print();
    }
}

void HParticleConstants::printSpace(TString space)
{
    // print all constant belonging to space space

    for (std::map<TString,constantproperties>::iterator it = nameToProp.begin(); it != nameToProp.end(); ++it)
    {
        if(it->second.fSpace.Contains(space)) it->second.print();
    }
}

Int_t HParticleConstants::getValue(TString name)
{
    // Return integer value given a constants name

    map<TString,constantproperties>::iterator iter = nameToProp.find(name);
    if(iter != nameToProp.end()) return iter->second.fId;
    else {
	::Error("HParticleConstants::getValue", "No constant with name=%s", name.Data());
    }
    return 0;
}

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

vector<TString> HParticleConstants::vnames = HParticleConstants::initConstantNamesV();
map<TString,constantproperties> HParticleConstants::nameToProp = HParticleConstants::initConstantNames();




 hparticleconstants.cc:1
 hparticleconstants.cc:2
 hparticleconstants.cc:3
 hparticleconstants.cc:4
 hparticleconstants.cc:5
 hparticleconstants.cc:6
 hparticleconstants.cc:7
 hparticleconstants.cc:8
 hparticleconstants.cc:9
 hparticleconstants.cc:10
 hparticleconstants.cc:11
 hparticleconstants.cc:12
 hparticleconstants.cc:13
 hparticleconstants.cc:14
 hparticleconstants.cc:15
 hparticleconstants.cc:16
 hparticleconstants.cc:17
 hparticleconstants.cc:18
 hparticleconstants.cc:19
 hparticleconstants.cc:20
 hparticleconstants.cc:21
 hparticleconstants.cc:22
 hparticleconstants.cc:23
 hparticleconstants.cc:24
 hparticleconstants.cc:25
 hparticleconstants.cc:26
 hparticleconstants.cc:27
 hparticleconstants.cc:28
 hparticleconstants.cc:29
 hparticleconstants.cc:30
 hparticleconstants.cc:31
 hparticleconstants.cc:32
 hparticleconstants.cc:33
 hparticleconstants.cc:34
 hparticleconstants.cc:35
 hparticleconstants.cc:36
 hparticleconstants.cc:37
 hparticleconstants.cc:38
 hparticleconstants.cc:39
 hparticleconstants.cc:40
 hparticleconstants.cc:41
 hparticleconstants.cc:42
 hparticleconstants.cc:43
 hparticleconstants.cc:44
 hparticleconstants.cc:45
 hparticleconstants.cc:46
 hparticleconstants.cc:47
 hparticleconstants.cc:48
 hparticleconstants.cc:49
 hparticleconstants.cc:50
 hparticleconstants.cc:51
 hparticleconstants.cc:52
 hparticleconstants.cc:53
 hparticleconstants.cc:54
 hparticleconstants.cc:55
 hparticleconstants.cc:56
 hparticleconstants.cc:57
 hparticleconstants.cc:58
 hparticleconstants.cc:59
 hparticleconstants.cc:60
 hparticleconstants.cc:61
 hparticleconstants.cc:62
 hparticleconstants.cc:63
 hparticleconstants.cc:64
 hparticleconstants.cc:65
 hparticleconstants.cc:66
 hparticleconstants.cc:67
 hparticleconstants.cc:68
 hparticleconstants.cc:69
 hparticleconstants.cc:70
 hparticleconstants.cc:71
 hparticleconstants.cc:72
 hparticleconstants.cc:73
 hparticleconstants.cc:74
 hparticleconstants.cc:75
 hparticleconstants.cc:76
 hparticleconstants.cc:77
 hparticleconstants.cc:78
 hparticleconstants.cc:79
 hparticleconstants.cc:80
 hparticleconstants.cc:81
 hparticleconstants.cc:82
 hparticleconstants.cc:83
 hparticleconstants.cc:84
 hparticleconstants.cc:85
 hparticleconstants.cc:86
 hparticleconstants.cc:87
 hparticleconstants.cc:88
 hparticleconstants.cc:89
 hparticleconstants.cc:90
 hparticleconstants.cc:91
 hparticleconstants.cc:92
 hparticleconstants.cc:93
 hparticleconstants.cc:94
 hparticleconstants.cc:95
 hparticleconstants.cc:96
 hparticleconstants.cc:97
 hparticleconstants.cc:98
 hparticleconstants.cc:99
 hparticleconstants.cc:100
 hparticleconstants.cc:101
 hparticleconstants.cc:102
 hparticleconstants.cc:103
 hparticleconstants.cc:104
 hparticleconstants.cc:105
 hparticleconstants.cc:106
 hparticleconstants.cc:107
 hparticleconstants.cc:108
 hparticleconstants.cc:109
 hparticleconstants.cc:110
 hparticleconstants.cc:111
 hparticleconstants.cc:112
 hparticleconstants.cc:113
 hparticleconstants.cc:114
 hparticleconstants.cc:115
 hparticleconstants.cc:116
 hparticleconstants.cc:117
 hparticleconstants.cc:118
 hparticleconstants.cc:119
 hparticleconstants.cc:120
 hparticleconstants.cc:121
 hparticleconstants.cc:122
 hparticleconstants.cc:123
 hparticleconstants.cc:124
 hparticleconstants.cc:125
 hparticleconstants.cc:126
 hparticleconstants.cc:127
 hparticleconstants.cc:128
 hparticleconstants.cc:129
 hparticleconstants.cc:130
 hparticleconstants.cc:131
 hparticleconstants.cc:132
 hparticleconstants.cc:133
 hparticleconstants.cc:134
 hparticleconstants.cc:135
 hparticleconstants.cc:136
 hparticleconstants.cc:137
 hparticleconstants.cc:138
 hparticleconstants.cc:139
 hparticleconstants.cc:140
 hparticleconstants.cc:141
 hparticleconstants.cc:142
 hparticleconstants.cc:143
 hparticleconstants.cc:144
 hparticleconstants.cc:145
 hparticleconstants.cc:146
 hparticleconstants.cc:147
 hparticleconstants.cc:148
 hparticleconstants.cc:149
 hparticleconstants.cc:150
 hparticleconstants.cc:151
 hparticleconstants.cc:152
 hparticleconstants.cc:153
 hparticleconstants.cc:154
 hparticleconstants.cc:155
 hparticleconstants.cc:156
 hparticleconstants.cc:157
 hparticleconstants.cc:158
 hparticleconstants.cc:159
 hparticleconstants.cc:160
 hparticleconstants.cc:161
 hparticleconstants.cc:162
 hparticleconstants.cc:163
 hparticleconstants.cc:164
 hparticleconstants.cc:165
 hparticleconstants.cc:166
 hparticleconstants.cc:167
 hparticleconstants.cc:168
 hparticleconstants.cc:169
 hparticleconstants.cc:170
 hparticleconstants.cc:171
 hparticleconstants.cc:172
 hparticleconstants.cc:173
 hparticleconstants.cc:174
 hparticleconstants.cc:175
 hparticleconstants.cc:176
 hparticleconstants.cc:177
 hparticleconstants.cc:178
 hparticleconstants.cc:179
 hparticleconstants.cc:180
 hparticleconstants.cc:181
 hparticleconstants.cc:182
 hparticleconstants.cc:183
 hparticleconstants.cc:184
 hparticleconstants.cc:185
 hparticleconstants.cc:186
 hparticleconstants.cc:187
 hparticleconstants.cc:188
 hparticleconstants.cc:189
 hparticleconstants.cc:190
 hparticleconstants.cc:191
 hparticleconstants.cc:192
 hparticleconstants.cc:193
 hparticleconstants.cc:194
 hparticleconstants.cc:195
 hparticleconstants.cc:196
 hparticleconstants.cc:197
 hparticleconstants.cc:198
 hparticleconstants.cc:199
 hparticleconstants.cc:200
 hparticleconstants.cc:201
 hparticleconstants.cc:202
 hparticleconstants.cc:203
 hparticleconstants.cc:204
 hparticleconstants.cc:205
 hparticleconstants.cc:206
 hparticleconstants.cc:207
 hparticleconstants.cc:208
 hparticleconstants.cc:209
 hparticleconstants.cc:210
 hparticleconstants.cc:211
 hparticleconstants.cc:212
 hparticleconstants.cc:213
 hparticleconstants.cc:214
 hparticleconstants.cc:215
 hparticleconstants.cc:216
 hparticleconstants.cc:217
 hparticleconstants.cc:218
 hparticleconstants.cc:219
 hparticleconstants.cc:220
 hparticleconstants.cc:221
 hparticleconstants.cc:222
 hparticleconstants.cc:223
 hparticleconstants.cc:224
 hparticleconstants.cc:225
 hparticleconstants.cc:226
 hparticleconstants.cc:227
 hparticleconstants.cc:228
 hparticleconstants.cc:229
 hparticleconstants.cc:230
 hparticleconstants.cc:231
 hparticleconstants.cc:232
 hparticleconstants.cc:233
 hparticleconstants.cc:234
 hparticleconstants.cc:235
 hparticleconstants.cc:236
 hparticleconstants.cc:237
 hparticleconstants.cc:238
 hparticleconstants.cc:239
 hparticleconstants.cc:240
 hparticleconstants.cc:241
 hparticleconstants.cc:242
 hparticleconstants.cc:243
 hparticleconstants.cc:244
 hparticleconstants.cc:245
 hparticleconstants.cc:246
 hparticleconstants.cc:247
 hparticleconstants.cc:248
 hparticleconstants.cc:249
 hparticleconstants.cc:250
 hparticleconstants.cc:251
 hparticleconstants.cc:252
 hparticleconstants.cc:253
 hparticleconstants.cc:254
 hparticleconstants.cc:255
 hparticleconstants.cc:256
 hparticleconstants.cc:257
 hparticleconstants.cc:258
 hparticleconstants.cc:259
 hparticleconstants.cc:260
 hparticleconstants.cc:261
 hparticleconstants.cc:262
 hparticleconstants.cc:263
 hparticleconstants.cc:264
 hparticleconstants.cc:265
 hparticleconstants.cc:266
 hparticleconstants.cc:267
 hparticleconstants.cc:268
 hparticleconstants.cc:269
 hparticleconstants.cc:270
 hparticleconstants.cc:271
 hparticleconstants.cc:272
 hparticleconstants.cc:273
 hparticleconstants.cc:274
 hparticleconstants.cc:275
 hparticleconstants.cc:276
 hparticleconstants.cc:277
 hparticleconstants.cc:278
 hparticleconstants.cc:279
 hparticleconstants.cc:280
 hparticleconstants.cc:281
 hparticleconstants.cc:282
 hparticleconstants.cc:283
 hparticleconstants.cc:284
 hparticleconstants.cc:285
 hparticleconstants.cc:286
 hparticleconstants.cc:287
 hparticleconstants.cc:288
 hparticleconstants.cc:289
 hparticleconstants.cc:290
 hparticleconstants.cc:291
 hparticleconstants.cc:292
 hparticleconstants.cc:293
 hparticleconstants.cc:294
 hparticleconstants.cc:295
 hparticleconstants.cc:296
 hparticleconstants.cc:297
 hparticleconstants.cc:298
 hparticleconstants.cc:299
 hparticleconstants.cc:300
 hparticleconstants.cc:301
 hparticleconstants.cc:302
 hparticleconstants.cc:303
 hparticleconstants.cc:304
 hparticleconstants.cc:305
 hparticleconstants.cc:306
 hparticleconstants.cc:307
 hparticleconstants.cc:308
 hparticleconstants.cc:309
 hparticleconstants.cc:310
 hparticleconstants.cc:311
 hparticleconstants.cc:312
 hparticleconstants.cc:313
 hparticleconstants.cc:314
 hparticleconstants.cc:315
 hparticleconstants.cc:316
 hparticleconstants.cc:317
 hparticleconstants.cc:318
 hparticleconstants.cc:319
 hparticleconstants.cc:320
 hparticleconstants.cc:321
 hparticleconstants.cc:322
 hparticleconstants.cc:323
 hparticleconstants.cc:324
 hparticleconstants.cc:325
 hparticleconstants.cc:326
 hparticleconstants.cc:327
 hparticleconstants.cc:328
 hparticleconstants.cc:329
 hparticleconstants.cc:330
 hparticleconstants.cc:331
 hparticleconstants.cc:332
 hparticleconstants.cc:333
 hparticleconstants.cc:334
 hparticleconstants.cc:335
 hparticleconstants.cc:336
 hparticleconstants.cc:337
 hparticleconstants.cc:338
 hparticleconstants.cc:339
 hparticleconstants.cc:340
 hparticleconstants.cc:341
 hparticleconstants.cc:342
 hparticleconstants.cc:343
 hparticleconstants.cc:344
 hparticleconstants.cc:345
 hparticleconstants.cc:346
 hparticleconstants.cc:347
 hparticleconstants.cc:348
 hparticleconstants.cc:349
 hparticleconstants.cc:350
 hparticleconstants.cc:351
 hparticleconstants.cc:352
 hparticleconstants.cc:353
 hparticleconstants.cc:354
 hparticleconstants.cc:355
 hparticleconstants.cc:356
 hparticleconstants.cc:357
 hparticleconstants.cc:358
 hparticleconstants.cc:359
 hparticleconstants.cc:360
 hparticleconstants.cc:361
 hparticleconstants.cc:362
 hparticleconstants.cc:363
 hparticleconstants.cc:364
 hparticleconstants.cc:365
 hparticleconstants.cc:366
 hparticleconstants.cc:367
 hparticleconstants.cc:368
 hparticleconstants.cc:369
 hparticleconstants.cc:370
 hparticleconstants.cc:371
 hparticleconstants.cc:372
 hparticleconstants.cc:373
 hparticleconstants.cc:374
 hparticleconstants.cc:375
 hparticleconstants.cc:376
 hparticleconstants.cc:377
 hparticleconstants.cc:378
 hparticleconstants.cc:379
 hparticleconstants.cc:380
 hparticleconstants.cc:381
 hparticleconstants.cc:382
 hparticleconstants.cc:383
 hparticleconstants.cc:384
 hparticleconstants.cc:385
 hparticleconstants.cc:386
 hparticleconstants.cc:387
 hparticleconstants.cc:388
 hparticleconstants.cc:389
 hparticleconstants.cc:390
 hparticleconstants.cc:391
 hparticleconstants.cc:392
 hparticleconstants.cc:393
 hparticleconstants.cc:394
 hparticleconstants.cc:395
 hparticleconstants.cc:396
 hparticleconstants.cc:397
 hparticleconstants.cc:398
 hparticleconstants.cc:399
 hparticleconstants.cc:400
 hparticleconstants.cc:401
 hparticleconstants.cc:402
 hparticleconstants.cc:403
 hparticleconstants.cc:404
 hparticleconstants.cc:405
 hparticleconstants.cc:406
 hparticleconstants.cc:407
 hparticleconstants.cc:408
 hparticleconstants.cc:409
 hparticleconstants.cc:410
 hparticleconstants.cc:411
 hparticleconstants.cc:412
 hparticleconstants.cc:413
 hparticleconstants.cc:414
 hparticleconstants.cc:415
 hparticleconstants.cc:416
 hparticleconstants.cc:417
 hparticleconstants.cc:418
 hparticleconstants.cc:419
 hparticleconstants.cc:420
 hparticleconstants.cc:421
 hparticleconstants.cc:422
 hparticleconstants.cc:423
 hparticleconstants.cc:424
 hparticleconstants.cc:425
 hparticleconstants.cc:426
 hparticleconstants.cc:427
 hparticleconstants.cc:428
 hparticleconstants.cc:429
 hparticleconstants.cc:430
 hparticleconstants.cc:431
 hparticleconstants.cc:432
 hparticleconstants.cc:433
 hparticleconstants.cc:434
 hparticleconstants.cc:435
 hparticleconstants.cc:436
 hparticleconstants.cc:437
 hparticleconstants.cc:438
 hparticleconstants.cc:439
 hparticleconstants.cc:440
 hparticleconstants.cc:441
 hparticleconstants.cc:442
 hparticleconstants.cc:443
 hparticleconstants.cc:444
 hparticleconstants.cc:445
 hparticleconstants.cc:446
 hparticleconstants.cc:447
 hparticleconstants.cc:448
 hparticleconstants.cc:449
 hparticleconstants.cc:450
 hparticleconstants.cc:451
 hparticleconstants.cc:452
 hparticleconstants.cc:453
 hparticleconstants.cc:454
 hparticleconstants.cc:455
 hparticleconstants.cc:456
 hparticleconstants.cc:457
 hparticleconstants.cc:458
 hparticleconstants.cc:459
 hparticleconstants.cc:460
 hparticleconstants.cc:461
 hparticleconstants.cc:462
 hparticleconstants.cc:463
 hparticleconstants.cc:464
 hparticleconstants.cc:465
 hparticleconstants.cc:466
 hparticleconstants.cc:467
 hparticleconstants.cc:468
 hparticleconstants.cc:469
 hparticleconstants.cc:470
 hparticleconstants.cc:471
 hparticleconstants.cc:472
 hparticleconstants.cc:473
 hparticleconstants.cc:474
 hparticleconstants.cc:475
 hparticleconstants.cc:476
 hparticleconstants.cc:477
 hparticleconstants.cc:478
 hparticleconstants.cc:479
 hparticleconstants.cc:480
 hparticleconstants.cc:481
 hparticleconstants.cc:482
 hparticleconstants.cc:483
 hparticleconstants.cc:484
 hparticleconstants.cc:485
 hparticleconstants.cc:486
 hparticleconstants.cc:487
 hparticleconstants.cc:488
 hparticleconstants.cc:489
 hparticleconstants.cc:490
 hparticleconstants.cc:491
 hparticleconstants.cc:492
 hparticleconstants.cc:493
 hparticleconstants.cc:494
 hparticleconstants.cc:495
 hparticleconstants.cc:496
 hparticleconstants.cc:497
 hparticleconstants.cc:498
 hparticleconstants.cc:499
 hparticleconstants.cc:500
 hparticleconstants.cc:501
 hparticleconstants.cc:502
 hparticleconstants.cc:503
 hparticleconstants.cc:504
 hparticleconstants.cc:505
 hparticleconstants.cc:506
 hparticleconstants.cc:507
 hparticleconstants.cc:508
 hparticleconstants.cc:509
 hparticleconstants.cc:510
 hparticleconstants.cc:511
 hparticleconstants.cc:512
 hparticleconstants.cc:513
 hparticleconstants.cc:514
 hparticleconstants.cc:515
 hparticleconstants.cc:516
 hparticleconstants.cc:517
 hparticleconstants.cc:518
 hparticleconstants.cc:519
 hparticleconstants.cc:520
 hparticleconstants.cc:521
 hparticleconstants.cc:522
 hparticleconstants.cc:523
 hparticleconstants.cc:524
 hparticleconstants.cc:525
 hparticleconstants.cc:526
 hparticleconstants.cc:527
 hparticleconstants.cc:528
 hparticleconstants.cc:529
 hparticleconstants.cc:530
 hparticleconstants.cc:531
 hparticleconstants.cc:532
 hparticleconstants.cc:533
 hparticleconstants.cc:534
 hparticleconstants.cc:535
 hparticleconstants.cc:536
 hparticleconstants.cc:537
 hparticleconstants.cc:538
 hparticleconstants.cc:539