ROOT logo
//_HADES_CLASS_DESCRIPTION ////////////////////////////////////////////////////////////////////////////
//*-- AUTHOR : B. Kardan  28.08.2019
//*-- VERSION : 0.73
//
// HParticleEvtChara
//
// Purpose: EventCharacterization
// - Centrality from Hit(TOF,RPC,FW) and Track Estimators in Data/Sim
// - QVector and Phi (Reaction Plane Estimate) from FW
// - Event-weight for downscaled Events PT2
//
//--------------------------------------------------------------------------
// Usage:
//
//  - input files can be found at : example /cvmfs/hades.gsi.de/param/eventchara/
//
//  - to define the ParameterFile where Classes and Estimators are stored use
//    setParameterFile("/cvmfs/hades.gsi.de/param/eventchara/ParameterFile.root")
//    
//  - to print the definition of estimator & class use
//    printCentralityClass(HParticleEvtChara::kTOFRPC, HParticleEvtChara::k10);
//  
//  - to get the CentralityClass of an event (with estimator and class definition) use 
//    getCentralityClass(HParticleEvtChara::kTOFRPC, HParticleEvtChara::k10);
//
//  - to get the CentralityPercentile of an event (only estimator is needed) use 
//    getCentralityPercentile(HParticleEvtChara::kTOFRPC);
//
//  - to get the EventWeight to re-weight downscaled events use
//    getEventWeight();
//    
//  - to get the EventPlane with ReCentering use
//    getEventPlane(HParticleEvtChara::kDefault);
//  
//--------------------------------------------------------------------------  
//   Estimators:
//    TOFRPC                   - (default) TOF and RPC hit multiplicity in time-window
//    TOF                      - TOF hit multiplicity in time-window
//    RPC                      - RPC hit multiplicity in time-window
//    TOFRPCtot                - total TOF and RPC hit multiplicity in event-window
//    SelectedParticleCand     - selected Particle multiplicity
//    PrimaryParticleCand      - primary Particle multiplicity
//    SelectedParticleCandCorr - selected Particle multiplicity corrected by the 
//                               running mean and scaled with the reference mean 
//                               (selTrack * referenceMean/<selTrack>)
//    SelectedParticleCandSecCorr
//                              - selected Particle multiplicity corrected by the 
//                               running mean and scaled with the reference mean 
//                               (selTrack * referenceMean/<selTrack>)
//    SelectedParticleCandNorm - selected Particle multiplicity normalized by 
//                               the running mean (selTrack/<selTrack>)
//    FWSumChargeSpec          - sum of charge (dE/dx in a.u.) of Spectator in 
//                               FW acceptance with beta~0.9
//    FWSumChargeZ             - sum of charge (int Z up till charge-state 14
//                               with individuel fixed cuts in dE/dx each FW-cell)
//                               of Spectator in FW acceptance with beta~0.9
//   
//   Classes:
//    2                   - 2% classes
//    5                   - 5% classes
//    10                  - (default) 10% classes
//    13                  - 13% classes
//    15                  - 15% classes
//    20                  - 20% classes
//    FOPI                - FOPI centrality classes
//  
//  EventPlaneCorrection:
//    kNoCorrection            - EP only selection of spectator candidates in FW,
//                               no Correction
//    kSmear                   - smearing of x and y of each FW hit inside cell size
//    kShiftFW                 - global shift x and y with the centre of gravity and
//                               scale x and y with the sigma of the distribution of 
//                               all FW hits in all events (per class/day)
//    kWeightCharge            - weigthing with charge-state up to 14 with individuel 
//                               fixed timing- and dE/dx-cuts each FW-cell
//    kReCentering             - re-centering of QVector with <Qx> and <Qy> (calc. evt-by-evt)
//                               (only first harmonic correction)
//    kScaling                 - scaling of QVector with the sigma of Qx and Qy (calc. evt-by-evt)
//    kRotation                - rotation of EP via residual Fourier harmonics up to 8 cos and sin terms
//                               after FWshift and FWscaling
//                               
//    kDefault                 - recommended option (kShiftFW|kWeightCharge|kRotation)
//--------------------------------------------------------------------------
// quick how-To:
//  - for an example see demo-macro:
//       /scripts/batch/GE/loopDST/loopDST.C
//
//  1. include header-file
//      #include "HParticleEvtChara.h"
//
//  2. if you use Hloop check that following catagories are loaded:
//
//   HParticleEvtInfo
//   HParticleCand
//   HWallHit
//
//       if(!loop.setInput("-*,+HParticleEvtInfo, +HParticleCand, +HWallHit")){
//           cout<<"READBACK: ERROR : cannot read input !"<<endl;
//       }
//
//  3. before eventLoop:
//  
//       HParticleEvtChara evtChara;
//       TString ParameterfileCVMFS = "/lustre/nyx/hades/user/bkardan/param/centrality_epcorr_apr12_gen8_2019_02_pass30.root";
//       
//       //due to the overlap of day126  there is dedidacate param-file for the reverse-field runs
//       if(isRevFieldDATA)   ParameterfileCVMFS = "/lustre/nyx/hades/user/bkardan/param/centrality_epcorr_apr12_gen8_revfield_2019_02_pass29.root";
//       
//       //if you need centrality-values for sim UrQMD gen8a you find them here
//       //due missing primary light nuclei in UrQMD... there is no correction on the FW-EventPlane in this version!
//       if(isSimulation)   ParameterfileCVMFS = "/lustre/nyx/hades/user/bkardan/param/centrality_epcorr_sim_au1230au_gen8a_UrQMD_minbias_2019_04_pass0.root";
//       //if(isSimulation) ParameterfileCVMFS = "/lustre/nyx/hades/user/bkardan/param/centrality_epcorr_sim_au1230au_gen9vertex_UrQMD_minbias_2019_04_pass0.root";
//  
//       if(!evtChara.setParameterFile(ParameterfileCVMFS)){
//           cout << "Parameterfile not found !!! " << endl;return kFALSE;
//       }
//    
//       if(!evtChara.init()) {
//           cout << "HParticleEvtChara not init!!! " << endl;return kFALSE;
//       }
//       
//       Int_t eCentEst   = HParticleEvtChara::kTOFRPC;
//       Int_t eCentClass = HParticleEvtChara::k10;
//       Int_t eEPcorr    = HParticleEvtChara::kDefault;
//       cout << "\t selected EPcorrection method is:  "  << evtChara.getStringEventPlaneCorrection(eEPcorr) << endl;
//       
//       
//       evtChara.printCentralityClass(eCentEst, eCentClass);
//    
//  4. inside event-loop:
//    
//        Float_t  event_weight = evtChara.getEventWeight();   // event_weight dependent if PT2(down-scaled) or PT3
//        
//        Int_t   CentralityClassTOFRPC = evtChara.getCentralityClass(eCentEst, eCentClass);
//        // 10% Centrality-Classes:       1(0-10%) - 5(40-50%) ... 0:Overflow max:Underflow
//        
//        Float_t CentralityTOFRPC      = evtChara.getCentralityPercentile(eCentClass);
//        // CentralityPercentile:         0 - 100% percentile of the total cross section
//        //                                   101% Over-,Underflow or Outlier Events
//        
//        Float_t EventPlane            = evtChara.getEventPlane(eEPcorr);
//        //EventPlane:                   0 - 2pi (in rad)  re-centered & scaled EP
//        //                             -1   no EP could be reconstructed
//        
//        //for EP-resolution use the sub-event:
//        Float_t EventPlaneA            = evtChara.getEventPlane(eEPcorr,1);
//        Float_t EventPlaneB            = evtChara.getEventPlane(eEPcorr,2);
//  
//        //check if the EP(and subEvent EP) could be reconstructed, most of the case less than 4 Hits in FW
//        if(EventPlane  == -1)  continue;
//        if(EventPlaneA  == -1 || EventPlaneB  == -1 ) continue;
//  
//        check if you have any further selections on FW-hit multiplicites in you own code,
//        this will bias the result!
//            
//  5. to calculate the EP-resolution one option is the following:
//     (Ollitrault method.  - approximation valid for high chi-values)
//     inside event-loop fill the difference of the two sub-event EP
//     into a histogramm for each centrality class:
//     
//          Float_t deltaPhiAB =  TMath::Abs(TVector2::Phi_mpi_pi(EventPlaneA-EventPlaneB));
//          h->Fill(deltaPhiAB);
//  
//     after your event-analysis you can finalize your results by calculating the EP-resolution for each centrality class
//     by the ratio of event N(pi/2 < deltaEP_AB < pi)/N(0 < deltaEP_AB < pi):
//     
//         Int_t i90        = h->FindBin(0.5*TMath::Pi());
//         Int_t i180       = h->FindBin(TMath::Pi());
//         Double_t ratio   = h->Integral(i90,i180) /h->Integral(1,i180);
//         Double_t dChi    = sqrt(-2.*TMath::Log(2.*ratio));
//         Double_t dEPres1 = HParticleEvtChara::ComputeResolution( dChi );    // for first harmonic
//         Double_t dEPres2 = HParticleEvtChara::ComputeResolution( dChi , 2); // for second ...
//  
//  6. the second option will be described here soon here ;)
//     (Voloshin method - precise iterative resolution search)
//     inside event-loop fill the Cosine of the difference of the two sub-event EP
//     into a histogramm for each centrality class:
//     
//         Float_t CosDeltaPhiAB =  TMath::Cos(EventPlaneA-EventPlaneB);
//         h2->Fill(CosDeltaPhiAB);
//  
//     after your event-analysis you can finalize your results by calculating the EP-resolution for each centrality class
//     by the mean-value:
//  
//         Double_t MeanCosDeltaPhiAB  = h2->GetMean();        //< cos n delta_phi>;
//         Double_t dV = TMath::Sqrt(MeanCosDeltaPhiAB);
//         Double_t dChi = FindXi(dV,1e-6, 1);                 // for first harmonic
//         Double_t dEPres1 = HParticleEvtChara::ComputeResolution( dChi );    // for first harmonic
//         Double_t dEPres2 = HParticleEvtChara::ComputeResolution( dChi , 2); // for second ...
//         dV = ComputeResolution( TMath::Sqrt2()*dChi , 1);
//         printf("An estimate of the event plane resolution first order is: %f\n", dV );
//  
//  
//  7. to correct your flow-values use 1./dEPres1
//  
//  8. test your macro with data and if you real have the right parameterfile
//      with right values for centrality and EPcorections, check the output of 
//      
//        evtChara.printCentralityClass(eCentEst, eCentClass);
//  
//  9. and now happy plotting ;)
//  
//--------------------------------------------------------------------------
// Change History:
// 
// 19.02.2019  release of 0.7
// 24.04.2019  implementation of useFWCut() and check if FWcut hist are loaded
// 04.06.2019  fix of embeded-sim into data and removed of high-momentum condition 
////////////////////////////////////////////////////////////////////////////

#include "hparticleevtchara.h"
ClassImp(HParticleEvtChara)


HParticleEvtChara::HParticleEvtChara(const Text_t* name,const Text_t* title)
   : HReconstructor(name,title) {
        fParticleEvtInfoCat   = 0;
        fParameterFile        = "centrality.root";
        fPostFix              = "";
        isSimulation          = kFALSE;
        fReferenceMeanSelTrack= 36.44;
        fDayOfYear            = 0;
        fEventPlaneCorrectionFlag = kNoCorrection;
        fQVectorCalcDone = kFALSE;
        //maxFWCells = 302;
        
        useFWCut.resize(kNumFWCutValues);
        useFWCut[0]=kFALSE;  //kBetaCuts  
        useFWCut[1]=kTRUE;   //kTimeCuts  
        useFWCut[2]=kTRUE;   //kChargeCuts
        excludeNoisyFWcells = kTRUE;
        
        fRandom       = new TRandom2();
        
        vQPhi.resize(3);

        fCentralityPercentileHist.resize(kNumCentralityEstimator);
        fCentralityHist.resize(kNumCentralityEstimator);
        fEstimatorHist.resize(kNumCentralityEstimator);
        for (int centEst = 0; centEst < (int)kNumCentralityEstimator; ++centEst) fCentralityHist[centEst].resize(kNumCentralityClass);
        fEventPlaneCorrectionHist.resize(kNumEventPlaneParameter);
        fFWCutValuesHist.resize(kNumFWCutValues);
        for (int cutValue = 0; cutValue < (int)kNumFWCutValues; ++cutValue) fFWCutValuesHist[cutValue].resize(MAXFWCELLS);
        
        
        fFWminBeta.resize(3);
        fFWmaxBeta.resize(3);
        fFWminCharge.resize(3);
        fFWminBeta[0]=0.84;   fFWmaxBeta[0]=1.2;    fFWminCharge[0]=80; // small cells  
        fFWminBeta[1]=0.85;   fFWmaxBeta[1]=1.2;    fFWminCharge[1]=84; // medium cells
        fFWminBeta[2]=0.8;    fFWmaxBeta[2]=1.2;    fFWminCharge[2]=88; // large cells
        
        fFWChargeCuts.resize(6);
        fFWChargeCuts[5]=386;
        fFWChargeCuts[4]=339;
        fFWChargeCuts[3]=298;
        fFWChargeCuts[2]=241;
        fFWChargeCuts[1]=175;
        fFWChargeCuts[0]=84 ;
        
    }

HParticleEvtChara::~HParticleEvtChara() {
}

Bool_t HParticleEvtChara::init()
{
    if(gHades){
        HRecEvent* evt =(HRecEvent*) gHades->getCurrentEvent();
        if(evt){

            HCategory* catKin=HCategoryManager::getCategory(catGeantKine,kFALSE,"catGeantKine");
            if(catKin) {isSimulation=kTRUE; Info("init()","GeantKine found - is Simulation");}
            else       {isSimulation=kFALSE;Info("init()","GeantKine not found - is not Simulation");}


            fParticleEvtInfoCat =  HCategoryManager::getCategory(catParticleEvtInfo,kTRUE,"catParticleEvtInfo, from HParticleEvtChara::init()");
            if(!fParticleEvtInfoCat) { Info("init()","No catParticleEvtInfo in input!"); return kFALSE;}

            fParticleCandCat =  HCategoryManager::getCategory(catParticleCand,kTRUE,"catParticleCand, from HParticleEvtChara::init()");
            if(!fParticleCandCat) { Info("init()","No catParticleCand in input!");}

            fCatWallHit = HCategoryManager::getCategory(catWallHit,kTRUE,"catWallHit, from HParticleEvtChara::init()");
            if(!fCatWallHit) { Info("init()","No catWallHit in input!");}

        } else {
            Error("init()","NO EventStructure found!");
            return kFALSE;
    }

    } else {
        Error("init()","NO HADES found!");
        return kFALSE;
    }
    // read parameter file
    if(fParameterFile){
        if(!loadParameterFile()) return kFALSE;
    } else {
        Error("init()","NO Parameterfile found!");
        return kFALSE;
    }
    loadDayOfYear();
    
    return kTRUE;
}

Bool_t HParticleEvtChara::reinit()
{
    loadDayOfYear();
    return kTRUE;
}

Int_t HParticleEvtChara::loadDayOfYear()
{
    TString tempFileName = "";
    if(gLoop){
        gLoop->isNewFile(tempFileName);
    }
    else if(gHades){
        if(gHades->getRuntimeDb()){
            tempFileName = gHades->getRuntimeDb()->getCurrentFileName();
        }
        else if(gHades->getDataSource()){
            tempFileName = gHades->getDataSource()->getCurrentFileName();
        }
    }
    if(tempFileName==""){
        //Error("loadDayOfYear()","File/Day not found! using default day108");
        fDayOfYear = 108; // default FIXME  in apr12
        if(isSimulation) fDayOfYear = 0;
        return fDayOfYear;
    }
    fDayOfYear = HTime::getDayFileName(HTime::stripFileName(tempFileName,kTRUE,kTRUE));
    //Info("loadDayOfYear()",">>> Day of Year: %d",fDayOfYear);
    
    if( fDayOfYear>365 && isSimulation){
        fDayOfYear = 0;
    }
    
    return fDayOfYear;
}

Bool_t HParticleEvtChara::setParameterFile(TString ParameterFile)
{
    fParameterFile = ParameterFile;
    TString path = gSystem->ExpandPathName(fParameterFile.Data());
    if (gSystem->AccessPathName(path)) {
        Error("init()","File  %s does not exist!",path.Data());
        return kFALSE;
    }
    return kTRUE;
}

Bool_t HParticleEvtChara::loadParameterFile()
{
    // read parameter file
    TString path = gSystem->ExpandPathName(fParameterFile.Data());
    if (gSystem->AccessPathName(path)) {
        Error("loadParameterFile()","File  %s does not exist!",path.Data());
        return kFALSE;
    } else {
        fFile  = new TFile(path,"OPEN");
        TObject* ParameterFileVersion = (TObject*) fFile->Get("HParticleEvtCharaVersion");
        if(ParameterFileVersion){
            TString Version(ParameterFileVersion->GetTitle());
            Float_t fVersion = Version.Atof();
            if(fVersion < getVersion()){
                Error("loadParameterFile()","File  %s is out-dated! Needed Version: %02.1f -- in file: %02.1f",path.Data(), getVersion(), fVersion);
                return kFALSE;
            }
            cout<<"\n--------------------------------------------------------------------------------------"  << endl;
            Info("loadParameterFile()",">>> Parameter input file (ver. %02.1f) : %s",fVersion,path.Data());
            
            cout<<"\n--------------------------------------------------------------------------------------"  << endl;
        }
        else{
            Error("loadParameterFile()","In File  %s no Version information found!",path.Data());
            return kFALSE;
        }
    }
    loadCentralityEstimatorHist();
    loadEventPlaneCorrectionHist();
    loadFWCutValuesHist();
    return kTRUE;
}

Bool_t HParticleEvtChara::saveParameterFile()
{
    // read parameter file
    TString path = gSystem->ExpandPathName(fParameterFile.Data());
    //if (gSystem->AccessPathName(path)) {
    //    Error("loadParameterFile()","File  %s does not exist!",path.Data());
    //    return kFALSE;
    //} else {
    fFile  = new TFile(path,"CREATE");
    if(!fFile) return kFALSE;
    cout << "Version of HParticleEvtChara:  " << getVersion() << endl;
    TString version=Form("%02.1f",getVersion());
    TNamed OutputVersion("HParticleEvtCharaVersion",version.Data()); 
    OutputVersion.Write();
    saveCentralityEstimatorHist();
    saveEventPlaneCorrectionHist();
    saveFWCutValuesHist();
    return kTRUE;
}

Bool_t HParticleEvtChara::loadCentralityEstimatorHist()
{

    cout<<"\n--------------------------------------------------------------------------------------"  << endl;
    Info("loadCentralityEstimatorHist()","Calibration for Centrality Estimator and Classes loading:");
    Int_t n=0,m=0;
    for (int centEst = 0; centEst < (int) kNumCentralityEstimator; ++centEst){
       printf("\n>>>> %31s %s:  ",getStringCentralityEstimator(centEst).Data() ,fPostFix.Data());
       TString temp;
       if(fPostFix.CompareTo("")==0) temp = Form("%s_percentile",getStringCentralityEstimator(centEst).Data() );
       else                       temp = Form("%s_%s_percentile",getStringCentralityEstimator(centEst).Data(), fPostFix.Data() );
       fCentralityPercentileHist[centEst] = (TH1F*) fFile->FindObjectAny( temp.Data() );
       if(fCentralityPercentileHist[centEst]){
            printf("percentile");
            m++;
        }
       
       for (int centC = 0; centC < (int) kNumCentralityClass; ++centC){
           TString temp2;
           if(fPostFix.CompareTo("")==0) temp2 = Form("%s_%s_fixedCuts",getStringCentralityEstimator(centEst).Data(), getStringCentralityClass(centC).Data() );
           else                       temp2 = Form("%s_%s_%s_fixedCuts",getStringCentralityEstimator(centEst).Data(), fPostFix.Data(), getStringCentralityClass(centC).Data() );
           fCentralityHist[centEst][centC] = (TH1F*) fFile->FindObjectAny( temp2.Data() );
           if(fCentralityHist[centEst][centC]){
                printf(" %5s",getStringCentralityClass(centC).Data() );
                n++;
           }
       }
   }
   cout<< "\n\nCentrality Percentile Curves      #"<< m << endl;
   cout<< "Centrality Estimator and Classes  #"<< n << endl;
   cout<< "--------------------------------------------------------------------------------------"  << endl;

   return 0;
}

Bool_t HParticleEvtChara::saveCentralityEstimatorHist()
{
    if(!fFile) return kFALSE;
    fFile->mkdir("EstimatorHist");
    fFile->cd("/EstimatorHist/");

    cout<<"\n--------------------------------------------------------------------------------------"  << endl;
    Info("saveCentralityEstimatorHist()","Estimator Hist saving:");
    Int_t m=0;
    for (int centEst = 0; centEst < (int) kNumCentralityEstimator; ++centEst){
       if(fEstimatorHist[centEst]){
            fEstimatorHist[centEst]->Write();
            m++;
        }
   }
   cout<< "\n\nEstimator Hist      #"<< m << "saved" << endl;
   cout<< "--------------------------------------------------------------------------------------"  << endl;

    fFile->mkdir("Centrality");
    fFile->cd("/Centrality/");
    
    cout<<"\n--------------------------------------------------------------------------------------"  << endl;
    Info("saveCentralityEstimatorHist()","Calibration for Centrality Estimator and Classes saving:");
    Int_t n=0;
    m=0;
    for (int centEst = 0; centEst < (int) kNumCentralityEstimator; ++centEst){
       printf("\n>>>> %31s %s:  ",getStringCentralityEstimator(centEst).Data() ,fPostFix.Data());
       if(fCentralityPercentileHist[centEst]){
            fCentralityPercentileHist[centEst]->Write();
            printf("percentile");
            m++;
        }
       
       for (int centC = 0; centC < (int) kNumCentralityClass; ++centC){
           if(fCentralityHist[centEst][centC]){
                fCentralityHist[centEst][centC]->Write();
                printf(" %5s",getStringCentralityClass(centC).Data() );
                n++;
           }
       }
   }
   cout<< "\n\nCentrality Percentile Curves      #"<< m << "saved" << endl;
   cout<< "Centrality Estimator and Classes  #"<< n << "saved" << endl;
   cout<< "--------------------------------------------------------------------------------------"  << endl;
   return 0;
}


Bool_t HParticleEvtChara::loadEventPlaneCorrectionHist()
{

    cout<<"\n--------------------------------------------------------------------------------------"  << endl;
    Info("loadEventPlaneCorrectionHist()","Calibration for EventPlane Correction Histogramms loading:");
    Int_t n=0;
    for (int epParam = 0; epParam < (int) kNumEventPlaneParameter; ++epParam){
       printf("\n>>>> %27s :  ",getStringEventPlaneParameter(epParam).Data() );
       TString temp;
       temp = Form("EPcorr_%s_Day_Centrality",getStringEventPlaneParameter(epParam).Data() );
       fEventPlaneCorrectionHist[epParam] = (TProfile2D*) fFile->FindObjectAny( temp.Data() );   //FIXME
       if(fEventPlaneCorrectionHist[epParam]){
            //for (int dim = 0; dim < fEventPlaneCorrectionHist[qAxis]->GetDimension(); ++dim){
                printf("%4s(%2d bins) ",fEventPlaneCorrectionHist[epParam]->GetXaxis()->GetTitle(),
                                  fEventPlaneCorrectionHist[epParam]->GetNbinsX());
                printf("%4s(%2d bins) ",fEventPlaneCorrectionHist[epParam]->GetYaxis()->GetTitle(),
                                  fEventPlaneCorrectionHist[epParam]->GetNbinsY());
                printf("%4s(%2d bins) ",fEventPlaneCorrectionHist[epParam]->GetZaxis()->GetTitle(),
                                  fEventPlaneCorrectionHist[epParam]->GetNbinsZ());
            n++;
        }
   }

   cout<< "\n\nEventPlane Correction Histogramms  #"<< n << endl;
   cout<< "--------------------------------------------------------------------------------------"  << endl;

   return 0;
}

Bool_t HParticleEvtChara::addEventPlaneCorrectionHist(TProfile2D *hist, UInt_t epParam)
{
    if(!hist)return kFALSE;
    if(epParam>=kNumEventPlaneParameter) return kFALSE;
    if(epParam==kChi)  return kTRUE;
    
    TString temp;
    temp = Form("EPcorr_%s_Day_Centrality",getStringEventPlaneParameter(epParam).Data() );
    hist->SetNameTitle(temp.Data(),temp.Data());

    if(epParam==kResolution){
         fEventPlaneCorrectionHist[kResolution] = (TH2D*) makeEPresolution(hist);

         temp = Form("EPcorr_%s_Day_Centrality",getStringEventPlaneParameter(kChi).Data() );
         hist->SetNameTitle(temp.Data(),temp.Data());
         fEventPlaneCorrectionHist[kChi] = (TH2D*) makeEPresolution(hist, kTRUE);
    }
    else{
         fEventPlaneCorrectionHist[epParam] = (TProfile2D*) hist;
    }
    return kTRUE;
}

Bool_t HParticleEvtChara::saveEventPlaneCorrectionHist()
{
    if(!fFile) return kFALSE;
    fFile->mkdir("EPcorr");
    fFile->cd("/EPcorr/");
    
    cout<<"\n--------------------------------------------------------------------------------------"  << endl;
    Info("saveEventPlaneCorrectionHist()","Calibration for EventPlane Correction Histogramms saving:");
    Int_t n=0;
    for (int epParam = 0; epParam < (int) kNumEventPlaneParameter; ++epParam){
       printf("\n>>>> %27s :  ",getStringEventPlaneParameter(epParam).Data() );
       if(fEventPlaneCorrectionHist[epParam]){
           fEventPlaneCorrectionHist[epParam]->Write();
           printf("%4s(%2d bins) ",fEventPlaneCorrectionHist[epParam]->GetXaxis()->GetTitle(),
                             fEventPlaneCorrectionHist[epParam]->GetNbinsX());
           printf("%4s(%2d bins) ",fEventPlaneCorrectionHist[epParam]->GetYaxis()->GetTitle(),
                             fEventPlaneCorrectionHist[epParam]->GetNbinsY());
           printf("%4s(%2d bins) ",fEventPlaneCorrectionHist[epParam]->GetZaxis()->GetTitle(),
                             fEventPlaneCorrectionHist[epParam]->GetNbinsZ());
            n++;
        }
   }

   cout<< "\n\nEventPlane Correction Histogramms  #"<< n << "saved" << endl;
   cout<< "--------------------------------------------------------------------------------------"  << endl;

   return 0;
}

Bool_t HParticleEvtChara::loadFWCutValuesHist()
{
    cout<<"\n--------------------------------------------------------------------------------------"  << endl;
    Info("loadFWCutValuesHist()","Histogramms with CutValues for FW Hits loading:");
    Int_t n=0;
    for (int ep = 0; ep < (int) kNumFWCutValues; ++ep){
       Int_t m = 0;
       printf("\n>>>> %27s :  ",getStringFWCutValues(ep).Data() );
       for (int iCell = 0; iCell < MAXFWCELLS ; ++iCell){
           TString temp = Form("FWCuts_%s_cell%d",getStringFWCutValues(ep).Data(), iCell );
           fFWCutValuesHist[ep][iCell] = (TH1F*) fFile->FindObjectAny( temp.Data() );   //FIXME
           if(fFWCutValuesHist[ep][iCell]){
               if(m==0){
                   printf("%4s(%2d bins) ",fFWCutValuesHist[ep][iCell]->GetXaxis()->GetTitle(),
                                     fFWCutValuesHist[ep][iCell]->GetNbinsX());
                   printf("%4s(%2d bins) ",fFWCutValuesHist[ep][iCell]->GetYaxis()->GetTitle(),
                                     fFWCutValuesHist[ep][iCell]->GetNbinsY());
               }
               n++; m++;
            }
       }
       printf("active cells:%2d ", m);
       if(m==0){
            useFWCut[ep] = kFALSE;
            printf("  not used for FWCut!");
       }
   }

   cout<< "\n\nHistogramms with CutValues for FW Hits  #"<< n << endl;
   cout<< "--------------------------------------------------------------------------------------"  << endl;

   return 0;
}

Bool_t HParticleEvtChara::addFWCutValuesHist(TH1 *hist, Int_t cell, UInt_t eFWCut)
{
    if(!hist)return kFALSE;
    if(eFWCut>=kNumFWCutValues) return kFALSE;
    if(cell<0 || cell >= MAXFWCELLS) return kFALSE;
    
    TString temp = Form("FWCuts_%s_cell%d",getStringFWCutValues(eFWCut).Data(), cell );
    hist->SetNameTitle(temp.Data(),temp.Data());
    fFWCutValuesHist[eFWCut][cell] = (TH1F*) hist;
    return kTRUE;
}

Bool_t HParticleEvtChara::saveFWCutValuesHist()
{
    if(!fFile) return kFALSE;
    fFile->mkdir("FWCutValue");
    fFile->cd("/FWCutValue/");
    
    cout<<"\n--------------------------------------------------------------------------------------"  << endl;
    Info("saveFWCutValuesHist()","Histogramms with CutValues for FW Hits saving:");
    Int_t n=0;
    for (int ep = 0; ep < (int) kNumFWCutValues; ++ep){
       Int_t m = 0;
       printf("\n>>>> %27s :  ",getStringFWCutValues(ep).Data() );
       for (int iCell = 0; iCell < (int) MAXFWCELLS; ++iCell){
           if(fFWCutValuesHist[ep][iCell]){
               TString temp = Form("FWCuts_%s_cell%d",getStringFWCutValues(ep).Data(), iCell );
               fFWCutValuesHist[ep][iCell]->SetNameTitle(temp.Data(),temp.Data());
               fFWCutValuesHist[ep][iCell]->Write();
               if(m==0){
                   printf("%4s(%2d bins) ",fFWCutValuesHist[ep][iCell]->GetXaxis()->GetTitle(),
                                     fFWCutValuesHist[ep][iCell]->GetNbinsX());
                   printf("%4s(%2d bins) ",fFWCutValuesHist[ep][iCell]->GetYaxis()->GetTitle(),
                                     fFWCutValuesHist[ep][iCell]->GetNbinsY());
               }
               n++; m++;
            }
       }
       printf("active cells:%2d ", m);

   }

   cout<< "\n\ntotal Histogramms with CutValues for FW Hits  #"<< n << "saved" << endl;
   cout<< "--------------------------------------------------------------------------------------"  << endl;

   return 0;
}


Int_t HParticleEvtChara::execute(){
    return 0;
}

Int_t HParticleEvtChara::print(){
    return 0;
}

void HParticleEvtChara::reset()
{
    // Reset.
}
//----------------------------------------------------------------------
Bool_t HParticleEvtChara::isNewEvent()
{
    if(gHades->getCurrentEvent()->getHeader()->getEventSeqNumber() == currentEventSeqNumber){
        return kFALSE;
    } 
    else{
        currentEventSeqNumber = gHades->getCurrentEvent()->getHeader()->getEventSeqNumber();
        loadDayOfYear();
        return kTRUE;
    }
}

Float_t HParticleEvtChara::getEventWeight()
{
    if(isSimulation) return 1;
// ---- PT3 Event without PT2 Events --------------
    if(gHades->getCurrentEvent()->getHeader()->getTBit() == 8192) return 1;
// ---- PT2 Event with PT3 Events --------------
    if(gHades->getCurrentEvent()->getHeader()->getTBit() == 12288)return 1;
// ---- PT2 Event without PT3 Events ----------
    if(gHades->getCurrentEvent()->getHeader()->getTBit() == 4096){
        if(fDayOfYear<=106) return 4; //see logbook entry 15.4.2012 ~23.52h  from MultSectra: 3.7;
        else                return 8; //   7.8;
    }
    return 0;
}


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

Int_t HParticleEvtChara::GetFWmoduleSize(HWallHitSim* wall)
{
    Int_t i = wall->getCell();
    
    if ( i < 0 || i > 301 ) return -1;
    else if ( i==65 || i==66 || i==77 || i==78 ) return -1;      //beam hole
    else if ( i<144 ) return 1;    // small modules
    else if ( i<208 ) return 2;    // middle modules
    else if ( i<302 ) return 3;    // large modules
    return -1;
}

Bool_t HParticleEvtChara::PassesCutsFW(HWallHitSim* wall)
{
    for (int ep = 0; ep < (int) kNumFWCutValues; ++ep){
        if(useFWCut[ep] && !PassesCutsFW(wall, ep) ) return kFALSE;
    }
    return kTRUE;
}

Bool_t HParticleEvtChara::PassesCutsFW(HWallHitSim* wall, UInt_t eFWCut)
{
    if(!wall) return kFALSE;
    Int_t cell      =  wall->getCell();
    if(cell<0 || cell>= MAXFWCELLS) return kFALSE;
    
    if(excludeNoisyFWcells){
        if(cell ==20 || cell ==53 || cell ==54 
            || cell ==64 || cell ==67 || cell ==79) return kFALSE;      //noisy cells
    }
    
    Float_t value =0;
    if(eFWCut==kBetaCuts  ) value  =  wall->getDistance() / wall->getTime()/ 299.792458;
    if(eFWCut==kTimeCuts  ) value  =  wall->getTime();
    if(eFWCut==kChargeCuts) value  =  wall->getCharge();
    

    if(fFWCutValuesHist[eFWCut][cell]){
        if(fFWCutValuesHist[eFWCut][cell]->GetBinContent(fFWCutValuesHist[eFWCut][cell]->FindBin(value)) > 0) return kTRUE;
    }
    return kFALSE;
}

Int_t HParticleEvtChara::getFWCharge(HWallHitSim* wall)
{
    Float_t Charge = 0;
    Int_t Z = 0;

    if(!wall) return 0;
    if(!isSimulation) Charge = wall->getCharge();
    else              Charge = 93.*pow(wall->getCharge(),0.46-0.006*sqrt(wall->getCharge()));  // parametrization from R.Holzmann
    Int_t cell = wall->getCell();
    if(cell<0 || cell>= MAXFWCELLS) return 0;

    if(fFWCutValuesHist[kChargeCuts][cell]){
        Z = fFWCutValuesHist[kChargeCuts][cell]->GetBinContent(fFWCutValuesHist[kChargeCuts][cell]->FindBin(Charge) );
    }
    if(Z>1) Z=Z-1;
    
    return Z;
}

TH1F* HParticleEvtChara::getEventPlaneCorrectionHist(UInt_t flag) const
{
    if(flag<kNumEventPlaneParameter) return (TH1F*)fEventPlaneCorrectionHist[flag];
    else return 0;
}


Float_t HParticleEvtChara::getCorrection(UInt_t flag)
{
    Float_t fCorrection = 0.;
    Double_t cent = getCentralityPercentile();
    if(getEventPlaneCorrectionHist(flag)) 
        fCorrection = getEventPlaneCorrectionHist(flag)->GetBinContent(getEventPlaneCorrectionHist(flag)->FindBin(cent, fDayOfYear) );
    return fCorrection;
}

Float_t HParticleEvtChara::getCorrectionError(UInt_t flag)
{
    Float_t fCorrectionError = 1.;
    Double_t cent = getCentralityPercentile();
    if(getEventPlaneCorrectionHist(flag)) 
        fCorrectionError = getEventPlaneCorrectionHist(flag)->GetBinError(getEventPlaneCorrectionHist(flag)->FindBin(cent, fDayOfYear) );
    return fCorrectionError;
}

Float_t HParticleEvtChara::getSmearValue(Int_t size){
    if(size==1) return ( fRandom->Rndm(1) - 0.5 )*40.;
    else if(size==2) return ( fRandom->Rndm(1) - 0.5 )*80.;
    else if(size==3) return ( fRandom->Rndm(1) - 0.5 )*160.;
    return 0;
}

Float_t HParticleEvtChara::getThetaWeight(HWallHitSim* wall, Float_t min, Float_t max){
     Float_t theta = wall->getTheta();
     if(theta>max) return 0.;    // max Theta 
     if(theta<min) return 1.;    // min Theta
     Float_t wtheta = 1. -( (theta-min)/(max-min) );   
     if(wtheta>0 && wtheta < 1.) return wtheta;
     else return 0.;
}

void HParticleEvtChara::fillHitArray()
{
    //  -----------------------------------------------------------------
    //fill Hits into HitArray for QVector
    fQVectorCalcDone = kFALSE; //reset QVectors
    fEventPlaneCorrectionFlag = kNoCorrection;
    Int_t nHits = arrayOfHits.size();
    for (Int_t i=0; i<nHits; i++){
        if (!arrayOfHits[i]) continue;
        delete arrayOfHits[i];
        arrayOfHits[i] = NULL;
    }
    iFWHitvector.clear();
    arrayOfHits.clear();
    
    if(!fCatWallHit) return;
    
    HWallHitSim *wall = 0;  // includes HWallHit
    Float_t wallXOrg=0,wallYOrg=0,wallZOrg=0;
    Float_t wallX=0,wallY=0;
    Float_t weight1 = 1.;
    Float_t weight2 = 1.;
    for(Int_t i = 0; i < fCatWallHit->getEntries(); i ++ ){
        wall  = (HWallHitSim*) HCategoryManager::getObject(wall,fCatWallHit,i);
        if(!PassesCutsFW(wall)) continue;
         iFWHitvector.push_back(i);
        
         wall->getXYZLab(wallXOrg,wallYOrg,wallZOrg);
        
        wallX = (wallXOrg - getCorrection(kFWx)) / getCorrectionError(kFWx);
        wallY = (wallYOrg - getCorrection(kFWy)) / getCorrectionError(kFWy);
        weight1 = getFWCharge(wall);
        weight2 = getThetaWeight(wall);

        if(wallX==0 || wallY==0) continue;
        SimpleQVector* HitVector = new SimpleQVector();
        HitVector->Set(wallX,wallY,weight1, weight2); 
        HitVector->SetOrg(wallXOrg,wallYOrg); 
        arrayOfHits.push_back(HitVector);
        
    } 
    nHits = arrayOfHits.size();
    if(nHits<1) return;
    //shuffle
    std::random_shuffle ( arrayOfHits.begin(), arrayOfHits.end() );
    //Flag two subevents in given shuffled sub-events
    for (Int_t i=0; i<nHits; i++){
        if (!arrayOfHits[i]) continue;
        if((i+1)*2 > nHits)  arrayOfHits[i]->SetSubEvent(1);
        else                 arrayOfHits[i]->SetSubEvent(2);
    }
    return;
}

void HParticleEvtChara::printHitArray()
{
    //  -----------------------------------------------------------------
    if(isNewEvent()){
        fillHitArray();
    }
    //print Hits of HitArray
    Int_t nHits = arrayOfHits.size();
    printf( "printHitArray #Hits = %d\n", nHits );
    if(nHits<1) return;
    for (Int_t i=0; i<nHits; i++){
        if (arrayOfHits[i]) arrayOfHits[i]->print();
    }
    return;
}

vector<Int_t> HParticleEvtChara::getFWhits(){
    if(isNewEvent()){
        fillHitArray();
    }
    return iFWHitvector;
}

Bool_t HParticleEvtChara::fillQVectors(UInt_t statusflag, UInt_t nHarmonic)
{
    //  -----------------------------------------------------------------
    //HWallHit  into QVector
    fEventPlaneCorrectionFlag = kNoCorrection;
    fQVectorCalcDone = kFALSE; 

    vQPhi[0] = -1;
    vQPhi[1] = -1;
    vQPhi[2] = -1;

    Double_t dQX  = 0.,dQY  = 0.;
    Double_t dQXA = 0.,dQYA = 0.;
    Double_t dQXB = 0.,dQYB = 0.;

    Double_t dQXShift  = 0.,dQYShift  = 0.;
    Double_t dQXScale  = 1.,dQYScale  = 1.;

    Double_t phi = -1;
    Double_t w = 1.;

    Double_t sumOfWeights=0;

    Int_t nHits = arrayOfHits.size();
    if(nHits<4) return kFALSE;  // at least two hits per sub-event for  
    for (Int_t i=0; i<nHits; i++){
        w = 1.;
        if(isFlagSet(kShiftFW, statusflag)) phi = arrayOfHits[i]->Phi();
        else                                phi = arrayOfHits[i]->PhiOrg();

        if(isFlagSet(kWeightCharge, statusflag)) w = arrayOfHits[i]->Weight1();
        if(isFlagSet(kWeightTheta, statusflag))  w *= arrayOfHits[i]->Weight2();
        
        dQX += w * TMath::Cos(nHarmonic*phi);
        dQY += w * TMath::Sin(nHarmonic*phi);
        
        if(arrayOfHits[i]->SubEvent() == 1) {
            dQXA += w * TMath::Cos(nHarmonic*phi);
            dQYA += w * TMath::Sin(nHarmonic*phi);
        }
        else if(arrayOfHits[i]->SubEvent() == 2) {
            dQXB += w * TMath::Cos(nHarmonic*phi);
            dQYB += w * TMath::Sin(nHarmonic*phi);
        }
            sumOfWeights +=w;
    }

   if(isFlagSet(kReCentering, statusflag)){
       if(isFlagSet(kShiftFW, statusflag)){
           if(isFlagSet(kWeightCharge, statusflag)){ dQXShift  = getCorrection(kQx2WCharge); dQYShift  = getCorrection(kQy2WCharge);}
           else{                                     dQXShift  = getCorrection(kQx2);        dQYShift  = getCorrection(kQy2);}
       }
       else{
           if(isFlagSet(kWeightCharge, statusflag)){ dQXShift  = getCorrection(kQxWCharge); dQYShift  = getCorrection(kQyWCharge);}
           else{                                     dQXShift  = getCorrection(kQx);        dQYShift  = getCorrection(kQy);}
       }
       
       dQX  -= dQXShift;
       dQY  -= dQYShift;
       dQXA -= dQXShift;
       dQYA -= dQYShift;
       dQXB -= dQXShift;
       dQYB -= dQYShift;
       if(isFlagSet(kScaling, statusflag)){
           if(isFlagSet(kShiftFW, statusflag)){
               if(isFlagSet(kWeightCharge, statusflag)){dQXScale  = getCorrectionError(kQx2WCharge); dQYScale  = getCorrectionError(kQy2WCharge);}
               else{                                    dQXScale  = getCorrectionError(kQx2); dQYScale  = getCorrectionError(kQy2);}
           }
           else{
               if(isFlagSet(kWeightCharge, statusflag)){dQXScale  = getCorrectionError(kQxWCharge); dQYScale  = getCorrectionError(kQyWCharge);}
               else{                                    dQXScale  = getCorrectionError(kQx); dQYScale  = getCorrectionError(kQy);}
           }
           
           dQX  /= dQXScale;
           dQY  /= dQYScale;
           dQXA /= dQXScale;
           dQYA /= dQYScale;
           dQXB /= dQXScale;
           dQYB /= dQYScale;
       }
   }

   if(dQX==0 && dQX==0)   return kFALSE;
   if(dQXA==0 && dQXA==0) return kFALSE;
   if(dQXB==0 && dQXB==0) return kFALSE;
    
   if(isFlagSet(kRotation, statusflag)){
       Float_t corrPsi = getCorrectionPhi(getPhi(dQX ,dQY ));
       vQPhi[0] = TVector2::Phi_0_2pi( getPhi(dQX ,dQY ) + corrPsi );
       vQPhi[1] = TVector2::Phi_0_2pi( getPhi(dQXA,dQYA) + corrPsi );
       vQPhi[2] = TVector2::Phi_0_2pi( getPhi(dQXB,dQYB) + corrPsi );
   }
   else{
       vQPhi[0] = getPhi(dQX ,dQY );
       vQPhi[1] = getPhi(dQXA,dQYA);
       vQPhi[2] = getPhi(dQXB,dQYB);
   }
    
    fEventPlaneCorrectionFlag = statusflag;
    fQVectorCalcDone = kTRUE; 
    
    return kTRUE;
}

void HParticleEvtChara::printQVectors()
{
    //  -----------------------------------------------------------------
    if(fQVectorCalcDone){ printf("QVector Calculation Done\n");}
    else{
        printf("QVector Calculation NOT Done !!!!!!! retry now\n");
        if(!fillQVectors(fEventPlaneCorrectionFlag)) {printf("QVector Calculation failed !!!!!!!\n"); return ;}
    }

    printf("##### vQPhi: %.3f \t vQPhiA: %.3f \t vQPhiB: %.3f \t\t Corr: %s #####\n",
               vQPhi[0], vQPhi[1], vQPhi[2],  getStringEventPlaneCorrection(fEventPlaneCorrectionFlag).Data() );
    return;
}


Float_t HParticleEvtChara::getCorrectionPhi(Float_t phi)
{
    //used Formular in Footnoot1 of Phys.Rev. C58 (1998) 1671-1678
    //also appendix of Phys.Rev. C56 (1997) 3254-3264
    
    // kFourierCn  is equivalent to Bn
    // kFourierSn  is equivalent to An


    Float_t corrPsi = phi;
    corrPsi =    2./1.*(getCorrection(kFourierC1)*TMath::Sin(1.*phi)) 
               + 2./2.*(getCorrection(kFourierC2)*TMath::Sin(2.*phi)) 
               + 2./3.*(getCorrection(kFourierC3)*TMath::Sin(3.*phi)) 
               + 2./4.*(getCorrection(kFourierC4)*TMath::Sin(4.*phi))
               + 2./5.*(getCorrection(kFourierC5)*TMath::Sin(5.*phi))
               + 2./6.*(getCorrection(kFourierC6)*TMath::Sin(6.*phi))
               + 2./7.*(getCorrection(kFourierC7)*TMath::Sin(7.*phi))
               + 2./8.*(getCorrection(kFourierC8)*TMath::Sin(8.*phi))

               - 2./1.*(getCorrection(kFourierS1)*TMath::Cos(1.*phi))
               - 2./2.*(getCorrection(kFourierS2)*TMath::Cos(2.*phi))
               - 2./3.*(getCorrection(kFourierS3)*TMath::Cos(3.*phi))
               - 2./4.*(getCorrection(kFourierS4)*TMath::Cos(4.*phi))
               - 2./5.*(getCorrection(kFourierS5)*TMath::Cos(5.*phi))
               - 2./6.*(getCorrection(kFourierS6)*TMath::Cos(6.*phi))
               - 2./7.*(getCorrection(kFourierS7)*TMath::Cos(7.*phi))
               - 2./8.*(getCorrection(kFourierS8)*TMath::Cos(8.*phi));
    return corrPsi;
}

Float_t HParticleEvtChara::getEventPlane(UInt_t statusflag, UInt_t SubEvent, UInt_t nHarmonic)
{
    if(isNewEvent()){
        fillHitArray();
    }
    if(!fQVectorCalcDone){
        if(!fillQVectors(statusflag)) return -1;
    }
    
    if(fQVectorCalcDone && fEventPlaneCorrectionFlag == statusflag){
        if(SubEvent<3)  return vQPhi[SubEvent];
        else return -1;
    }
    else{
        if(!fillQVectors(statusflag, nHarmonic)) return -1;
        if(fQVectorCalcDone && fEventPlaneCorrectionFlag == statusflag){
            if(SubEvent<3)  return vQPhi[SubEvent];
            else return -1;
        }
    }
    return -1;

}

Float_t HParticleEvtChara::getEventPlaneWeight(UInt_t statusflag, UInt_t SubEvent, UInt_t nHarmonic)
{
    return 1.;
}

Float_t HParticleEvtChara::getEventPlaneParameter(UInt_t e, Bool_t corr)
{
         
    if(isNewEvent()){
        fillHitArray();
    }
    if(e==kFWx|| e==kFWy)                      return -999;  

    if(corr){
         if(e==kQx  || e==kQy)                                          fillQVectors(kReCentering|kScaling);
         if(e==kQxWCharge  || e==kQyWCharge)                            fillQVectors(kReCentering|kScaling|kWeightCharge);
         if(e==kQx2 || e==kQy2 || e==kResolution)                       fillQVectors(kShiftFW|kReCentering|kScaling);
         if(e==kQx2WCharge || e==kQy2WCharge || e==kResolutionWCharge)  fillQVectors(kShiftFW|kReCentering|kScaling|kWeightCharge);
         if(e>=kFourierC1 && e<=kFourierS8)                             fillQVectors(kShiftFW|kWeightCharge|kRotation);
    }
    else{
         if(e==kQx  || e==kQy)                                          fillQVectors(kNoCorrection);
         if(e==kQxWCharge  || e==kQyWCharge)                            fillQVectors(kWeightCharge);
         if(e==kQx2 || e==kQy2|| e==kResolution)                        fillQVectors(kShiftFW);
         if(e==kQx2WCharge || e==kQy2WCharge || e==kResolutionWCharge)  fillQVectors(kShiftFW|kWeightCharge);
         if(e>=kFourierC1 && e<=kFourierS8)                             fillQVectors(kShiftFW|kWeightCharge);
    }
    if(vQPhi[0]==-1) return -999;
    
    if(e==kQx || e==kQxWCharge || e==kQx2 || e==kQx2WCharge)      return TMath::Cos(    vQPhi[0] );
    if(e==kQy || e==kQyWCharge || e==kQy2 || e==kQy2WCharge)      return TMath::Sin(    vQPhi[0] );
    if(e==kFourierC1)                return TMath::Cos(    vQPhi[0] );
    if(e==kFourierC2)                return TMath::Cos(2.* vQPhi[0] );
    if(e==kFourierC3)                return TMath::Cos(3.* vQPhi[0] );
    if(e==kFourierC4)                return TMath::Cos(4.* vQPhi[0] );
    if(e==kFourierC5)                return TMath::Cos(5.* vQPhi[0] );
    if(e==kFourierC6)                return TMath::Cos(6.* vQPhi[0] );
    if(e==kFourierC7)                return TMath::Cos(7.* vQPhi[0] );
    if(e==kFourierC8)                return TMath::Cos(8.* vQPhi[0] );
    if(e==kFourierS1)                return TMath::Sin(    vQPhi[0] );
    if(e==kFourierS2)                return TMath::Sin(2.* vQPhi[0] );
    if(e==kFourierS3)                return TMath::Sin(3.* vQPhi[0] );
    if(e==kFourierS4)                return TMath::Sin(4.* vQPhi[0] );
    if(e==kFourierS5)                return TMath::Sin(5.* vQPhi[0] );
    if(e==kFourierS6)                return TMath::Sin(6.* vQPhi[0] );
    if(e==kFourierS7)                return TMath::Sin(7.* vQPhi[0] );
    if(e==kFourierS8)                return TMath::Sin(8.* vQPhi[0] );
    if(e==kResolution || e==kResolutionWCharge){  //FIXME  only 1 higher harmonics not included!!!
       return TMath::Cos(vQPhi[1])*TMath::Cos(vQPhi[2]) + TMath::Sin(vQPhi[1])*TMath::Sin(vQPhi[2]);
    }
    return -999;
}


//----------------------------------------------------------------------
Int_t HParticleEvtChara::getCentralityClass(TString estimator)
{
    // legacy code
    // Return centrality class, default in 5% of total cross section with estimator
    // or with preset classes like FOPI {6.3%, 21.0%, 30.9%}

    if (estimator.CompareTo("TOFRPCtimecut")==0 || estimator.CompareTo("TOFRPC5")==0) 
        return getCentralityClass(HParticleEvtChara::kTOFRPC, HParticleEvtChara::k5);
    else if (estimator.CompareTo("TOFRPCtimecutFOPI")==0 || estimator.CompareTo("TOFRPCFOPI")==0) 
        return getCentralityClass(HParticleEvtChara::kTOFRPC, HParticleEvtChara::kFOPI);
    else if (estimator.CompareTo("TOFRPCtimecut10")==0 || estimator.CompareTo("TOFRPC10")==0) 
        return getCentralityClass(HParticleEvtChara::kTOFRPC, HParticleEvtChara::k10);
    else {
        Error("getCentralityClass()","No CentralityEstimator defined!");
        return 0;
    }
}

Float_t HParticleEvtChara::getCentralityEstimator(UInt_t centE)
{
    HParticleEvtInfo *event_info = (HParticleEvtInfo*)fParticleEvtInfoCat->getObject(0);
    if(!event_info) {
        Error("getCentralityClass()","No HParticleEvtInfo");
    return 0;
    }
    
    if(centE     ==kTOFRPC)                      return event_info->getSumTofMultCut() + event_info->getSumRpcMultHitCut();
    else if(centE==kTOF)                         return event_info->getSumTofMultCut();
    else if(centE==kRPC)                         return event_info->getSumRpcMultHitCut();
    else if(centE==kTOFRPCtot)                   return event_info->getSumTofMult() + event_info->getSumRpcMultHit();
    else if(centE==kTOFtot)                      return event_info->getSumTofMult();
    else if(centE==kRPCtot)                      return event_info->getSumRpcMultHit();
    else if(centE==kSelectedParticleCand)        return event_info->getSumSelectedParticleCandMult();
    else if(centE==kSelectedParticleCandCorr)    return event_info->getSumSelectedParticleCandMult()*(fReferenceMeanSelTrack/event_info->getMeanMult());    
    else if(centE==kSelectedParticleCandNorm)    return event_info->getSumSelectedParticleCandMult()/event_info->getMeanMult();   
    else if(centE==kSelectedParticleCandSecNorm) return getSelectedParticleCandSecNorm();    
    else if(centE==kSelectedParticleCandCorrPerWire) return getSelectedParticleCandCorrPerWire();   
    else if(centE==kPrimaryParticleCand)         return event_info->getSumPrimaryParticleCandMult();
    else if(centE==kMdcWires)                    return event_info->getMdcWires();
    else if(centE==kMdcWiresOuterMod)            return getMdcWiresOuterMod();
    else if(centE==kFWSumChargeSpec)             return getFWSumChargeSpec();
    else if(centE==kFWSumChargeZ)                return getFWSumZ();
    else if(centE==kDirectivity)                 return getDirectivity();
    else if(centE==kRatioEtEz)                   return getRatioEtEz();
    else if(centE==kEt)                          return getEt();
    else return 0;
}

TH1F* HParticleEvtChara::getCentralityClassHist(UInt_t centE, UInt_t centC) const
{
    if(centE<kNumCentralityEstimator && centC<kNumCentralityClass) return (TH1F*)fCentralityHist[centE][centC];
    else return 0;
}

TH1F* HParticleEvtChara::getCentralityPercentileHist(UInt_t centE) const
{
    if(centE<kNumCentralityEstimator) return (TH1F*)fCentralityPercentileHist[centE];
    else return 0;
}

Int_t HParticleEvtChara::getCentralityClass(UInt_t centE, UInt_t centC)
{
    // Return centrality class, default in 5% of total cross section with estimator
    // or with preset classes like FOPI {6.3%, 21.0%, 30.9%}
    if(centE>=kNumCentralityEstimator){
        return 101.;
    }
    else if(!getCentralityClassHist(centE, centC)){
        //Error("getCentralityClass()","No CentralityEstimator defined!");
        return 0;
    }
    else {
        Int_t buffer = getCentralityEstimator(centE);
        Int_t bin = getCentralityClassHist(centE, centC)->FindBin(buffer);
        return getCentralityClassHist(centE, centC)->GetBinContent(bin);
    }
    return 0;
    
}

Bool_t HParticleEvtChara::printCentralityClass(TString estimator)
{
    // legacy code
    // print all CentralityClasses in the Estimator

    if (estimator.CompareTo("TOFRPCtimecut")==0 || estimator.CompareTo("TOFRPC5")==0) 
        return printCentralityClass(HParticleEvtChara::kTOFRPC, HParticleEvtChara::k5);
    else if (estimator.CompareTo("TOFRPCtimecutFOPI")==0 || estimator.CompareTo("TOFRPCFOPI")==0) 
        return printCentralityClass(HParticleEvtChara::kTOFRPC, HParticleEvtChara::kFOPI);
    else if (estimator.CompareTo("TOFRPCtimecut10")==0 || estimator.CompareTo("TOFRPC10")==0) 
        return printCentralityClass(HParticleEvtChara::kTOFRPC, HParticleEvtChara::k10);
    else {
         Error("printCentralityClass()","Sorry. printCentralityClass() for %s not implemented yet!",estimator.Data());
         return kFALSE;
     }

    return kFALSE;
}

Bool_t HParticleEvtChara::printCentralityClass(UInt_t centE, UInt_t centC)
{
    // print all CentralityClasses in the Estimator
    cout << endl;
    cout<<"---------------------------------------------------------------------------------------------"  << endl;
    cout<<"Centrality Classes for "<< getStringCentralityEstimator(centE).Data() << "  with " << getStringCentralityClass(centC).Data()  <<" bins" << endl;
    return printCentralityClass(getCentralityClassHist(centE, centC)); 
}

Bool_t HParticleEvtChara::printCentralityClass(TH1* htemp)
{
    // print all CentralityClasses in the Estimator
    if(!htemp){
        Error("printCentralityClass()","Sorry. printCentralityClass() for ... not implemented yet!");
        return kFALSE;
    }
    else{
        cout<<"---------------------------------------------------------------------------------------------"  << endl;
        cout<< "# of Classes: "<< htemp->GetNbinsX()-2 << endl;
        printf(" Class   lowEdge -   upEdge  Centrality[%%]  BinWidth[%%]  real CentralityBin[%%]  BinCenter[%%]\n");
        Float_t pcent = 0;
        for(Int_t i = htemp->GetNbinsX(); i>0 ; --i) {
            printf("  %2.f :  %8.2f - %8.2f %13s %13.3f    %8.2f - %8.2f %13.2f\n",
                      htemp->GetBinContent(i),
                      (htemp->GetXaxis())->GetBinLowEdge(i),
                      (htemp->GetXaxis())->GetBinUpEdge(i),
                      (htemp->GetXaxis())->GetBinLabel(i),
                      htemp->GetBinError(i),
                      pcent,
                      pcent+htemp->GetBinError(i),
                      pcent+0.5*htemp->GetBinError(i) );
            pcent += htemp->GetBinError(i);
        }
        cout<<"---------------------------------------------------------------------------------------------"  << endl;
        return kTRUE;
    }
    return kFALSE;
}

TH2D* HParticleEvtChara::makeEPresolution(TProfile2D *hist, Bool_t calcChi)
{
    if(!hist) return 0;
    TString sName=hist->GetName();   
    sName.Append("_res");
    
    Int_t nxBins = hist->GetNbinsX();
    Int_t nyBins = hist->GetNbinsY();
    
    TH2D* hresolution  = (TH2D*) new TH2D(sName.Data(), sName.Data(), nxBins, hist->GetXaxis()->GetXmin(), hist->GetXaxis()->GetXmax(),
                                                                      nyBins, hist->GetYaxis()->GetXmin(), hist->GetYaxis()->GetXmax());
    (hresolution->GetXaxis())->SetTitle(hist->GetXaxis()->GetTitle());
    (hresolution->GetYaxis())->SetTitle(hist->GetYaxis()->GetTitle());
    (hresolution->GetZaxis())->SetTitle(hist->GetZaxis()->GetTitle());

    Int_t bin,binx,biny;
    for (binx =0;binx<=nxBins+1;binx++) {
       for (biny =0;biny<=nyBins+1;biny++) {
           bin   = biny*(nxBins+2) + binx;
           
           Double_t dQaQb        = hist->GetBinContent(bin);
           Double_t dEntriesQaQb = hist->GetBinEntries(bin);
           if( dQaQb <= 0 || dEntriesQaQb < 1 ){
               hresolution->SetBinContent(bin, 0. );
               hresolution->SetBinError(  bin, 0. );
                continue;
           }
           Double_t dSpreadQaQb  = hist->GetBinError(bin);
           Double_t dV = TMath::Sqrt(dQaQb);
           printf("\nbin=%d binX=%d binY=%d QaQb = %f  +- %f    V = %f\n",bin, binx, biny, dQaQb, dSpreadQaQb , dV);
           Double_t dChi = FindXi(dV,1e-6);
           dV = ComputeResolution( TMath::Sqrt2()*dChi );
           printf("An estimate of the event plane resolution is: %f\n", dV );
           Double_t dVerr = 0.;
           if(dQaQb > 0.) dVerr = (1./(2.*pow(dQaQb,0.5)))*dSpreadQaQb;
           Double_t dChiErr = FindXi(dVerr,1e-6);
           printf("An estimate chi of the event plane is: %f +- %f\n", dChi, dChiErr );
           printf("R:(subevents) = %f +- %f\n",dV,dVerr);
           if(calcChi){
               hresolution->SetBinContent(binx, biny, dChi );
               hresolution->SetBinError(  binx, biny, dChiErr);
           }
           else{
               hresolution->SetBinContent(binx, biny, dV );
               hresolution->SetBinError(  binx, biny, dVerr );
           }
       }
    }
    TString name=hist->GetName();   
    hresolution->SetNameTitle(name.Data(),name.Data());
    hresolution->SetEntries(hist->GetEntries());
    return hresolution;

}
TH1* HParticleEvtChara::makeEPresolution(TH3 *hist, Bool_t calcChi)
{
    if(!hist) return 0;
    TString sName=hist->GetName();   
    sName.Append("_res");
    
    TAxis* axis = hist->GetZaxis();
    axis->SetRange(1, axis->GetNbins());
    TH1* temp  = hist->Project3D("xy_1");

    axis->SetRange(axis->FindBin(TMath::PiOver2()), axis->GetNbins());
    TH1* temp2  = hist->Project3D("xy_2");    
    temp2->Divide(temp);

    Int_t nxBins = temp2->GetNbinsX();
    Int_t nyBins = temp2->GetNbinsY();
    
    TH2D* hresolution  = (TH2D*) new TH2D(sName.Data(), sName.Data(), nxBins, temp2->GetXaxis()->GetXmin(), temp2->GetXaxis()->GetXmax(),
                                                                      nyBins, temp2->GetYaxis()->GetXmin(), temp2->GetYaxis()->GetXmax());
    (hresolution->GetXaxis())->SetTitle(hist->GetXaxis()->GetTitle());
    (hresolution->GetYaxis())->SetTitle(hist->GetYaxis()->GetTitle());
    (hresolution->GetZaxis())->SetTitle(hist->GetZaxis()->GetTitle());
    
    Int_t bin,binx,biny;
    
    for (binx =0;binx<=nxBins+1;binx++) {
       for (biny =0;biny<=nyBins+1;biny++) {
           bin   = biny*(nxBins+2) + binx;
           
           Double_t ratio        = temp2->GetBinContent(binx,biny);
           printf("\nbin=%d binX=%d binY=%d  Ratio=%f\n",bin, binx, biny, ratio);
           if( ratio <= 0 ){
               continue;
           }
           Double_t chisq = -2.*TMath::Log(2.*ratio);
           Double_t dChi = sqrt(chisq);
           printf("An estimate chi of the event plane is: %f\n", dChi );
           Double_t dV = ComputeResolution( TMath::Sqrt2()*dChi );
           printf("An estimate of the event plane resolution is: %f\n", dV );
           Double_t dVerr = 0.;
           printf("R:(subevents) = %f +- %f\n",dV,dVerr);

           if(calcChi){
               hresolution->SetBinContent(binx, biny, dChi );
               //hresolution->SetBinError(  binx, biny, dChiErr);
           }
           else{

               hresolution->SetBinContent(binx, biny, dV );
               hresolution->SetBinError(  binx, biny, dVerr );
           }
       }
    }
    
    TString name=hist->GetName();   
    hresolution->SetNameTitle(name.Data(),name.Data());
    hresolution->SetEntries(hist->GetEntries());
    return hresolution;
}

//--------------------------------------------------------------------
Double_t HParticleEvtChara::ModifiedBesselI(Int_t n, Double_t x) const
{
  // compute half-integer modified Bessel functions
  // order: n>0, for n>5/2, interpolation is used (improve this by using recurrence!!!)
  const Double_t FACTOR = 0.797884561;  //FIXME
  if (n<0) return 0;
  if (x<1e-7) return 0;

  if (n==0)       return FACTOR*sqrt(x)*TMath::SinH(x)/x;   // 1/2
  else if (n==1)  return FACTOR*sqrt(x)*( -TMath::SinH(x)/(x*x) + TMath::CosH(x)/x );   // 3/2
  else if (n==2)  return FACTOR*sqrt(x)*( (3./(x*x)+1.)*TMath::SinH(x)/x - 3.*TMath::CosH(x)/(x*x) );   // 5/2
  return 0.5*(TMath::BesselI(n,x)+TMath::BesselI(n+1,x));   // use average of integer-order Bessel
}

//--------------------------------------------------------------------
Double_t HParticleEvtChara::ComputeResolution( Double_t x, Int_t n ) const
{
  // Computes resolution for Event Plane method
  if(x > 51.3) {
    printf("Warning: Estimation of total resolution might be WRONG. Please check!");
    return 0.99981;
  }
  if (n<1) return 0;
  Int_t n1= (n-1)/2;      
  Int_t n2 = (n+1)/2;
  
  Double_t a = x*x/2;  //   in formula (8) of Ollitrault arXiv:nucl-ex/9711003v2
                       //   it is x*x/2 for  full EP resolution here sub-event resolution
  Double_t b = TMath::Exp(-a);
  if (n==1)        b *= TMath::BesselI0(a)+TMath::BesselI1(a);
  else if(n%2==1)  b *= TMath::BesselI(n1,a)+TMath::BesselI(n2,a);
  else             b *= ModifiedBesselI(n1, a) + ModifiedBesselI(n2, a);
  return TMath::Sqrt(TMath::Pi())/2*x*b; 
}


//--------------------------------------------------------------------
Double_t HParticleEvtChara::FindXi( Double_t res, Double_t prec, Int_t n ) const
{
  // Computes x(res) for Event Plane method
  if(res > 0.99981) {
    printf("Warning: Resolution for subEvent is high. You reached the precision limit.");
    return 51.3;
  }
  int nSteps =0;
  Double_t xtmp=0, xmin=0, xmax=51.3, rtmp=0, delta=2*prec;
  while( delta > prec ) {
    xtmp = 0.5*(xmin+xmax);
    rtmp = ComputeResolution(xtmp, n);
    delta = TMath::Abs( res-rtmp );
    if(rtmp>res) xmax = xtmp;
    if(rtmp<res) xmin = xtmp;
    nSteps++;
  }
  return xtmp;
}
//--------------------------------------------------------------------
Bool_t HParticleEvtChara::addEstimatorHist(TH1F *hist, Float_t fractionXsection, UInt_t centE, Int_t direction)
{
    if(!hist)return kFALSE;
    if(fractionXsection<0.1) return kFALSE;
    if(centE>=kNumCentralityEstimator) return kFALSE;
    
    TString temp;
    if(fPostFix.CompareTo("")==0) temp = Form("%s",getStringCentralityEstimator(centE).Data() );
    else                       temp = Form("%s_%s",getStringCentralityEstimator(centE).Data(), fPostFix.Data() );
    
    hist->SetName(temp.Data());
    hist->SetTitle(temp.Data());
    fEstimatorHist[centE]= (TH1F*) hist;
    fCentralityPercentileHist[centE] = (TH1F*) makePercentiles(hist, fractionXsection, direction);
    for (int centC = 0; centC < (int) kNumCentralityClass; ++centC){
        fCentralityHist[centE][centC] = (TH1F*) makeClasses(hist, fractionXsection, centC, direction);
        if(fCentralityHist[centE][centC]) printCentralityClass(centE, centC);
    }
    return kTRUE;
}

TH1F* HParticleEvtChara::makePercentiles(TH1F *htemp, Float_t fractionXsection, Int_t direction)
{
  if(!htemp) return 0;  

  TH1F *hpercent  = (TH1F*) htemp->Clone("hpercent");
  TString name=htemp->GetName();   
  name.Append("_percentile");
  hpercent->SetNameTitle(name.Data(),name.Data());
  hpercent->Reset();
  Float_t totIntegral = fractionXsection / htemp->Integral(1,htemp->GetNbinsX()); 
  if(direction<0){
      for (int ibin=1; ibin<=htemp->GetNbinsX(); ibin++){
          hpercent->SetBinContent(ibin, totIntegral * htemp->Integral(ibin,htemp->GetNbinsX()) );
      } 
  }
  else if(direction>0){
      for (int ibin=1; ibin<=htemp->GetNbinsX(); ibin++){
          hpercent->SetBinContent(ibin, totIntegral * htemp->Integral(1,ibin) );
      } 
  }
  return hpercent;
}

TH1F* HParticleEvtChara::makeClasses(TH1F *htemp, Float_t fractionXsection, UInt_t centC, Int_t direction)
{

    if(!htemp) return 0;
    if(fractionXsection<0.1) return 0;
    Int_t nClasses = getCentralityClassNbins(centC);
    Double_t integral = htemp->Integral();
    Double_t norm = integral / fractionXsection;
    Float_t* PercentileArray = getCentralityClassArray(centC);
    std::vector<Double_t> binEdge;
    std::vector<Double_t> xSection;
    std::vector<TString>  fLabels; 


    Int_t start = 1;
    Int_t stop = htemp->GetNbinsX();
    if(direction < 0){
        direction = -1;
        start = htemp->GetNbinsX()-1;
        stop = 0;
        binEdge.push_back(htemp->GetBinLowEdge(htemp->GetNbinsX()));
    }
    else{
        direction = 1;
        binEdge.push_back(htemp->GetBinLowEdge(1));
    }
    Int_t bin = start;
    Float_t lxs = 0;
    Float_t txs = 0;


    // Find edge and starting point at begining
    while(1){
        lxs += htemp->GetBinContent(bin);
        Double_t pxs = lxs/norm;
        if( pxs>0.001 ){
          if (direction>0)   binEdge.push_back(htemp->GetBinLowEdge(bin+1));
          else               binEdge.push_back(htemp->GetBinLowEdge(bin));
          xSection.push_back(pxs);
          bin += direction;
          break;
        }
        bin += direction;
    }

    Float_t totxs = 0;
    for (Int_t i = 0; i < nClasses; ++i) {
        lxs = 0 ;
        totxs += PercentileArray[i];
        while(1){
            lxs += htemp->GetBinContent(bin);
            txs += htemp->GetBinContent(bin);
            Double_t pxs = txs/norm;
            Double_t tdiff = (txs+htemp->GetBinContent(bin+direction))/norm;
            if( ( pxs>totxs )
                || (TMath::Abs(pxs-totxs)<=TMath::Abs(tdiff-totxs)) )
            {
              if (direction>0)  binEdge.push_back(htemp->GetBinLowEdge(bin+1));
              else              binEdge.push_back(htemp->GetBinLowEdge(bin));
              xSection.push_back(lxs/norm);
              bin += direction;
              break;
            }
            bin += direction;
            if ( (direction>0 && bin>=stop) || (direction<0 && bin<=stop ) || (txs>=integral) ) break;
        }
        if(totxs>fractionXsection || (direction>0 && bin>=stop) || (direction<0 && bin<=stop ) || (txs>=integral)) break;
    }

      fLabels.push_back("overflow");
      Double_t totXsection =0;
      for(std::vector<double>::size_type index = 1; index < xSection.size()-1; ++index){
          fLabels.push_back(Form("%02.0f-%02.0f",round(totXsection),round(totXsection+xSection[index])) );
          totXsection += xSection[index];
      }
      fLabels.push_back("underflow");
 
      std::reverse(fLabels.begin(),fLabels.end());
      std::reverse(binEdge.begin(), binEdge.end());
      std::reverse(xSection.begin(), xSection.end());

      Double_t xlowbins[binEdge.size()];
      std::copy(binEdge.begin(), binEdge.end(), xlowbins);

      TString name = htemp->GetTitle();
      name = Form("%s_%s_fixedCuts", name.Data(), getStringCentralityClass(centC).Data());
      TH1F *hfixedCuts = new TH1F(name.Data(), name.Data(), binEdge.size()-1, xlowbins); 

      for(std::vector<double>::size_type bin = 0; bin < fLabels.size(); ++bin){
          (hfixedCuts->GetXaxis())->SetBinLabel(bin+1,fLabels[bin]);
          hfixedCuts->SetBinContent(bin+1, fLabels.size()-bin-1);
          hfixedCuts->SetBinError(bin+1, xSection[bin]);
      }
  return hfixedCuts;
}



Int_t HParticleEvtChara::getNbins(TString estimator)
{
    // legacy code
    // Number of Bins (CentralityClasses and Over- and Underflow) in the Estimator

    if (estimator.CompareTo("TOFRPCtimecut")==0 || estimator.CompareTo("TOFRPC5")==0) 
        return getNbins(HParticleEvtChara::kTOFRPC, HParticleEvtChara::k5);
    else if (estimator.CompareTo("TOFRPCtimecutFOPI")==0 || estimator.CompareTo("TOFRPCFOPI")==0) 
        return getNbins(HParticleEvtChara::kTOFRPC, HParticleEvtChara::kFOPI);
    else if (estimator.CompareTo("TOFRPCtimecut10")==0 || estimator.CompareTo("TOFRPC10")==0) 
        return getNbins(HParticleEvtChara::kTOFRPC, HParticleEvtChara::k10);
    else { Error("getNbins()","Sorry. getNbins() for %s not implemented yet!",estimator.Data()); return 0;}
}
Int_t HParticleEvtChara::getNbins(UInt_t centE, UInt_t centC)
{
    // Number of Bins (CentralityClasses and Over- and Underflow) in the Estimator
    TH1F *htemp = getCentralityClassHist(centE, centC); 
    if(htemp) return htemp->GetNbinsX();
    else return 0;
}

Int_t HParticleEvtChara::getCentralityClassNbins(UInt_t centC)
{
    if(centC==k1040)      return 6;
    else if(centC==kFOPI) return 6;
    Float_t binSize = getCentralityClassBinSize(centC);
    if(binSize>0) return round((100./binSize));
    //    cout << "binSize: "<< binSize  <<"  nBins: " <<nBins << " " <<endl;
    return 0;
}

Float_t* HParticleEvtChara::getCentralityClassArray(UInt_t centC)
{
    // 
    Float_t binSize = getCentralityClassBinSize(centC);
    Int_t nBins = getCentralityClassNbins(centC);
    if (nBins<1) return 0;
    
    Float_t* arr = new Float_t[nBins];
    if(binSize>0){
        Float_t xs = 0.;
        for(Int_t i =0;  i < nBins ; i++){
            xs+=binSize;
            if(xs < 100.){
                arr[i] = (Float_t) binSize;
            }
            else{
                arr[i] = 100. - (binSize*i);
            }
        }
    }
    else if(centC==k1040) {
        Double_t fxs[6] = {10.,30.,30, 10.,10.,10.};
        for(Int_t i =0;  i < nBins ; i++) arr[i] = fxs[i];
    }
    else if(centC==kFOPI) {
        Double_t fxs[6] = {6.3,14.7,9.9,10.,10.,10.};
        for(Int_t i =0;  i < nBins ; i++) arr[i] = fxs[i];
    }
    
    return arr;
}

Float_t* HParticleEvtChara::getUpEdgeArray(UInt_t centE, UInt_t centC)
{
    // 
    TH1F *htemp = getCentralityClassHist(centE, centC);
    
    if(htemp){
        Int_t nBins = htemp->GetNbinsX();
        Float_t* arr = new Float_t[nBins];
        for(Int_t i =0;  i < nBins ; i++) {
            //printf(" %8.2f\n",(htemp->GetXaxis())->GetBinLowEdge(nBins-i));
            arr[i] = (Float_t) (htemp->GetXaxis())->GetBinLowEdge(nBins-i);
        }
         return arr;
    }
    else return 0;
}

Float_t* HParticleEvtChara::getBinCenterArray(UInt_t centE, UInt_t centC)
{
    // 
    TH1F *htemp = getCentralityClassHist(centE, centC);
    
    if(htemp){
        Int_t nBins = htemp->GetNbinsX();
        Float_t* arr = new Float_t[nBins];
        Float_t pcent = 0;
        for(Int_t i =0;  i < nBins ; i++) {
              pcent += 0.5*htemp->GetBinError(i);
              arr[nBins-i] = (Float_t) pcent;
        }
         return arr;
    }
    else return 0;
}

vector<TString> HParticleEvtChara::getLabelArray(UInt_t centE, UInt_t centC)
{
    // 
    TH1F *htemp = getCentralityClassHist(centE, centC); 
    vector<TString> ar;
    if(htemp){
        Int_t nBins = htemp->GetNbinsX();
        for(Int_t i =1;  i < nBins-1 ; i++) {
            //printf(" %s\n",(htemp->GetXaxis())->GetBinLabel(nBins-i));
            TString prv = TString( (htemp->GetXaxis())->GetBinLabel(nBins-i) );
            ar.push_back(prv);
        }
    }
    return ar;
}

Int_t HParticleEvtChara::getCentralityClass5(TString estimator)
{
    // Return centrality class 5% of total cross section
    return 1+(Int_t)getCentralityPercentile(estimator)/5.;
}
Int_t HParticleEvtChara::getCentralityClass10(TString estimator)
{
    // Return centrality class 5% of total cross section
    return 1+(Int_t)getCentralityPercentile(estimator)/10.;
}

Float_t HParticleEvtChara::getCentralityPercentile(TString estimator)
{
    // legacy code
    return getCentralityPercentile(getCentralityEstimatorFromString(estimator));
}


Float_t HParticleEvtChara::getCentralityPercentile(UInt_t centE)
{

    if(centE>=kNumCentralityEstimator){
        return 101.;
    }
    else if(!getCentralityPercentileHist(centE)){
        return 101.;
    }
    else {
        Int_t buffer = getCentralityEstimator(centE);
        Int_t bin = getCentralityPercentileHist(centE)->FindBin(buffer);
        return getCentralityPercentileHist(centE)->GetBinContent(bin);
    }

    return 101.;
}

Int_t HParticleEvtChara::getMdcWiresOuterMod()
{
    HParticleEvtInfo *event_info = (HParticleEvtInfo*)fParticleEvtInfoCat->getObject(0);
    if(!event_info) {
        return 0;
    }
    Int_t sum = 0;
    for(Int_t s=0;s<6;s++) sum += event_info->getMdcWiresMod(s,2)+event_info->getMdcWiresMod(s,3);  //outer mdc
    return sum;
}


Float_t HParticleEvtChara::getSelectedParticleCandSecNorm(){
    
    if(!gLoop) return 0;
    
    HParticleEvtInfo *event_info = (HParticleEvtInfo*)fParticleEvtInfoCat->getObject(0);
    if(!event_info) {
        return 0;
    }
    
    Float_t SelectedParticleCandSecCorr=0;
    Int_t nGoodSectors=0;
    for (Int_t s = 0; s < 6; ++s ){
        if(gLoop->goodSector(s)){
            SelectedParticleCandSecCorr += event_info->getSelectedParticleCandMult(s)/event_info->getMeanMult(s);
            nGoodSectors++;
        }
    }
    if(nGoodSectors>0) SelectedParticleCandSecCorr /= nGoodSectors;
    return SelectedParticleCandSecCorr;
}

Float_t HParticleEvtChara::getSelectedParticleCandCorrPerWire(){
    
    HParticleEvtInfo *event_info = (HParticleEvtInfo*)fParticleEvtInfoCat->getObject(0);
    if(!event_info) {
        return 0;
    }
    // Correction function with parameters provided by O.&V.Pechenova
    Float_t w0 = -0.660682;
    Float_t w1 = -0.0652827;
    Float_t w2 = -0.660682;
    Float_t w3 = -0.0652827;
    Float_t w4 = -0.655548;
    Float_t w5 = -0.00547515;
    
    Int_t   nRawWires = 0;
    Int_t   nSelMult = 0;
    Float_t WirePerTracks = 0;
    Float_t SelectedParticleCandCorrPerWire = 0;
    Float_t EffWirePerTrack = 0;
    for(Int_t s=0;s<6;s++) {
        nSelMult  = event_info->getSelectedParticleCandMult(s);
        nRawWires = event_info->getMdcWiresMod(s,2)+event_info->getMdcWiresMod(s,3);  //outer mdc
        if(nSelMult>0){
            WirePerTracks = Float_t(nRawWires)/nSelMult;
            EffWirePerTrack = 1/(exp(w0+w1*WirePerTracks) + exp(w2+w3*WirePerTracks) + exp(w4+w5*WirePerTracks));
            SelectedParticleCandCorrPerWire += nSelMult*EffWirePerTrack;
        }
    }
    return SelectedParticleCandCorrPerWire;
}

Float_t HParticleEvtChara::getFWSumChargeSpec(){

    Float_t MultFWSumChargeSpec=0;

    //HWallHit
    if(!fCatWallHit) return -1;
    HWallHitSim *wall = 0;
    for(Int_t i = 0; i < fCatWallHit->getEntries(); i ++ ){
        wall  = (HWallHitSim*) HCategoryManager::getObject(wall,fCatWallHit,i);
        if(!wall) continue;
        if(!PassesCutsFW(wall)) continue;
        if(!isSimulation) MultFWSumChargeSpec += wall->getCharge();
        else              MultFWSumChargeSpec += 93.*pow(wall->getCharge(),0.46-0.006*sqrt(wall->getCharge()));  // parametrization from R.Holzmann
     }

    return MultFWSumChargeSpec;
}

Float_t HParticleEvtChara::getFWSumZ(Int_t minZ, Int_t maxZ, UInt_t SubEvent){

    if(isNewEvent()){
        fillHitArray();
    }
    Float_t Z = 0.;
    Float_t w = 1.;

    Int_t nHits = arrayOfHits.size();
    if(nHits<1) return 0;  // at least one hit
    for (Int_t i=0; i<nHits; i++){
        w  = arrayOfHits[i]->Weight1();
        //w2 *= arrayOfHits[i]->Weight2();
        if(w>maxZ) w=maxZ;
        if(w<minZ) continue;

        if(SubEvent == 0) {
            Z += w;
        }
        else if(SubEvent == 1 && arrayOfHits[i]->SubEvent() == 1) {
            Z += w;
        }
        else if(SubEvent == 2 && arrayOfHits[i]->SubEvent() == 2) {
            Z += w;
        }
    }
    return Z;
}

Float_t HParticleEvtChara::getEt(){

    Float_t Et=0;
    if(!fParticleCandCat) return -1;
    HParticleCand* particle_cand = 0;

    for(Int_t i = 0; i < fParticleCandCat->getEntries(); i ++ ){
        particle_cand  = (HParticleCand*) HCategoryManager::getObject(particle_cand,fParticleCandCat,i);
        if(!particle_cand->isFlagBit(Particle::kIsUsed)) continue;
        if(particle_cand->isFakeRejected() )            continue;
        if(particle_cand->getSystemUsed() == -1)        continue;
        if(!particle_cand->isFlagAND(4,                               
                Particle::kIsAcceptedHitInnerMDC,
                Particle::kIsAcceptedHitOuterMDC,
                Particle::kIsAcceptedHitMETA,
                Particle::kIsAcceptedRK)  )       continue;
          if(particle_cand->getPID()==-1)       continue;
//        if( particle_cand->getMomentumOrg() == particle_cand->getMomentum() ) continue;
        if( TMath::Abs(particle_cand->Rapidity()-0.74)>0.5 && particle_cand->Pt()>300 ){  //
            Et              += particle_cand->Et();
        }
    //-----------------------------------------------------------------
    } // end particle loop
    return Et;
}

Float_t HParticleEvtChara::getRatioEtEz(){
    
    Float_t RatioEtEz=0;
    Float_t Et=0;
    Float_t Ez=0;
    if(!fParticleCandCat) return -1;
    HParticleCand* particle_cand = 0;

    for(Int_t i = 0; i < fParticleCandCat->getEntries(); i ++ ){
        particle_cand  = (HParticleCand*) HCategoryManager::getObject(particle_cand,fParticleCandCat,i);
        if(!particle_cand->isFlagBit(Particle::kIsUsed)) continue;
        if(particle_cand->isFakeRejected() )            continue;
        if(particle_cand->getSystemUsed() == -1)        continue;
        if(!particle_cand->isFlagAND(4,                               
                Particle::kIsAcceptedHitInnerMDC,
                Particle::kIsAcceptedHitOuterMDC,
                Particle::kIsAcceptedHitMETA,
                Particle::kIsAcceptedRK)  )       continue;
        if(particle_cand->getPID()==-1)           continue;
        Ez              += particle_cand->E()*particle_cand->CosTheta();   // pt2 == 0 ? 0 : E()*E() * pt2/(pt2+Z()*Z());
        Et              += particle_cand->Et();
    //-----------------------------------------------------------------
    } // end particle loop
    if(Ez){
        RatioEtEz = Et/Ez;
    }
    else {
        RatioEtEz=0;
    }
    return RatioEtEz;
}


Float_t HParticleEvtChara::getDirectivity()
{
    Float_t Directivity=0;
    TLorentzVector QVector = TLorentzVector();
    Int_t QVectorT = 0;
    if(!fParticleCandCat) return -1;
    HParticleCand* particle_cand = 0;

    for(Int_t i = 0; i < fParticleCandCat->getEntries(); i ++ ){
        particle_cand  = (HParticleCand*) HCategoryManager::getObject(particle_cand,fParticleCandCat,i);
        if(!particle_cand->isFlagBit(Particle::kIsUsed)) continue;
        if(particle_cand->isFakeRejected() )            continue;
        if(particle_cand->getSystemUsed() == -1)        continue;
        if(!particle_cand->isFlagAND(4,                               
                Particle::kIsAcceptedHitInnerMDC,
                Particle::kIsAcceptedHitOuterMDC,
                Particle::kIsAcceptedHitMETA,
                Particle::kIsAcceptedRK)  )       continue;
        if(particle_cand->getPID()==-1)           continue;
        if( particle_cand->Rapidity() > 0.74 ){  //
            QVector  += (TLorentzVector)* particle_cand;
            QVectorT +=  particle_cand->Pt();
        }
        else {  //
            QVector  -= (TLorentzVector)* particle_cand;
            QVectorT += particle_cand->Pt();
        }
    //-----------------------------------------------------------------
    } // end particle loop
    if(QVectorT>0)Directivity = QVector.Pt() / QVectorT;      //  = |Sum(vector_p_{t,i})| / Sum(|p_{t,i}|)   for 0>Y_cm
    else Directivity = 0;
    return Directivity;
}

 hparticleevtchara.cc:1
 hparticleevtchara.cc:2
 hparticleevtchara.cc:3
 hparticleevtchara.cc:4
 hparticleevtchara.cc:5
 hparticleevtchara.cc:6
 hparticleevtchara.cc:7
 hparticleevtchara.cc:8
 hparticleevtchara.cc:9
 hparticleevtchara.cc:10
 hparticleevtchara.cc:11
 hparticleevtchara.cc:12
 hparticleevtchara.cc:13
 hparticleevtchara.cc:14
 hparticleevtchara.cc:15
 hparticleevtchara.cc:16
 hparticleevtchara.cc:17
 hparticleevtchara.cc:18
 hparticleevtchara.cc:19
 hparticleevtchara.cc:20
 hparticleevtchara.cc:21
 hparticleevtchara.cc:22
 hparticleevtchara.cc:23
 hparticleevtchara.cc:24
 hparticleevtchara.cc:25
 hparticleevtchara.cc:26
 hparticleevtchara.cc:27
 hparticleevtchara.cc:28
 hparticleevtchara.cc:29
 hparticleevtchara.cc:30
 hparticleevtchara.cc:31
 hparticleevtchara.cc:32
 hparticleevtchara.cc:33
 hparticleevtchara.cc:34
 hparticleevtchara.cc:35
 hparticleevtchara.cc:36
 hparticleevtchara.cc:37
 hparticleevtchara.cc:38
 hparticleevtchara.cc:39
 hparticleevtchara.cc:40
 hparticleevtchara.cc:41
 hparticleevtchara.cc:42
 hparticleevtchara.cc:43
 hparticleevtchara.cc:44
 hparticleevtchara.cc:45
 hparticleevtchara.cc:46
 hparticleevtchara.cc:47
 hparticleevtchara.cc:48
 hparticleevtchara.cc:49
 hparticleevtchara.cc:50
 hparticleevtchara.cc:51
 hparticleevtchara.cc:52
 hparticleevtchara.cc:53
 hparticleevtchara.cc:54
 hparticleevtchara.cc:55
 hparticleevtchara.cc:56
 hparticleevtchara.cc:57
 hparticleevtchara.cc:58
 hparticleevtchara.cc:59
 hparticleevtchara.cc:60
 hparticleevtchara.cc:61
 hparticleevtchara.cc:62
 hparticleevtchara.cc:63
 hparticleevtchara.cc:64
 hparticleevtchara.cc:65
 hparticleevtchara.cc:66
 hparticleevtchara.cc:67
 hparticleevtchara.cc:68
 hparticleevtchara.cc:69
 hparticleevtchara.cc:70
 hparticleevtchara.cc:71
 hparticleevtchara.cc:72
 hparticleevtchara.cc:73
 hparticleevtchara.cc:74
 hparticleevtchara.cc:75
 hparticleevtchara.cc:76
 hparticleevtchara.cc:77
 hparticleevtchara.cc:78
 hparticleevtchara.cc:79
 hparticleevtchara.cc:80
 hparticleevtchara.cc:81
 hparticleevtchara.cc:82
 hparticleevtchara.cc:83
 hparticleevtchara.cc:84
 hparticleevtchara.cc:85
 hparticleevtchara.cc:86
 hparticleevtchara.cc:87
 hparticleevtchara.cc:88
 hparticleevtchara.cc:89
 hparticleevtchara.cc:90
 hparticleevtchara.cc:91
 hparticleevtchara.cc:92
 hparticleevtchara.cc:93
 hparticleevtchara.cc:94
 hparticleevtchara.cc:95
 hparticleevtchara.cc:96
 hparticleevtchara.cc:97
 hparticleevtchara.cc:98
 hparticleevtchara.cc:99
 hparticleevtchara.cc:100
 hparticleevtchara.cc:101
 hparticleevtchara.cc:102
 hparticleevtchara.cc:103
 hparticleevtchara.cc:104
 hparticleevtchara.cc:105
 hparticleevtchara.cc:106
 hparticleevtchara.cc:107
 hparticleevtchara.cc:108
 hparticleevtchara.cc:109
 hparticleevtchara.cc:110
 hparticleevtchara.cc:111
 hparticleevtchara.cc:112
 hparticleevtchara.cc:113
 hparticleevtchara.cc:114
 hparticleevtchara.cc:115
 hparticleevtchara.cc:116
 hparticleevtchara.cc:117
 hparticleevtchara.cc:118
 hparticleevtchara.cc:119
 hparticleevtchara.cc:120
 hparticleevtchara.cc:121
 hparticleevtchara.cc:122
 hparticleevtchara.cc:123
 hparticleevtchara.cc:124
 hparticleevtchara.cc:125
 hparticleevtchara.cc:126
 hparticleevtchara.cc:127
 hparticleevtchara.cc:128
 hparticleevtchara.cc:129
 hparticleevtchara.cc:130
 hparticleevtchara.cc:131
 hparticleevtchara.cc:132
 hparticleevtchara.cc:133
 hparticleevtchara.cc:134
 hparticleevtchara.cc:135
 hparticleevtchara.cc:136
 hparticleevtchara.cc:137
 hparticleevtchara.cc:138
 hparticleevtchara.cc:139
 hparticleevtchara.cc:140
 hparticleevtchara.cc:141
 hparticleevtchara.cc:142
 hparticleevtchara.cc:143
 hparticleevtchara.cc:144
 hparticleevtchara.cc:145
 hparticleevtchara.cc:146
 hparticleevtchara.cc:147
 hparticleevtchara.cc:148
 hparticleevtchara.cc:149
 hparticleevtchara.cc:150
 hparticleevtchara.cc:151
 hparticleevtchara.cc:152
 hparticleevtchara.cc:153
 hparticleevtchara.cc:154
 hparticleevtchara.cc:155
 hparticleevtchara.cc:156
 hparticleevtchara.cc:157
 hparticleevtchara.cc:158
 hparticleevtchara.cc:159
 hparticleevtchara.cc:160
 hparticleevtchara.cc:161
 hparticleevtchara.cc:162
 hparticleevtchara.cc:163
 hparticleevtchara.cc:164
 hparticleevtchara.cc:165
 hparticleevtchara.cc:166
 hparticleevtchara.cc:167
 hparticleevtchara.cc:168
 hparticleevtchara.cc:169
 hparticleevtchara.cc:170
 hparticleevtchara.cc:171
 hparticleevtchara.cc:172
 hparticleevtchara.cc:173
 hparticleevtchara.cc:174
 hparticleevtchara.cc:175
 hparticleevtchara.cc:176
 hparticleevtchara.cc:177
 hparticleevtchara.cc:178
 hparticleevtchara.cc:179
 hparticleevtchara.cc:180
 hparticleevtchara.cc:181
 hparticleevtchara.cc:182
 hparticleevtchara.cc:183
 hparticleevtchara.cc:184
 hparticleevtchara.cc:185
 hparticleevtchara.cc:186
 hparticleevtchara.cc:187
 hparticleevtchara.cc:188
 hparticleevtchara.cc:189
 hparticleevtchara.cc:190
 hparticleevtchara.cc:191
 hparticleevtchara.cc:192
 hparticleevtchara.cc:193
 hparticleevtchara.cc:194
 hparticleevtchara.cc:195
 hparticleevtchara.cc:196
 hparticleevtchara.cc:197
 hparticleevtchara.cc:198
 hparticleevtchara.cc:199
 hparticleevtchara.cc:200
 hparticleevtchara.cc:201
 hparticleevtchara.cc:202
 hparticleevtchara.cc:203
 hparticleevtchara.cc:204
 hparticleevtchara.cc:205
 hparticleevtchara.cc:206
 hparticleevtchara.cc:207
 hparticleevtchara.cc:208
 hparticleevtchara.cc:209
 hparticleevtchara.cc:210
 hparticleevtchara.cc:211
 hparticleevtchara.cc:212
 hparticleevtchara.cc:213
 hparticleevtchara.cc:214
 hparticleevtchara.cc:215
 hparticleevtchara.cc:216
 hparticleevtchara.cc:217
 hparticleevtchara.cc:218
 hparticleevtchara.cc:219
 hparticleevtchara.cc:220
 hparticleevtchara.cc:221
 hparticleevtchara.cc:222
 hparticleevtchara.cc:223
 hparticleevtchara.cc:224
 hparticleevtchara.cc:225
 hparticleevtchara.cc:226
 hparticleevtchara.cc:227
 hparticleevtchara.cc:228
 hparticleevtchara.cc:229
 hparticleevtchara.cc:230
 hparticleevtchara.cc:231
 hparticleevtchara.cc:232
 hparticleevtchara.cc:233
 hparticleevtchara.cc:234
 hparticleevtchara.cc:235
 hparticleevtchara.cc:236
 hparticleevtchara.cc:237
 hparticleevtchara.cc:238
 hparticleevtchara.cc:239
 hparticleevtchara.cc:240
 hparticleevtchara.cc:241
 hparticleevtchara.cc:242
 hparticleevtchara.cc:243
 hparticleevtchara.cc:244
 hparticleevtchara.cc:245
 hparticleevtchara.cc:246
 hparticleevtchara.cc:247
 hparticleevtchara.cc:248
 hparticleevtchara.cc:249
 hparticleevtchara.cc:250
 hparticleevtchara.cc:251
 hparticleevtchara.cc:252
 hparticleevtchara.cc:253
 hparticleevtchara.cc:254
 hparticleevtchara.cc:255
 hparticleevtchara.cc:256
 hparticleevtchara.cc:257
 hparticleevtchara.cc:258
 hparticleevtchara.cc:259
 hparticleevtchara.cc:260
 hparticleevtchara.cc:261
 hparticleevtchara.cc:262
 hparticleevtchara.cc:263
 hparticleevtchara.cc:264
 hparticleevtchara.cc:265
 hparticleevtchara.cc:266
 hparticleevtchara.cc:267
 hparticleevtchara.cc:268
 hparticleevtchara.cc:269
 hparticleevtchara.cc:270
 hparticleevtchara.cc:271
 hparticleevtchara.cc:272
 hparticleevtchara.cc:273
 hparticleevtchara.cc:274
 hparticleevtchara.cc:275
 hparticleevtchara.cc:276
 hparticleevtchara.cc:277
 hparticleevtchara.cc:278
 hparticleevtchara.cc:279
 hparticleevtchara.cc:280
 hparticleevtchara.cc:281
 hparticleevtchara.cc:282
 hparticleevtchara.cc:283
 hparticleevtchara.cc:284
 hparticleevtchara.cc:285
 hparticleevtchara.cc:286
 hparticleevtchara.cc:287
 hparticleevtchara.cc:288
 hparticleevtchara.cc:289
 hparticleevtchara.cc:290
 hparticleevtchara.cc:291
 hparticleevtchara.cc:292
 hparticleevtchara.cc:293
 hparticleevtchara.cc:294
 hparticleevtchara.cc:295
 hparticleevtchara.cc:296
 hparticleevtchara.cc:297
 hparticleevtchara.cc:298
 hparticleevtchara.cc:299
 hparticleevtchara.cc:300
 hparticleevtchara.cc:301
 hparticleevtchara.cc:302
 hparticleevtchara.cc:303
 hparticleevtchara.cc:304
 hparticleevtchara.cc:305
 hparticleevtchara.cc:306
 hparticleevtchara.cc:307
 hparticleevtchara.cc:308
 hparticleevtchara.cc:309
 hparticleevtchara.cc:310
 hparticleevtchara.cc:311
 hparticleevtchara.cc:312
 hparticleevtchara.cc:313
 hparticleevtchara.cc:314
 hparticleevtchara.cc:315
 hparticleevtchara.cc:316
 hparticleevtchara.cc:317
 hparticleevtchara.cc:318
 hparticleevtchara.cc:319
 hparticleevtchara.cc:320
 hparticleevtchara.cc:321
 hparticleevtchara.cc:322
 hparticleevtchara.cc:323
 hparticleevtchara.cc:324
 hparticleevtchara.cc:325
 hparticleevtchara.cc:326
 hparticleevtchara.cc:327
 hparticleevtchara.cc:328
 hparticleevtchara.cc:329
 hparticleevtchara.cc:330
 hparticleevtchara.cc:331
 hparticleevtchara.cc:332
 hparticleevtchara.cc:333
 hparticleevtchara.cc:334
 hparticleevtchara.cc:335
 hparticleevtchara.cc:336
 hparticleevtchara.cc:337
 hparticleevtchara.cc:338
 hparticleevtchara.cc:339
 hparticleevtchara.cc:340
 hparticleevtchara.cc:341
 hparticleevtchara.cc:342
 hparticleevtchara.cc:343
 hparticleevtchara.cc:344
 hparticleevtchara.cc:345
 hparticleevtchara.cc:346
 hparticleevtchara.cc:347
 hparticleevtchara.cc:348
 hparticleevtchara.cc:349
 hparticleevtchara.cc:350
 hparticleevtchara.cc:351
 hparticleevtchara.cc:352
 hparticleevtchara.cc:353
 hparticleevtchara.cc:354
 hparticleevtchara.cc:355
 hparticleevtchara.cc:356
 hparticleevtchara.cc:357
 hparticleevtchara.cc:358
 hparticleevtchara.cc:359
 hparticleevtchara.cc:360
 hparticleevtchara.cc:361
 hparticleevtchara.cc:362
 hparticleevtchara.cc:363
 hparticleevtchara.cc:364
 hparticleevtchara.cc:365
 hparticleevtchara.cc:366
 hparticleevtchara.cc:367
 hparticleevtchara.cc:368
 hparticleevtchara.cc:369
 hparticleevtchara.cc:370
 hparticleevtchara.cc:371
 hparticleevtchara.cc:372
 hparticleevtchara.cc:373
 hparticleevtchara.cc:374
 hparticleevtchara.cc:375
 hparticleevtchara.cc:376
 hparticleevtchara.cc:377
 hparticleevtchara.cc:378
 hparticleevtchara.cc:379
 hparticleevtchara.cc:380
 hparticleevtchara.cc:381
 hparticleevtchara.cc:382
 hparticleevtchara.cc:383
 hparticleevtchara.cc:384
 hparticleevtchara.cc:385
 hparticleevtchara.cc:386
 hparticleevtchara.cc:387
 hparticleevtchara.cc:388
 hparticleevtchara.cc:389
 hparticleevtchara.cc:390
 hparticleevtchara.cc:391
 hparticleevtchara.cc:392
 hparticleevtchara.cc:393
 hparticleevtchara.cc:394
 hparticleevtchara.cc:395
 hparticleevtchara.cc:396
 hparticleevtchara.cc:397
 hparticleevtchara.cc:398
 hparticleevtchara.cc:399
 hparticleevtchara.cc:400
 hparticleevtchara.cc:401
 hparticleevtchara.cc:402
 hparticleevtchara.cc:403
 hparticleevtchara.cc:404
 hparticleevtchara.cc:405
 hparticleevtchara.cc:406
 hparticleevtchara.cc:407
 hparticleevtchara.cc:408
 hparticleevtchara.cc:409
 hparticleevtchara.cc:410
 hparticleevtchara.cc:411
 hparticleevtchara.cc:412
 hparticleevtchara.cc:413
 hparticleevtchara.cc:414
 hparticleevtchara.cc:415
 hparticleevtchara.cc:416
 hparticleevtchara.cc:417
 hparticleevtchara.cc:418
 hparticleevtchara.cc:419
 hparticleevtchara.cc:420
 hparticleevtchara.cc:421
 hparticleevtchara.cc:422
 hparticleevtchara.cc:423
 hparticleevtchara.cc:424
 hparticleevtchara.cc:425
 hparticleevtchara.cc:426
 hparticleevtchara.cc:427
 hparticleevtchara.cc:428
 hparticleevtchara.cc:429
 hparticleevtchara.cc:430
 hparticleevtchara.cc:431
 hparticleevtchara.cc:432
 hparticleevtchara.cc:433
 hparticleevtchara.cc:434
 hparticleevtchara.cc:435
 hparticleevtchara.cc:436
 hparticleevtchara.cc:437
 hparticleevtchara.cc:438
 hparticleevtchara.cc:439
 hparticleevtchara.cc:440
 hparticleevtchara.cc:441
 hparticleevtchara.cc:442
 hparticleevtchara.cc:443
 hparticleevtchara.cc:444
 hparticleevtchara.cc:445
 hparticleevtchara.cc:446
 hparticleevtchara.cc:447
 hparticleevtchara.cc:448
 hparticleevtchara.cc:449
 hparticleevtchara.cc:450
 hparticleevtchara.cc:451
 hparticleevtchara.cc:452
 hparticleevtchara.cc:453
 hparticleevtchara.cc:454
 hparticleevtchara.cc:455
 hparticleevtchara.cc:456
 hparticleevtchara.cc:457
 hparticleevtchara.cc:458
 hparticleevtchara.cc:459
 hparticleevtchara.cc:460
 hparticleevtchara.cc:461
 hparticleevtchara.cc:462
 hparticleevtchara.cc:463
 hparticleevtchara.cc:464
 hparticleevtchara.cc:465
 hparticleevtchara.cc:466
 hparticleevtchara.cc:467
 hparticleevtchara.cc:468
 hparticleevtchara.cc:469
 hparticleevtchara.cc:470
 hparticleevtchara.cc:471
 hparticleevtchara.cc:472
 hparticleevtchara.cc:473
 hparticleevtchara.cc:474
 hparticleevtchara.cc:475
 hparticleevtchara.cc:476
 hparticleevtchara.cc:477
 hparticleevtchara.cc:478
 hparticleevtchara.cc:479
 hparticleevtchara.cc:480
 hparticleevtchara.cc:481
 hparticleevtchara.cc:482
 hparticleevtchara.cc:483
 hparticleevtchara.cc:484
 hparticleevtchara.cc:485
 hparticleevtchara.cc:486
 hparticleevtchara.cc:487
 hparticleevtchara.cc:488
 hparticleevtchara.cc:489
 hparticleevtchara.cc:490
 hparticleevtchara.cc:491
 hparticleevtchara.cc:492
 hparticleevtchara.cc:493
 hparticleevtchara.cc:494
 hparticleevtchara.cc:495
 hparticleevtchara.cc:496
 hparticleevtchara.cc:497
 hparticleevtchara.cc:498
 hparticleevtchara.cc:499
 hparticleevtchara.cc:500
 hparticleevtchara.cc:501
 hparticleevtchara.cc:502
 hparticleevtchara.cc:503
 hparticleevtchara.cc:504
 hparticleevtchara.cc:505
 hparticleevtchara.cc:506
 hparticleevtchara.cc:507
 hparticleevtchara.cc:508
 hparticleevtchara.cc:509
 hparticleevtchara.cc:510
 hparticleevtchara.cc:511
 hparticleevtchara.cc:512
 hparticleevtchara.cc:513
 hparticleevtchara.cc:514
 hparticleevtchara.cc:515
 hparticleevtchara.cc:516
 hparticleevtchara.cc:517
 hparticleevtchara.cc:518
 hparticleevtchara.cc:519
 hparticleevtchara.cc:520
 hparticleevtchara.cc:521
 hparticleevtchara.cc:522
 hparticleevtchara.cc:523
 hparticleevtchara.cc:524
 hparticleevtchara.cc:525
 hparticleevtchara.cc:526
 hparticleevtchara.cc:527
 hparticleevtchara.cc:528
 hparticleevtchara.cc:529
 hparticleevtchara.cc:530
 hparticleevtchara.cc:531
 hparticleevtchara.cc:532
 hparticleevtchara.cc:533
 hparticleevtchara.cc:534
 hparticleevtchara.cc:535
 hparticleevtchara.cc:536
 hparticleevtchara.cc:537
 hparticleevtchara.cc:538
 hparticleevtchara.cc:539
 hparticleevtchara.cc:540
 hparticleevtchara.cc:541
 hparticleevtchara.cc:542
 hparticleevtchara.cc:543
 hparticleevtchara.cc:544
 hparticleevtchara.cc:545
 hparticleevtchara.cc:546
 hparticleevtchara.cc:547
 hparticleevtchara.cc:548
 hparticleevtchara.cc:549
 hparticleevtchara.cc:550
 hparticleevtchara.cc:551
 hparticleevtchara.cc:552
 hparticleevtchara.cc:553
 hparticleevtchara.cc:554
 hparticleevtchara.cc:555
 hparticleevtchara.cc:556
 hparticleevtchara.cc:557
 hparticleevtchara.cc:558
 hparticleevtchara.cc:559
 hparticleevtchara.cc:560
 hparticleevtchara.cc:561
 hparticleevtchara.cc:562
 hparticleevtchara.cc:563
 hparticleevtchara.cc:564
 hparticleevtchara.cc:565
 hparticleevtchara.cc:566
 hparticleevtchara.cc:567
 hparticleevtchara.cc:568
 hparticleevtchara.cc:569
 hparticleevtchara.cc:570
 hparticleevtchara.cc:571
 hparticleevtchara.cc:572
 hparticleevtchara.cc:573
 hparticleevtchara.cc:574
 hparticleevtchara.cc:575
 hparticleevtchara.cc:576
 hparticleevtchara.cc:577
 hparticleevtchara.cc:578
 hparticleevtchara.cc:579
 hparticleevtchara.cc:580
 hparticleevtchara.cc:581
 hparticleevtchara.cc:582
 hparticleevtchara.cc:583
 hparticleevtchara.cc:584
 hparticleevtchara.cc:585
 hparticleevtchara.cc:586
 hparticleevtchara.cc:587
 hparticleevtchara.cc:588
 hparticleevtchara.cc:589
 hparticleevtchara.cc:590
 hparticleevtchara.cc:591
 hparticleevtchara.cc:592
 hparticleevtchara.cc:593
 hparticleevtchara.cc:594
 hparticleevtchara.cc:595
 hparticleevtchara.cc:596
 hparticleevtchara.cc:597
 hparticleevtchara.cc:598
 hparticleevtchara.cc:599
 hparticleevtchara.cc:600
 hparticleevtchara.cc:601
 hparticleevtchara.cc:602
 hparticleevtchara.cc:603
 hparticleevtchara.cc:604
 hparticleevtchara.cc:605
 hparticleevtchara.cc:606
 hparticleevtchara.cc:607
 hparticleevtchara.cc:608
 hparticleevtchara.cc:609
 hparticleevtchara.cc:610
 hparticleevtchara.cc:611
 hparticleevtchara.cc:612
 hparticleevtchara.cc:613
 hparticleevtchara.cc:614
 hparticleevtchara.cc:615
 hparticleevtchara.cc:616
 hparticleevtchara.cc:617
 hparticleevtchara.cc:618
 hparticleevtchara.cc:619
 hparticleevtchara.cc:620
 hparticleevtchara.cc:621
 hparticleevtchara.cc:622
 hparticleevtchara.cc:623
 hparticleevtchara.cc:624
 hparticleevtchara.cc:625
 hparticleevtchara.cc:626
 hparticleevtchara.cc:627
 hparticleevtchara.cc:628
 hparticleevtchara.cc:629
 hparticleevtchara.cc:630
 hparticleevtchara.cc:631
 hparticleevtchara.cc:632
 hparticleevtchara.cc:633
 hparticleevtchara.cc:634
 hparticleevtchara.cc:635
 hparticleevtchara.cc:636
 hparticleevtchara.cc:637
 hparticleevtchara.cc:638
 hparticleevtchara.cc:639
 hparticleevtchara.cc:640
 hparticleevtchara.cc:641
 hparticleevtchara.cc:642
 hparticleevtchara.cc:643
 hparticleevtchara.cc:644
 hparticleevtchara.cc:645
 hparticleevtchara.cc:646
 hparticleevtchara.cc:647
 hparticleevtchara.cc:648
 hparticleevtchara.cc:649
 hparticleevtchara.cc:650
 hparticleevtchara.cc:651
 hparticleevtchara.cc:652
 hparticleevtchara.cc:653
 hparticleevtchara.cc:654
 hparticleevtchara.cc:655
 hparticleevtchara.cc:656
 hparticleevtchara.cc:657
 hparticleevtchara.cc:658
 hparticleevtchara.cc:659
 hparticleevtchara.cc:660
 hparticleevtchara.cc:661
 hparticleevtchara.cc:662
 hparticleevtchara.cc:663
 hparticleevtchara.cc:664
 hparticleevtchara.cc:665
 hparticleevtchara.cc:666
 hparticleevtchara.cc:667
 hparticleevtchara.cc:668
 hparticleevtchara.cc:669
 hparticleevtchara.cc:670
 hparticleevtchara.cc:671
 hparticleevtchara.cc:672
 hparticleevtchara.cc:673
 hparticleevtchara.cc:674
 hparticleevtchara.cc:675
 hparticleevtchara.cc:676
 hparticleevtchara.cc:677
 hparticleevtchara.cc:678
 hparticleevtchara.cc:679
 hparticleevtchara.cc:680
 hparticleevtchara.cc:681
 hparticleevtchara.cc:682
 hparticleevtchara.cc:683
 hparticleevtchara.cc:684
 hparticleevtchara.cc:685
 hparticleevtchara.cc:686
 hparticleevtchara.cc:687
 hparticleevtchara.cc:688
 hparticleevtchara.cc:689
 hparticleevtchara.cc:690
 hparticleevtchara.cc:691
 hparticleevtchara.cc:692
 hparticleevtchara.cc:693
 hparticleevtchara.cc:694
 hparticleevtchara.cc:695
 hparticleevtchara.cc:696
 hparticleevtchara.cc:697
 hparticleevtchara.cc:698
 hparticleevtchara.cc:699
 hparticleevtchara.cc:700
 hparticleevtchara.cc:701
 hparticleevtchara.cc:702
 hparticleevtchara.cc:703
 hparticleevtchara.cc:704
 hparticleevtchara.cc:705
 hparticleevtchara.cc:706
 hparticleevtchara.cc:707
 hparticleevtchara.cc:708
 hparticleevtchara.cc:709
 hparticleevtchara.cc:710
 hparticleevtchara.cc:711
 hparticleevtchara.cc:712
 hparticleevtchara.cc:713
 hparticleevtchara.cc:714
 hparticleevtchara.cc:715
 hparticleevtchara.cc:716
 hparticleevtchara.cc:717
 hparticleevtchara.cc:718
 hparticleevtchara.cc:719
 hparticleevtchara.cc:720
 hparticleevtchara.cc:721
 hparticleevtchara.cc:722
 hparticleevtchara.cc:723
 hparticleevtchara.cc:724
 hparticleevtchara.cc:725
 hparticleevtchara.cc:726
 hparticleevtchara.cc:727
 hparticleevtchara.cc:728
 hparticleevtchara.cc:729
 hparticleevtchara.cc:730
 hparticleevtchara.cc:731
 hparticleevtchara.cc:732
 hparticleevtchara.cc:733
 hparticleevtchara.cc:734
 hparticleevtchara.cc:735
 hparticleevtchara.cc:736
 hparticleevtchara.cc:737
 hparticleevtchara.cc:738
 hparticleevtchara.cc:739
 hparticleevtchara.cc:740
 hparticleevtchara.cc:741
 hparticleevtchara.cc:742
 hparticleevtchara.cc:743
 hparticleevtchara.cc:744
 hparticleevtchara.cc:745
 hparticleevtchara.cc:746
 hparticleevtchara.cc:747
 hparticleevtchara.cc:748
 hparticleevtchara.cc:749
 hparticleevtchara.cc:750
 hparticleevtchara.cc:751
 hparticleevtchara.cc:752
 hparticleevtchara.cc:753
 hparticleevtchara.cc:754
 hparticleevtchara.cc:755
 hparticleevtchara.cc:756
 hparticleevtchara.cc:757
 hparticleevtchara.cc:758
 hparticleevtchara.cc:759
 hparticleevtchara.cc:760
 hparticleevtchara.cc:761
 hparticleevtchara.cc:762
 hparticleevtchara.cc:763
 hparticleevtchara.cc:764
 hparticleevtchara.cc:765
 hparticleevtchara.cc:766
 hparticleevtchara.cc:767
 hparticleevtchara.cc:768
 hparticleevtchara.cc:769
 hparticleevtchara.cc:770
 hparticleevtchara.cc:771
 hparticleevtchara.cc:772
 hparticleevtchara.cc:773
 hparticleevtchara.cc:774
 hparticleevtchara.cc:775
 hparticleevtchara.cc:776
 hparticleevtchara.cc:777
 hparticleevtchara.cc:778
 hparticleevtchara.cc:779
 hparticleevtchara.cc:780
 hparticleevtchara.cc:781
 hparticleevtchara.cc:782
 hparticleevtchara.cc:783
 hparticleevtchara.cc:784
 hparticleevtchara.cc:785
 hparticleevtchara.cc:786
 hparticleevtchara.cc:787
 hparticleevtchara.cc:788
 hparticleevtchara.cc:789
 hparticleevtchara.cc:790
 hparticleevtchara.cc:791
 hparticleevtchara.cc:792
 hparticleevtchara.cc:793
 hparticleevtchara.cc:794
 hparticleevtchara.cc:795
 hparticleevtchara.cc:796
 hparticleevtchara.cc:797
 hparticleevtchara.cc:798
 hparticleevtchara.cc:799
 hparticleevtchara.cc:800
 hparticleevtchara.cc:801
 hparticleevtchara.cc:802
 hparticleevtchara.cc:803
 hparticleevtchara.cc:804
 hparticleevtchara.cc:805
 hparticleevtchara.cc:806
 hparticleevtchara.cc:807
 hparticleevtchara.cc:808
 hparticleevtchara.cc:809
 hparticleevtchara.cc:810
 hparticleevtchara.cc:811
 hparticleevtchara.cc:812
 hparticleevtchara.cc:813
 hparticleevtchara.cc:814
 hparticleevtchara.cc:815
 hparticleevtchara.cc:816
 hparticleevtchara.cc:817
 hparticleevtchara.cc:818
 hparticleevtchara.cc:819
 hparticleevtchara.cc:820
 hparticleevtchara.cc:821
 hparticleevtchara.cc:822
 hparticleevtchara.cc:823
 hparticleevtchara.cc:824
 hparticleevtchara.cc:825
 hparticleevtchara.cc:826
 hparticleevtchara.cc:827
 hparticleevtchara.cc:828
 hparticleevtchara.cc:829
 hparticleevtchara.cc:830
 hparticleevtchara.cc:831
 hparticleevtchara.cc:832
 hparticleevtchara.cc:833
 hparticleevtchara.cc:834
 hparticleevtchara.cc:835
 hparticleevtchara.cc:836
 hparticleevtchara.cc:837
 hparticleevtchara.cc:838
 hparticleevtchara.cc:839
 hparticleevtchara.cc:840
 hparticleevtchara.cc:841
 hparticleevtchara.cc:842
 hparticleevtchara.cc:843
 hparticleevtchara.cc:844
 hparticleevtchara.cc:845
 hparticleevtchara.cc:846
 hparticleevtchara.cc:847
 hparticleevtchara.cc:848
 hparticleevtchara.cc:849
 hparticleevtchara.cc:850
 hparticleevtchara.cc:851
 hparticleevtchara.cc:852
 hparticleevtchara.cc:853
 hparticleevtchara.cc:854
 hparticleevtchara.cc:855
 hparticleevtchara.cc:856
 hparticleevtchara.cc:857
 hparticleevtchara.cc:858
 hparticleevtchara.cc:859
 hparticleevtchara.cc:860
 hparticleevtchara.cc:861
 hparticleevtchara.cc:862
 hparticleevtchara.cc:863
 hparticleevtchara.cc:864
 hparticleevtchara.cc:865
 hparticleevtchara.cc:866
 hparticleevtchara.cc:867
 hparticleevtchara.cc:868
 hparticleevtchara.cc:869
 hparticleevtchara.cc:870
 hparticleevtchara.cc:871
 hparticleevtchara.cc:872
 hparticleevtchara.cc:873
 hparticleevtchara.cc:874
 hparticleevtchara.cc:875
 hparticleevtchara.cc:876
 hparticleevtchara.cc:877
 hparticleevtchara.cc:878
 hparticleevtchara.cc:879
 hparticleevtchara.cc:880
 hparticleevtchara.cc:881
 hparticleevtchara.cc:882
 hparticleevtchara.cc:883
 hparticleevtchara.cc:884
 hparticleevtchara.cc:885
 hparticleevtchara.cc:886
 hparticleevtchara.cc:887
 hparticleevtchara.cc:888
 hparticleevtchara.cc:889
 hparticleevtchara.cc:890
 hparticleevtchara.cc:891
 hparticleevtchara.cc:892
 hparticleevtchara.cc:893
 hparticleevtchara.cc:894
 hparticleevtchara.cc:895
 hparticleevtchara.cc:896
 hparticleevtchara.cc:897
 hparticleevtchara.cc:898
 hparticleevtchara.cc:899
 hparticleevtchara.cc:900
 hparticleevtchara.cc:901
 hparticleevtchara.cc:902
 hparticleevtchara.cc:903
 hparticleevtchara.cc:904
 hparticleevtchara.cc:905
 hparticleevtchara.cc:906
 hparticleevtchara.cc:907
 hparticleevtchara.cc:908
 hparticleevtchara.cc:909
 hparticleevtchara.cc:910
 hparticleevtchara.cc:911
 hparticleevtchara.cc:912
 hparticleevtchara.cc:913
 hparticleevtchara.cc:914
 hparticleevtchara.cc:915
 hparticleevtchara.cc:916
 hparticleevtchara.cc:917
 hparticleevtchara.cc:918
 hparticleevtchara.cc:919
 hparticleevtchara.cc:920
 hparticleevtchara.cc:921
 hparticleevtchara.cc:922
 hparticleevtchara.cc:923
 hparticleevtchara.cc:924
 hparticleevtchara.cc:925
 hparticleevtchara.cc:926
 hparticleevtchara.cc:927
 hparticleevtchara.cc:928
 hparticleevtchara.cc:929
 hparticleevtchara.cc:930
 hparticleevtchara.cc:931
 hparticleevtchara.cc:932
 hparticleevtchara.cc:933
 hparticleevtchara.cc:934
 hparticleevtchara.cc:935
 hparticleevtchara.cc:936
 hparticleevtchara.cc:937
 hparticleevtchara.cc:938
 hparticleevtchara.cc:939
 hparticleevtchara.cc:940
 hparticleevtchara.cc:941
 hparticleevtchara.cc:942
 hparticleevtchara.cc:943
 hparticleevtchara.cc:944
 hparticleevtchara.cc:945
 hparticleevtchara.cc:946
 hparticleevtchara.cc:947
 hparticleevtchara.cc:948
 hparticleevtchara.cc:949
 hparticleevtchara.cc:950
 hparticleevtchara.cc:951
 hparticleevtchara.cc:952
 hparticleevtchara.cc:953
 hparticleevtchara.cc:954
 hparticleevtchara.cc:955
 hparticleevtchara.cc:956
 hparticleevtchara.cc:957
 hparticleevtchara.cc:958
 hparticleevtchara.cc:959
 hparticleevtchara.cc:960
 hparticleevtchara.cc:961
 hparticleevtchara.cc:962
 hparticleevtchara.cc:963
 hparticleevtchara.cc:964
 hparticleevtchara.cc:965
 hparticleevtchara.cc:966
 hparticleevtchara.cc:967
 hparticleevtchara.cc:968
 hparticleevtchara.cc:969
 hparticleevtchara.cc:970
 hparticleevtchara.cc:971
 hparticleevtchara.cc:972
 hparticleevtchara.cc:973
 hparticleevtchara.cc:974
 hparticleevtchara.cc:975
 hparticleevtchara.cc:976
 hparticleevtchara.cc:977
 hparticleevtchara.cc:978
 hparticleevtchara.cc:979
 hparticleevtchara.cc:980
 hparticleevtchara.cc:981
 hparticleevtchara.cc:982
 hparticleevtchara.cc:983
 hparticleevtchara.cc:984
 hparticleevtchara.cc:985
 hparticleevtchara.cc:986
 hparticleevtchara.cc:987
 hparticleevtchara.cc:988
 hparticleevtchara.cc:989
 hparticleevtchara.cc:990
 hparticleevtchara.cc:991
 hparticleevtchara.cc:992
 hparticleevtchara.cc:993
 hparticleevtchara.cc:994
 hparticleevtchara.cc:995
 hparticleevtchara.cc:996
 hparticleevtchara.cc:997
 hparticleevtchara.cc:998
 hparticleevtchara.cc:999
 hparticleevtchara.cc:1000
 hparticleevtchara.cc:1001
 hparticleevtchara.cc:1002
 hparticleevtchara.cc:1003
 hparticleevtchara.cc:1004
 hparticleevtchara.cc:1005
 hparticleevtchara.cc:1006
 hparticleevtchara.cc:1007
 hparticleevtchara.cc:1008
 hparticleevtchara.cc:1009
 hparticleevtchara.cc:1010
 hparticleevtchara.cc:1011
 hparticleevtchara.cc:1012
 hparticleevtchara.cc:1013
 hparticleevtchara.cc:1014
 hparticleevtchara.cc:1015
 hparticleevtchara.cc:1016
 hparticleevtchara.cc:1017
 hparticleevtchara.cc:1018
 hparticleevtchara.cc:1019
 hparticleevtchara.cc:1020
 hparticleevtchara.cc:1021
 hparticleevtchara.cc:1022
 hparticleevtchara.cc:1023
 hparticleevtchara.cc:1024
 hparticleevtchara.cc:1025
 hparticleevtchara.cc:1026
 hparticleevtchara.cc:1027
 hparticleevtchara.cc:1028
 hparticleevtchara.cc:1029
 hparticleevtchara.cc:1030
 hparticleevtchara.cc:1031
 hparticleevtchara.cc:1032
 hparticleevtchara.cc:1033
 hparticleevtchara.cc:1034
 hparticleevtchara.cc:1035
 hparticleevtchara.cc:1036
 hparticleevtchara.cc:1037
 hparticleevtchara.cc:1038
 hparticleevtchara.cc:1039
 hparticleevtchara.cc:1040
 hparticleevtchara.cc:1041
 hparticleevtchara.cc:1042
 hparticleevtchara.cc:1043
 hparticleevtchara.cc:1044
 hparticleevtchara.cc:1045
 hparticleevtchara.cc:1046
 hparticleevtchara.cc:1047
 hparticleevtchara.cc:1048
 hparticleevtchara.cc:1049
 hparticleevtchara.cc:1050
 hparticleevtchara.cc:1051
 hparticleevtchara.cc:1052
 hparticleevtchara.cc:1053
 hparticleevtchara.cc:1054
 hparticleevtchara.cc:1055
 hparticleevtchara.cc:1056
 hparticleevtchara.cc:1057
 hparticleevtchara.cc:1058
 hparticleevtchara.cc:1059
 hparticleevtchara.cc:1060
 hparticleevtchara.cc:1061
 hparticleevtchara.cc:1062
 hparticleevtchara.cc:1063
 hparticleevtchara.cc:1064
 hparticleevtchara.cc:1065
 hparticleevtchara.cc:1066
 hparticleevtchara.cc:1067
 hparticleevtchara.cc:1068
 hparticleevtchara.cc:1069
 hparticleevtchara.cc:1070
 hparticleevtchara.cc:1071
 hparticleevtchara.cc:1072
 hparticleevtchara.cc:1073
 hparticleevtchara.cc:1074
 hparticleevtchara.cc:1075
 hparticleevtchara.cc:1076
 hparticleevtchara.cc:1077
 hparticleevtchara.cc:1078
 hparticleevtchara.cc:1079
 hparticleevtchara.cc:1080
 hparticleevtchara.cc:1081
 hparticleevtchara.cc:1082
 hparticleevtchara.cc:1083
 hparticleevtchara.cc:1084
 hparticleevtchara.cc:1085
 hparticleevtchara.cc:1086
 hparticleevtchara.cc:1087
 hparticleevtchara.cc:1088
 hparticleevtchara.cc:1089
 hparticleevtchara.cc:1090
 hparticleevtchara.cc:1091
 hparticleevtchara.cc:1092
 hparticleevtchara.cc:1093
 hparticleevtchara.cc:1094
 hparticleevtchara.cc:1095
 hparticleevtchara.cc:1096
 hparticleevtchara.cc:1097
 hparticleevtchara.cc:1098
 hparticleevtchara.cc:1099
 hparticleevtchara.cc:1100
 hparticleevtchara.cc:1101
 hparticleevtchara.cc:1102
 hparticleevtchara.cc:1103
 hparticleevtchara.cc:1104
 hparticleevtchara.cc:1105
 hparticleevtchara.cc:1106
 hparticleevtchara.cc:1107
 hparticleevtchara.cc:1108
 hparticleevtchara.cc:1109
 hparticleevtchara.cc:1110
 hparticleevtchara.cc:1111
 hparticleevtchara.cc:1112
 hparticleevtchara.cc:1113
 hparticleevtchara.cc:1114
 hparticleevtchara.cc:1115
 hparticleevtchara.cc:1116
 hparticleevtchara.cc:1117
 hparticleevtchara.cc:1118
 hparticleevtchara.cc:1119
 hparticleevtchara.cc:1120
 hparticleevtchara.cc:1121
 hparticleevtchara.cc:1122
 hparticleevtchara.cc:1123
 hparticleevtchara.cc:1124
 hparticleevtchara.cc:1125
 hparticleevtchara.cc:1126
 hparticleevtchara.cc:1127
 hparticleevtchara.cc:1128
 hparticleevtchara.cc:1129
 hparticleevtchara.cc:1130
 hparticleevtchara.cc:1131
 hparticleevtchara.cc:1132
 hparticleevtchara.cc:1133
 hparticleevtchara.cc:1134
 hparticleevtchara.cc:1135
 hparticleevtchara.cc:1136
 hparticleevtchara.cc:1137
 hparticleevtchara.cc:1138
 hparticleevtchara.cc:1139
 hparticleevtchara.cc:1140
 hparticleevtchara.cc:1141
 hparticleevtchara.cc:1142
 hparticleevtchara.cc:1143
 hparticleevtchara.cc:1144
 hparticleevtchara.cc:1145
 hparticleevtchara.cc:1146
 hparticleevtchara.cc:1147
 hparticleevtchara.cc:1148
 hparticleevtchara.cc:1149
 hparticleevtchara.cc:1150
 hparticleevtchara.cc:1151
 hparticleevtchara.cc:1152
 hparticleevtchara.cc:1153
 hparticleevtchara.cc:1154
 hparticleevtchara.cc:1155
 hparticleevtchara.cc:1156
 hparticleevtchara.cc:1157
 hparticleevtchara.cc:1158
 hparticleevtchara.cc:1159
 hparticleevtchara.cc:1160
 hparticleevtchara.cc:1161
 hparticleevtchara.cc:1162
 hparticleevtchara.cc:1163
 hparticleevtchara.cc:1164
 hparticleevtchara.cc:1165
 hparticleevtchara.cc:1166
 hparticleevtchara.cc:1167
 hparticleevtchara.cc:1168
 hparticleevtchara.cc:1169
 hparticleevtchara.cc:1170
 hparticleevtchara.cc:1171
 hparticleevtchara.cc:1172
 hparticleevtchara.cc:1173
 hparticleevtchara.cc:1174
 hparticleevtchara.cc:1175
 hparticleevtchara.cc:1176
 hparticleevtchara.cc:1177
 hparticleevtchara.cc:1178
 hparticleevtchara.cc:1179
 hparticleevtchara.cc:1180
 hparticleevtchara.cc:1181
 hparticleevtchara.cc:1182
 hparticleevtchara.cc:1183
 hparticleevtchara.cc:1184
 hparticleevtchara.cc:1185
 hparticleevtchara.cc:1186
 hparticleevtchara.cc:1187
 hparticleevtchara.cc:1188
 hparticleevtchara.cc:1189
 hparticleevtchara.cc:1190
 hparticleevtchara.cc:1191
 hparticleevtchara.cc:1192
 hparticleevtchara.cc:1193
 hparticleevtchara.cc:1194
 hparticleevtchara.cc:1195
 hparticleevtchara.cc:1196
 hparticleevtchara.cc:1197
 hparticleevtchara.cc:1198
 hparticleevtchara.cc:1199
 hparticleevtchara.cc:1200
 hparticleevtchara.cc:1201
 hparticleevtchara.cc:1202
 hparticleevtchara.cc:1203
 hparticleevtchara.cc:1204
 hparticleevtchara.cc:1205
 hparticleevtchara.cc:1206
 hparticleevtchara.cc:1207
 hparticleevtchara.cc:1208
 hparticleevtchara.cc:1209
 hparticleevtchara.cc:1210
 hparticleevtchara.cc:1211
 hparticleevtchara.cc:1212
 hparticleevtchara.cc:1213
 hparticleevtchara.cc:1214
 hparticleevtchara.cc:1215
 hparticleevtchara.cc:1216
 hparticleevtchara.cc:1217
 hparticleevtchara.cc:1218
 hparticleevtchara.cc:1219
 hparticleevtchara.cc:1220
 hparticleevtchara.cc:1221
 hparticleevtchara.cc:1222
 hparticleevtchara.cc:1223
 hparticleevtchara.cc:1224
 hparticleevtchara.cc:1225
 hparticleevtchara.cc:1226
 hparticleevtchara.cc:1227
 hparticleevtchara.cc:1228
 hparticleevtchara.cc:1229
 hparticleevtchara.cc:1230
 hparticleevtchara.cc:1231
 hparticleevtchara.cc:1232
 hparticleevtchara.cc:1233
 hparticleevtchara.cc:1234
 hparticleevtchara.cc:1235
 hparticleevtchara.cc:1236
 hparticleevtchara.cc:1237
 hparticleevtchara.cc:1238
 hparticleevtchara.cc:1239
 hparticleevtchara.cc:1240
 hparticleevtchara.cc:1241
 hparticleevtchara.cc:1242
 hparticleevtchara.cc:1243
 hparticleevtchara.cc:1244
 hparticleevtchara.cc:1245
 hparticleevtchara.cc:1246
 hparticleevtchara.cc:1247
 hparticleevtchara.cc:1248
 hparticleevtchara.cc:1249
 hparticleevtchara.cc:1250
 hparticleevtchara.cc:1251
 hparticleevtchara.cc:1252
 hparticleevtchara.cc:1253
 hparticleevtchara.cc:1254
 hparticleevtchara.cc:1255
 hparticleevtchara.cc:1256
 hparticleevtchara.cc:1257
 hparticleevtchara.cc:1258
 hparticleevtchara.cc:1259
 hparticleevtchara.cc:1260
 hparticleevtchara.cc:1261
 hparticleevtchara.cc:1262
 hparticleevtchara.cc:1263
 hparticleevtchara.cc:1264
 hparticleevtchara.cc:1265
 hparticleevtchara.cc:1266
 hparticleevtchara.cc:1267
 hparticleevtchara.cc:1268
 hparticleevtchara.cc:1269
 hparticleevtchara.cc:1270
 hparticleevtchara.cc:1271
 hparticleevtchara.cc:1272
 hparticleevtchara.cc:1273
 hparticleevtchara.cc:1274
 hparticleevtchara.cc:1275
 hparticleevtchara.cc:1276
 hparticleevtchara.cc:1277
 hparticleevtchara.cc:1278
 hparticleevtchara.cc:1279
 hparticleevtchara.cc:1280
 hparticleevtchara.cc:1281
 hparticleevtchara.cc:1282
 hparticleevtchara.cc:1283
 hparticleevtchara.cc:1284
 hparticleevtchara.cc:1285
 hparticleevtchara.cc:1286
 hparticleevtchara.cc:1287
 hparticleevtchara.cc:1288
 hparticleevtchara.cc:1289
 hparticleevtchara.cc:1290
 hparticleevtchara.cc:1291
 hparticleevtchara.cc:1292
 hparticleevtchara.cc:1293
 hparticleevtchara.cc:1294
 hparticleevtchara.cc:1295
 hparticleevtchara.cc:1296
 hparticleevtchara.cc:1297
 hparticleevtchara.cc:1298
 hparticleevtchara.cc:1299
 hparticleevtchara.cc:1300
 hparticleevtchara.cc:1301
 hparticleevtchara.cc:1302
 hparticleevtchara.cc:1303
 hparticleevtchara.cc:1304
 hparticleevtchara.cc:1305
 hparticleevtchara.cc:1306
 hparticleevtchara.cc:1307
 hparticleevtchara.cc:1308
 hparticleevtchara.cc:1309
 hparticleevtchara.cc:1310
 hparticleevtchara.cc:1311
 hparticleevtchara.cc:1312
 hparticleevtchara.cc:1313
 hparticleevtchara.cc:1314
 hparticleevtchara.cc:1315
 hparticleevtchara.cc:1316
 hparticleevtchara.cc:1317
 hparticleevtchara.cc:1318
 hparticleevtchara.cc:1319
 hparticleevtchara.cc:1320
 hparticleevtchara.cc:1321
 hparticleevtchara.cc:1322
 hparticleevtchara.cc:1323
 hparticleevtchara.cc:1324
 hparticleevtchara.cc:1325
 hparticleevtchara.cc:1326
 hparticleevtchara.cc:1327
 hparticleevtchara.cc:1328
 hparticleevtchara.cc:1329
 hparticleevtchara.cc:1330
 hparticleevtchara.cc:1331
 hparticleevtchara.cc:1332
 hparticleevtchara.cc:1333
 hparticleevtchara.cc:1334
 hparticleevtchara.cc:1335
 hparticleevtchara.cc:1336
 hparticleevtchara.cc:1337
 hparticleevtchara.cc:1338
 hparticleevtchara.cc:1339
 hparticleevtchara.cc:1340
 hparticleevtchara.cc:1341
 hparticleevtchara.cc:1342
 hparticleevtchara.cc:1343
 hparticleevtchara.cc:1344
 hparticleevtchara.cc:1345
 hparticleevtchara.cc:1346
 hparticleevtchara.cc:1347
 hparticleevtchara.cc:1348
 hparticleevtchara.cc:1349
 hparticleevtchara.cc:1350
 hparticleevtchara.cc:1351
 hparticleevtchara.cc:1352
 hparticleevtchara.cc:1353
 hparticleevtchara.cc:1354
 hparticleevtchara.cc:1355
 hparticleevtchara.cc:1356
 hparticleevtchara.cc:1357
 hparticleevtchara.cc:1358
 hparticleevtchara.cc:1359
 hparticleevtchara.cc:1360
 hparticleevtchara.cc:1361
 hparticleevtchara.cc:1362
 hparticleevtchara.cc:1363
 hparticleevtchara.cc:1364
 hparticleevtchara.cc:1365
 hparticleevtchara.cc:1366
 hparticleevtchara.cc:1367
 hparticleevtchara.cc:1368
 hparticleevtchara.cc:1369
 hparticleevtchara.cc:1370
 hparticleevtchara.cc:1371
 hparticleevtchara.cc:1372
 hparticleevtchara.cc:1373
 hparticleevtchara.cc:1374
 hparticleevtchara.cc:1375
 hparticleevtchara.cc:1376
 hparticleevtchara.cc:1377
 hparticleevtchara.cc:1378
 hparticleevtchara.cc:1379
 hparticleevtchara.cc:1380
 hparticleevtchara.cc:1381
 hparticleevtchara.cc:1382
 hparticleevtchara.cc:1383
 hparticleevtchara.cc:1384
 hparticleevtchara.cc:1385
 hparticleevtchara.cc:1386
 hparticleevtchara.cc:1387
 hparticleevtchara.cc:1388
 hparticleevtchara.cc:1389
 hparticleevtchara.cc:1390
 hparticleevtchara.cc:1391
 hparticleevtchara.cc:1392
 hparticleevtchara.cc:1393
 hparticleevtchara.cc:1394
 hparticleevtchara.cc:1395
 hparticleevtchara.cc:1396
 hparticleevtchara.cc:1397
 hparticleevtchara.cc:1398
 hparticleevtchara.cc:1399
 hparticleevtchara.cc:1400
 hparticleevtchara.cc:1401
 hparticleevtchara.cc:1402
 hparticleevtchara.cc:1403
 hparticleevtchara.cc:1404
 hparticleevtchara.cc:1405
 hparticleevtchara.cc:1406
 hparticleevtchara.cc:1407
 hparticleevtchara.cc:1408
 hparticleevtchara.cc:1409
 hparticleevtchara.cc:1410
 hparticleevtchara.cc:1411
 hparticleevtchara.cc:1412
 hparticleevtchara.cc:1413
 hparticleevtchara.cc:1414
 hparticleevtchara.cc:1415
 hparticleevtchara.cc:1416
 hparticleevtchara.cc:1417
 hparticleevtchara.cc:1418
 hparticleevtchara.cc:1419
 hparticleevtchara.cc:1420
 hparticleevtchara.cc:1421
 hparticleevtchara.cc:1422
 hparticleevtchara.cc:1423
 hparticleevtchara.cc:1424
 hparticleevtchara.cc:1425
 hparticleevtchara.cc:1426
 hparticleevtchara.cc:1427
 hparticleevtchara.cc:1428
 hparticleevtchara.cc:1429
 hparticleevtchara.cc:1430
 hparticleevtchara.cc:1431
 hparticleevtchara.cc:1432
 hparticleevtchara.cc:1433
 hparticleevtchara.cc:1434
 hparticleevtchara.cc:1435
 hparticleevtchara.cc:1436
 hparticleevtchara.cc:1437
 hparticleevtchara.cc:1438
 hparticleevtchara.cc:1439
 hparticleevtchara.cc:1440
 hparticleevtchara.cc:1441
 hparticleevtchara.cc:1442
 hparticleevtchara.cc:1443
 hparticleevtchara.cc:1444
 hparticleevtchara.cc:1445
 hparticleevtchara.cc:1446
 hparticleevtchara.cc:1447
 hparticleevtchara.cc:1448
 hparticleevtchara.cc:1449
 hparticleevtchara.cc:1450
 hparticleevtchara.cc:1451
 hparticleevtchara.cc:1452
 hparticleevtchara.cc:1453
 hparticleevtchara.cc:1454
 hparticleevtchara.cc:1455
 hparticleevtchara.cc:1456
 hparticleevtchara.cc:1457
 hparticleevtchara.cc:1458
 hparticleevtchara.cc:1459
 hparticleevtchara.cc:1460
 hparticleevtchara.cc:1461
 hparticleevtchara.cc:1462
 hparticleevtchara.cc:1463
 hparticleevtchara.cc:1464
 hparticleevtchara.cc:1465
 hparticleevtchara.cc:1466
 hparticleevtchara.cc:1467
 hparticleevtchara.cc:1468
 hparticleevtchara.cc:1469
 hparticleevtchara.cc:1470
 hparticleevtchara.cc:1471
 hparticleevtchara.cc:1472
 hparticleevtchara.cc:1473
 hparticleevtchara.cc:1474
 hparticleevtchara.cc:1475
 hparticleevtchara.cc:1476
 hparticleevtchara.cc:1477
 hparticleevtchara.cc:1478
 hparticleevtchara.cc:1479
 hparticleevtchara.cc:1480
 hparticleevtchara.cc:1481
 hparticleevtchara.cc:1482
 hparticleevtchara.cc:1483
 hparticleevtchara.cc:1484
 hparticleevtchara.cc:1485
 hparticleevtchara.cc:1486
 hparticleevtchara.cc:1487
 hparticleevtchara.cc:1488
 hparticleevtchara.cc:1489
 hparticleevtchara.cc:1490
 hparticleevtchara.cc:1491
 hparticleevtchara.cc:1492
 hparticleevtchara.cc:1493
 hparticleevtchara.cc:1494
 hparticleevtchara.cc:1495
 hparticleevtchara.cc:1496
 hparticleevtchara.cc:1497
 hparticleevtchara.cc:1498
 hparticleevtchara.cc:1499
 hparticleevtchara.cc:1500
 hparticleevtchara.cc:1501
 hparticleevtchara.cc:1502
 hparticleevtchara.cc:1503
 hparticleevtchara.cc:1504
 hparticleevtchara.cc:1505
 hparticleevtchara.cc:1506
 hparticleevtchara.cc:1507
 hparticleevtchara.cc:1508
 hparticleevtchara.cc:1509
 hparticleevtchara.cc:1510
 hparticleevtchara.cc:1511
 hparticleevtchara.cc:1512
 hparticleevtchara.cc:1513
 hparticleevtchara.cc:1514
 hparticleevtchara.cc:1515
 hparticleevtchara.cc:1516
 hparticleevtchara.cc:1517
 hparticleevtchara.cc:1518
 hparticleevtchara.cc:1519
 hparticleevtchara.cc:1520
 hparticleevtchara.cc:1521
 hparticleevtchara.cc:1522
 hparticleevtchara.cc:1523
 hparticleevtchara.cc:1524
 hparticleevtchara.cc:1525
 hparticleevtchara.cc:1526
 hparticleevtchara.cc:1527
 hparticleevtchara.cc:1528
 hparticleevtchara.cc:1529
 hparticleevtchara.cc:1530
 hparticleevtchara.cc:1531
 hparticleevtchara.cc:1532
 hparticleevtchara.cc:1533
 hparticleevtchara.cc:1534
 hparticleevtchara.cc:1535
 hparticleevtchara.cc:1536
 hparticleevtchara.cc:1537
 hparticleevtchara.cc:1538
 hparticleevtchara.cc:1539
 hparticleevtchara.cc:1540
 hparticleevtchara.cc:1541
 hparticleevtchara.cc:1542
 hparticleevtchara.cc:1543
 hparticleevtchara.cc:1544
 hparticleevtchara.cc:1545
 hparticleevtchara.cc:1546
 hparticleevtchara.cc:1547
 hparticleevtchara.cc:1548
 hparticleevtchara.cc:1549
 hparticleevtchara.cc:1550
 hparticleevtchara.cc:1551
 hparticleevtchara.cc:1552
 hparticleevtchara.cc:1553
 hparticleevtchara.cc:1554
 hparticleevtchara.cc:1555
 hparticleevtchara.cc:1556
 hparticleevtchara.cc:1557
 hparticleevtchara.cc:1558
 hparticleevtchara.cc:1559
 hparticleevtchara.cc:1560
 hparticleevtchara.cc:1561
 hparticleevtchara.cc:1562
 hparticleevtchara.cc:1563
 hparticleevtchara.cc:1564
 hparticleevtchara.cc:1565
 hparticleevtchara.cc:1566
 hparticleevtchara.cc:1567
 hparticleevtchara.cc:1568
 hparticleevtchara.cc:1569
 hparticleevtchara.cc:1570
 hparticleevtchara.cc:1571
 hparticleevtchara.cc:1572
 hparticleevtchara.cc:1573
 hparticleevtchara.cc:1574
 hparticleevtchara.cc:1575
 hparticleevtchara.cc:1576
 hparticleevtchara.cc:1577
 hparticleevtchara.cc:1578
 hparticleevtchara.cc:1579
 hparticleevtchara.cc:1580
 hparticleevtchara.cc:1581
 hparticleevtchara.cc:1582
 hparticleevtchara.cc:1583
 hparticleevtchara.cc:1584
 hparticleevtchara.cc:1585
 hparticleevtchara.cc:1586
 hparticleevtchara.cc:1587
 hparticleevtchara.cc:1588
 hparticleevtchara.cc:1589
 hparticleevtchara.cc:1590
 hparticleevtchara.cc:1591
 hparticleevtchara.cc:1592
 hparticleevtchara.cc:1593
 hparticleevtchara.cc:1594
 hparticleevtchara.cc:1595
 hparticleevtchara.cc:1596
 hparticleevtchara.cc:1597
 hparticleevtchara.cc:1598
 hparticleevtchara.cc:1599
 hparticleevtchara.cc:1600
 hparticleevtchara.cc:1601
 hparticleevtchara.cc:1602
 hparticleevtchara.cc:1603
 hparticleevtchara.cc:1604
 hparticleevtchara.cc:1605
 hparticleevtchara.cc:1606
 hparticleevtchara.cc:1607
 hparticleevtchara.cc:1608
 hparticleevtchara.cc:1609
 hparticleevtchara.cc:1610
 hparticleevtchara.cc:1611
 hparticleevtchara.cc:1612
 hparticleevtchara.cc:1613
 hparticleevtchara.cc:1614
 hparticleevtchara.cc:1615
 hparticleevtchara.cc:1616
 hparticleevtchara.cc:1617
 hparticleevtchara.cc:1618
 hparticleevtchara.cc:1619
 hparticleevtchara.cc:1620
 hparticleevtchara.cc:1621
 hparticleevtchara.cc:1622
 hparticleevtchara.cc:1623
 hparticleevtchara.cc:1624
 hparticleevtchara.cc:1625
 hparticleevtchara.cc:1626
 hparticleevtchara.cc:1627
 hparticleevtchara.cc:1628
 hparticleevtchara.cc:1629
 hparticleevtchara.cc:1630
 hparticleevtchara.cc:1631
 hparticleevtchara.cc:1632
 hparticleevtchara.cc:1633
 hparticleevtchara.cc:1634
 hparticleevtchara.cc:1635
 hparticleevtchara.cc:1636
 hparticleevtchara.cc:1637
 hparticleevtchara.cc:1638
 hparticleevtchara.cc:1639
 hparticleevtchara.cc:1640
 hparticleevtchara.cc:1641
 hparticleevtchara.cc:1642
 hparticleevtchara.cc:1643
 hparticleevtchara.cc:1644
 hparticleevtchara.cc:1645
 hparticleevtchara.cc:1646
 hparticleevtchara.cc:1647
 hparticleevtchara.cc:1648
 hparticleevtchara.cc:1649
 hparticleevtchara.cc:1650
 hparticleevtchara.cc:1651
 hparticleevtchara.cc:1652
 hparticleevtchara.cc:1653
 hparticleevtchara.cc:1654
 hparticleevtchara.cc:1655
 hparticleevtchara.cc:1656
 hparticleevtchara.cc:1657
 hparticleevtchara.cc:1658
 hparticleevtchara.cc:1659
 hparticleevtchara.cc:1660
 hparticleevtchara.cc:1661
 hparticleevtchara.cc:1662
 hparticleevtchara.cc:1663
 hparticleevtchara.cc:1664
 hparticleevtchara.cc:1665
 hparticleevtchara.cc:1666
 hparticleevtchara.cc:1667
 hparticleevtchara.cc:1668
 hparticleevtchara.cc:1669
 hparticleevtchara.cc:1670
 hparticleevtchara.cc:1671
 hparticleevtchara.cc:1672
 hparticleevtchara.cc:1673
 hparticleevtchara.cc:1674
 hparticleevtchara.cc:1675
 hparticleevtchara.cc:1676
 hparticleevtchara.cc:1677
 hparticleevtchara.cc:1678
 hparticleevtchara.cc:1679
 hparticleevtchara.cc:1680
 hparticleevtchara.cc:1681
 hparticleevtchara.cc:1682
 hparticleevtchara.cc:1683
 hparticleevtchara.cc:1684
 hparticleevtchara.cc:1685
 hparticleevtchara.cc:1686
 hparticleevtchara.cc:1687
 hparticleevtchara.cc:1688
 hparticleevtchara.cc:1689
 hparticleevtchara.cc:1690
 hparticleevtchara.cc:1691
 hparticleevtchara.cc:1692
 hparticleevtchara.cc:1693
 hparticleevtchara.cc:1694
 hparticleevtchara.cc:1695
 hparticleevtchara.cc:1696
 hparticleevtchara.cc:1697
 hparticleevtchara.cc:1698
 hparticleevtchara.cc:1699
 hparticleevtchara.cc:1700
 hparticleevtchara.cc:1701
 hparticleevtchara.cc:1702
 hparticleevtchara.cc:1703
 hparticleevtchara.cc:1704
 hparticleevtchara.cc:1705
 hparticleevtchara.cc:1706
 hparticleevtchara.cc:1707
 hparticleevtchara.cc:1708
 hparticleevtchara.cc:1709
 hparticleevtchara.cc:1710
 hparticleevtchara.cc:1711
 hparticleevtchara.cc:1712
 hparticleevtchara.cc:1713
 hparticleevtchara.cc:1714
 hparticleevtchara.cc:1715
 hparticleevtchara.cc:1716
 hparticleevtchara.cc:1717
 hparticleevtchara.cc:1718
 hparticleevtchara.cc:1719
 hparticleevtchara.cc:1720
 hparticleevtchara.cc:1721
 hparticleevtchara.cc:1722
 hparticleevtchara.cc:1723
 hparticleevtchara.cc:1724
 hparticleevtchara.cc:1725
 hparticleevtchara.cc:1726
 hparticleevtchara.cc:1727
 hparticleevtchara.cc:1728
 hparticleevtchara.cc:1729
 hparticleevtchara.cc:1730
 hparticleevtchara.cc:1731
 hparticleevtchara.cc:1732
 hparticleevtchara.cc:1733
 hparticleevtchara.cc:1734
 hparticleevtchara.cc:1735
 hparticleevtchara.cc:1736
 hparticleevtchara.cc:1737
 hparticleevtchara.cc:1738
 hparticleevtchara.cc:1739
 hparticleevtchara.cc:1740
 hparticleevtchara.cc:1741
 hparticleevtchara.cc:1742
 hparticleevtchara.cc:1743
 hparticleevtchara.cc:1744
 hparticleevtchara.cc:1745
 hparticleevtchara.cc:1746
 hparticleevtchara.cc:1747
 hparticleevtchara.cc:1748
 hparticleevtchara.cc:1749
 hparticleevtchara.cc:1750
 hparticleevtchara.cc:1751
 hparticleevtchara.cc:1752
 hparticleevtchara.cc:1753
 hparticleevtchara.cc:1754
 hparticleevtchara.cc:1755
 hparticleevtchara.cc:1756
 hparticleevtchara.cc:1757
 hparticleevtchara.cc:1758
 hparticleevtchara.cc:1759
 hparticleevtchara.cc:1760
 hparticleevtchara.cc:1761
 hparticleevtchara.cc:1762
 hparticleevtchara.cc:1763
 hparticleevtchara.cc:1764
 hparticleevtchara.cc:1765
 hparticleevtchara.cc:1766
 hparticleevtchara.cc:1767
 hparticleevtchara.cc:1768
 hparticleevtchara.cc:1769
 hparticleevtchara.cc:1770
 hparticleevtchara.cc:1771
 hparticleevtchara.cc:1772
 hparticleevtchara.cc:1773
 hparticleevtchara.cc:1774
 hparticleevtchara.cc:1775
 hparticleevtchara.cc:1776
 hparticleevtchara.cc:1777
 hparticleevtchara.cc:1778
 hparticleevtchara.cc:1779
 hparticleevtchara.cc:1780
 hparticleevtchara.cc:1781
 hparticleevtchara.cc:1782
 hparticleevtchara.cc:1783
 hparticleevtchara.cc:1784
 hparticleevtchara.cc:1785
 hparticleevtchara.cc:1786
 hparticleevtchara.cc:1787
 hparticleevtchara.cc:1788
 hparticleevtchara.cc:1789
 hparticleevtchara.cc:1790
 hparticleevtchara.cc:1791
 hparticleevtchara.cc:1792
 hparticleevtchara.cc:1793
 hparticleevtchara.cc:1794
 hparticleevtchara.cc:1795
 hparticleevtchara.cc:1796
 hparticleevtchara.cc:1797
 hparticleevtchara.cc:1798
 hparticleevtchara.cc:1799
 hparticleevtchara.cc:1800
 hparticleevtchara.cc:1801
 hparticleevtchara.cc:1802
 hparticleevtchara.cc:1803
 hparticleevtchara.cc:1804
 hparticleevtchara.cc:1805
 hparticleevtchara.cc:1806
 hparticleevtchara.cc:1807
 hparticleevtchara.cc:1808
 hparticleevtchara.cc:1809
 hparticleevtchara.cc:1810
 hparticleevtchara.cc:1811
 hparticleevtchara.cc:1812
 hparticleevtchara.cc:1813
 hparticleevtchara.cc:1814
 hparticleevtchara.cc:1815
 hparticleevtchara.cc:1816
 hparticleevtchara.cc:1817
 hparticleevtchara.cc:1818
 hparticleevtchara.cc:1819
 hparticleevtchara.cc:1820
 hparticleevtchara.cc:1821
 hparticleevtchara.cc:1822
 hparticleevtchara.cc:1823
 hparticleevtchara.cc:1824
 hparticleevtchara.cc:1825
 hparticleevtchara.cc:1826
 hparticleevtchara.cc:1827
 hparticleevtchara.cc:1828
 hparticleevtchara.cc:1829
 hparticleevtchara.cc:1830
 hparticleevtchara.cc:1831
 hparticleevtchara.cc:1832
 hparticleevtchara.cc:1833
 hparticleevtchara.cc:1834
 hparticleevtchara.cc:1835
 hparticleevtchara.cc:1836
 hparticleevtchara.cc:1837
 hparticleevtchara.cc:1838
 hparticleevtchara.cc:1839
 hparticleevtchara.cc:1840
 hparticleevtchara.cc:1841
 hparticleevtchara.cc:1842
 hparticleevtchara.cc:1843
 hparticleevtchara.cc:1844
 hparticleevtchara.cc:1845
 hparticleevtchara.cc:1846
 hparticleevtchara.cc:1847
 hparticleevtchara.cc:1848
 hparticleevtchara.cc:1849
 hparticleevtchara.cc:1850
 hparticleevtchara.cc:1851
 hparticleevtchara.cc:1852
 hparticleevtchara.cc:1853
 hparticleevtchara.cc:1854
 hparticleevtchara.cc:1855
 hparticleevtchara.cc:1856
 hparticleevtchara.cc:1857
 hparticleevtchara.cc:1858
 hparticleevtchara.cc:1859
 hparticleevtchara.cc:1860
 hparticleevtchara.cc:1861
 hparticleevtchara.cc:1862
 hparticleevtchara.cc:1863
 hparticleevtchara.cc:1864
 hparticleevtchara.cc:1865
 hparticleevtchara.cc:1866
 hparticleevtchara.cc:1867
 hparticleevtchara.cc:1868
 hparticleevtchara.cc:1869
 hparticleevtchara.cc:1870
 hparticleevtchara.cc:1871
 hparticleevtchara.cc:1872
 hparticleevtchara.cc:1873
 hparticleevtchara.cc:1874
 hparticleevtchara.cc:1875
 hparticleevtchara.cc:1876
 hparticleevtchara.cc:1877
 hparticleevtchara.cc:1878
 hparticleevtchara.cc:1879
 hparticleevtchara.cc:1880
 hparticleevtchara.cc:1881
 hparticleevtchara.cc:1882
 hparticleevtchara.cc:1883
 hparticleevtchara.cc:1884
 hparticleevtchara.cc:1885
 hparticleevtchara.cc:1886
 hparticleevtchara.cc:1887
 hparticleevtchara.cc:1888
 hparticleevtchara.cc:1889
 hparticleevtchara.cc:1890
 hparticleevtchara.cc:1891
 hparticleevtchara.cc:1892
 hparticleevtchara.cc:1893
 hparticleevtchara.cc:1894
 hparticleevtchara.cc:1895
 hparticleevtchara.cc:1896
 hparticleevtchara.cc:1897
 hparticleevtchara.cc:1898
 hparticleevtchara.cc:1899
 hparticleevtchara.cc:1900
 hparticleevtchara.cc:1901
 hparticleevtchara.cc:1902
 hparticleevtchara.cc:1903
 hparticleevtchara.cc:1904
 hparticleevtchara.cc:1905
 hparticleevtchara.cc:1906
 hparticleevtchara.cc:1907
 hparticleevtchara.cc:1908
 hparticleevtchara.cc:1909
 hparticleevtchara.cc:1910