ROOT logo
void InitHistograms(AliDielectron *die, Int_t cutDefinition);
void InitCF(AliDielectron* die, Int_t cutDefinition);

void SetupTrackCuts(Bool_t isESD, AliDielectron *die, Int_t cutDefinition);
void SetupPairCuts(AliDielectron *die, Int_t cutDefinition);

void AddMCSignals(AliDielectron *die);
void SetEtaCorrection();
TVectorD *GetRunNumbers();

TString names=("TOFTRDany;TOFTRDfirst");
enum { kTOFTRD, kTOFTRD2};

TObjArray *arrNames=names.Tokenize(";");
const Int_t nDie=arrNames->GetEntries();

Bool_t hasMC=kFALSE;

AliDielectron* ConfigBJpsi_ff_PbPb(Int_t cutDefinition, Bool_t isMC=kFALSE)
{
  //
  // Setup the instance of AliDielectron
  //
  

  // MC event handler?
  hasMC=isMC;
    //(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);    

  //ESD handler?
  Bool_t isESD=(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()->IsA()==AliESDInputHandler::Class());
  
  // switch off some configurations
  //switch(cutDefinition) {
   //case kTOFTRD:   
   //case kTOFTRD2:   
  //default:		return 0x0;      break;
  //}
  
  // create the actual framework object
  TString name=Form("%02d",cutDefinition);
  if (cutDefinition<arrNames->GetEntriesFast()){
    name=arrNames->At(cutDefinition)->GetName();
  }
  AliDielectron *die = new AliDielectron(Form("%s",name.Data()),
                                         Form("Track cuts: %s",name.Data()));
  // debugTree
  AliDielectronDebugTree *tree = new AliDielectronDebugTree(Form("%s",name.Data()),Form("Track cuts: %s",name.Data()));
  tree->SetOutputFileName(Form("jpsi_debug_tree_%s.root",name.Data())); 

  if(tree){
           tree->AddLegVariable(AliDielectronVarManager::kPt);
           tree->AddLegVariable(AliDielectronVarManager::kPx);
           tree->AddLegVariable(AliDielectronVarManager::kPy);
           tree->AddLegVariable(AliDielectronVarManager::kEta);
	   tree->AddLegVariable(AliDielectronVarManager::kXv);
           tree->AddLegVariable(AliDielectronVarManager::kYv);
           tree->AddLegVariable(AliDielectronVarManager::kE);
           tree->AddLegVariable(AliDielectronVarManager::kTPCnSigmaEle);
           tree->AddLegVariable(AliDielectronVarManager::kTPCsignal);
	   tree->AddLegVariable(AliDielectronVarManager::kTRDntracklets);
	   tree->AddLegVariable(AliDielectronVarManager::kNclsTRD);
	   tree->AddLegVariable(AliDielectronVarManager::kTOFnSigmaEle);
           tree->AddLegVariable(AliDielectronVarManager::kITSLayerFirstCls);
	   tree->AddPairVariable(AliDielectronVarManager::kM);
           tree->AddPairVariable(AliDielectronVarManager::kE);
           tree->AddPairVariable(AliDielectronVarManager::kP);
           tree->AddPairVariable(AliDielectronVarManager::kPt);
	   tree->AddPairVariable(AliDielectronVarManager::kY);
           tree->AddPairVariable(AliDielectronVarManager::kEta);
           tree->AddPairVariable(AliDielectronVarManager::kPairType);
	   tree->AddPairVariable(AliDielectronVarManager::kPseudoProperTime);
	   tree->AddPairVariable(AliDielectronVarManager::kPseudoProperTimeErr);
	   if(hasMC) tree->AddPairVariable(AliDielectronVarManager::kPseudoProperTimeResolution);
	   if(hasMC) tree->AddPairVariable(AliDielectronVarManager::kPseudoProperTimePull);
	   if(hasMC) tree->AddPairVariable(AliDielectronVarManager::kPdgCode);
           if(hasMC) tree->AddPairVariable(AliDielectronVarManager::kPdgCodeMother);
           if(hasMC) tree->AddPairVariable(AliDielectronVarManager::kPdgCodeGrandMother);
           if(hasMC) tree->AddPairVariable(AliDielectronVarManager::kIsJpsiPrimary);
	   tree->AddPairVariable(AliDielectronVarManager::kCentralitySPD);
	   tree->AddPairVariable(AliDielectronVarManager::kCentrality);
	   tree->AddPairVariable(AliDielectronVarManager::kNevents);
	   tree->AddPairVariable(AliDielectronVarManager::kXvPrim);
           tree->AddPairVariable(AliDielectronVarManager::kYvPrim); 
   	   tree->AddPairVariable(AliDielectronVarManager::kZvPrim);
           tree->AddPairVariable(AliDielectronVarManager::kXRes);
           tree->AddPairVariable(AliDielectronVarManager::kYRes);
	   tree->AddPairVariable(AliDielectronVarManager::kZRes);

	    }
  //
  // QA histogram setup
  //
  die->SetDebugTree(tree);


  // Monte Carlo Signals and TRD efficiency tables
  if(hasMC) {
    AddMCSignals(die);
    
    // trd tables
    TString pidTab="$TRAIN_ROOT/util/dielectron/dielectron/TRDpidEff_eleProb07_TRDntr4_6.root";
    TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
    if (trainRoot.IsNull()) pidTab="$ALICE_ROOT/PWGDQ/dielectron/files/TRDpidEff_eleProb07_TRDntr4_6.root";

    if (gSystem->AccessPathName(gSystem->ExpandPathName(pidTab.Data())))
      Error("ConfigPbPb","PID table not found: %s",pidTab.Data());
    else 
      die->SetTRDcorrectionFilename(pidTab.Data());
  }
  
  // cut setup
  SetupTrackCuts(isESD,die,cutDefinition);
  SetupPairCuts(die,cutDefinition);
  
  // histogram setup
  if(cutDefinition == kTOFTRD  || 
	cutDefinition == kTOFTRD2   ) 
    InitHistograms(die,cutDefinition);
  
  // CF container setup
  //  InitCF(die,cutDefinition);
  
  // bgrd estimators
  if(!hasMC) {
    
    if(cutDefinition == kTOFTRD) {  
      // rotations
      AliDielectronTrackRotator *rot=new AliDielectronTrackRotator;
      rot->SetIterations(10);
      rot->SetConeAnglePhi(TMath::Pi());
      rot->SetStartAnglePhi(TMath::Pi());
      die->SetTrackRotator(rot);
      // mixing
      AliDielectronMixingHandler *mix=new AliDielectronMixingHandler;
      mix->AddVariable(AliDielectronVarManager::kZvPrim,20,-10.,10.);
      mix->AddVariable(AliDielectronVarManager::kCentrality,"0,5,10,20,50,80");
      mix->SetMixType(AliDielectronMixingHandler::kAll);
      mix->SetDepth(50);
      die->SetMixingHandler(mix);
    }
    
    
    }
    
  
  // prefilter settings
  //if(cutDefinition == kTOFTRD2) 
  //  die->SetPreFilterAllSigns();
  //else 
    die->SetPreFilterUnlikeOnly();
  
  // setup eta correction
  if(isESD) SetEtaCorrection();
  
  return die;
}

//______________________________________________________________________________________
void SetupTrackCuts(Bool_t isESD, AliDielectron *die, Int_t cutDefinition)
{
  //
  // Setup the track cuts
  //
  
  // Quality cuts
  AliDielectronCutGroup* cuts = new AliDielectronCutGroup("cuts","cuts",AliDielectronCutGroup::kCompAND);
  die->GetTrackFilter().AddCuts(cuts);
  
  //Pt cut, should make execution a bit faster
  AliDielectronVarCuts *pt = new AliDielectronVarCuts("Pt>.8","Pt>.8");
  pt->AddCut(AliDielectronVarManager::kPt,0.8,1e30);
  cuts->AddCut(pt);
  
	// track cuts ESD and AOD
  AliDielectronVarCuts *varCuts = new AliDielectronVarCuts("VarCuts","VarCuts");
  varCuts->AddCut(AliDielectronVarManager::kImpactParXY, -1.0,   1.0);
  varCuts->AddCut(AliDielectronVarManager::kImpactParZ,  -3.0,   3.0);
  varCuts->AddCut(AliDielectronVarManager::kEta,         -0.9,   0.9);
  //varCuts->AddCut(AliDielectronVarManager::kTPCchi2Cl,    0.0,   4.0);
  varCuts->AddCut(AliDielectronVarManager::kNclsTPC,     70.0, 160.0);
  varCuts->AddCut(AliDielectronVarManager::kKinkIndex0,   0.0);

   AliDielectronTrackCuts *trkCuts = new AliDielectronTrackCuts("TrkCuts","TrkCuts");
  if(isESD){
    varCuts->AddCut(AliDielectronVarManager::kTPCchi2Cl,    0.0,   4.0);
    switch(cutDefinition) {
    case kTOFTRD2: varCuts->AddCut(AliDielectronVarManager::kITSLayerFirstCls,-0.01,0.5); //ITS(0) = SPDfirst
      break;
    default:      varCuts->AddCut(AliDielectronVarManager::kITSLayerFirstCls,-0.01,1.5); //ITS(0-1) = SPDany
      break;
   }
  }else
      {
      switch(cutDefinition) {
      case kTOFTRD2: trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);  //ITS(0) = SPDfirst
      break;
      default:  trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);//ITS(0-1) = SPDany
      break;
      }
    }
 
  cuts->AddCut(varCuts);
 
  trkCuts->SetRequireITSRefit(kTRUE);
  trkCuts->SetRequireTPCRefit(kTRUE);
  cuts->AddCut(trkCuts);
  
  //Do we have an MC handler?
  //  Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
  
  /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv PID CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
  AliDielectronPID *pid = new AliDielectronPID("PID","PID");
  
  ////////////////////////////////// DATA
  if(!hasMC) {
    pid->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-100.,3.5,0.,0.,kTRUE);
    pid->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-100.,3.5,0.,0.,kTRUE);
    
    //if(cutDefinition==kTRD || cutDefinition>=kTOFTRD || cutDefinition>=kTOFTRD2) 
    if(cutDefinition>=kTOFTRD || cutDefinition>=kTOFTRD2) 
      pid->AddCut(AliDielectronPID::kTRDeleEff,AliPID::kElectron,.8,1.,3.5.,6.,kFALSE,
                  AliDielectronPID::kIfAvailable,AliDielectronVarManager::kTRDpidQuality);
  }
  
  ////////////////////////////////// MC
  if(hasMC) {
    
    // electron
    Double_t nSigmaPi = 3.5; Double_t nSigmaP = 3.5;
    Double_t resolution=0.0549;
    Double_t BBpro[5] = {0};
    Double_t BBpio[5] = {0};
    
    for(Int_t icent=0; icent<8; icent++) {
      
      switch (icent) {
        case 0:  // 0-10%
          BBpro[0] = 0.031555;  BBpro[1] = 26.0595; BBpro[2] = 3.02422e-11;  BBpro[3] = 2.05594; BBpro[4] = 5.99848;
          BBpio[0] = 0.0252122; BBpio[1] = 38.8991; BBpio[2] = 4.0901e-11;   BBpio[3] = 5.27988; BBpio[4] = 4.3108;
          break;
        case 1:  // 10-20%
          BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11;  BBpro[3] = 2.05802; BBpro[4] = 5.99999;
          BBpio[0] = 0.0252127; BBpio[1] = 33.8617; BBpio[2] = 3.56866e-11;  BBpio[3] = 5.24831; BBpio[4] = 4.31093;
          break;
        case 2:  // 20-30%
          BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11;  BBpro[3] = 2.05802; BBpro[4] = 5.99999;
          BBpio[0] = 0.0263205; BBpio[1] = 37.9307; BBpio[2] = 4.29724e-11;  BBpio[3] = 5.74458; BBpio[4] = 4.32459;
          break;
        case 3:  // 30-40%
          BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11;  BBpro[3] = 2.05802; BBpro[4] = 5.99999;
          BBpio[0] = 0.026294;  BBpio[1] = 39.0346; BBpio[2] = 4.12261e-11;  BBpio[3] = 5.28808; BBpio[4] = 4.31301;
          break;
        case 4:  // 40-50%
          BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11;  BBpro[3] = 2.05802; BBpro[4] = 5.99999;
          BBpio[0] = 0.0263134; BBpio[1] = 38.2084; BBpio[2] = 3.75159e-11;  BBpio[3] = 5.78125; BBpio[4] = 4.31363;
          break;
        case 5:  // 50-60%
          BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11;  BBpro[3] = 2.05802; BBpro[4] = 5.99999;
          BBpio[0] = 0.0263134; BBpio[1] = 38.2084; BBpio[2] = 3.75159e-11;  BBpio[3] = 5.78125; BBpio[4] = 4.31363;
          break;
        case 6:  // 60-70%
          BBpro[0] = 0.031555;  BBpro[1] = 26.0595; BBpro[2] = 3.02422e-11;  BBpro[3] = 2.05594; BBpro[4] = 5.99848;
          BBpio[0] = 0.026302;  BBpio[1] = 38.6888; BBpio[2] = 3.56792e-11;  BBpio[3] = 5.2465;  BBpio[4] = 4.31094;
          break;
        case 7:  // 70-80%
          BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11;  BBpro[3] = 2.05802; BBpro[4] = 5.99999;
          BBpio[0] = 0.0263134; BBpio[1] = 38.2084; BBpio[2] = 3.75159e-11;  BBpio[3] = 5.78125; BBpio[4] = 4.31363;
          break;
        case 8:  // 80-90%
          BBpro[0] = 0.0313438; BBpro[1] = 25.8666; BBpro[2] = 4.5457e-11;   BBpro[3] = 2.07912; BBpro[4] = 5.99986;
          BBpio[0] = 0.0252127; BBpio[1] = 33.8617; BBpio[2] = 3.56866e-11;  BBpio[3] = 5.24831; BBpio[4] = 4.31093;
          break;
        case 9:  // 90-100%
          BBpro[0] = 0.0319126; BBpro[1] = 36.8784; BBpro[2] = 3.4274e-11;   BBpro[3] = 3.2431;  BBpro[4] = 5.93388;
          BBpio[0] = 0.027079;  BBpio[1] = 67.5936; BBpio[2] = 9.72548e-11;  BBpio[3] = 9.61382; BBpio[4] = 5.99372;
          break;
      }
      
      
      TF1 *ffPro=new TF1(Form("fBethe%d_c%d",AliPID::kProton,icent), Form("(%f*%f+(AliExternalTrackParam::BetheBlochAleph(x/%f,[0],[1],[2],[3],[4])-AliExternalTrackParam::BetheBlochAleph(x/%f,[0],[1],[2],[3],[4])))/%f", nSigmaP,resolution, AliPID::ParticleMass(AliPID::kProton), AliPID::ParticleMass(AliPID::kElectron), resolution), 0.05,200.);
      
      TF1 *ffPio=new TF1(Form("fBethe%d_c%d",AliPID::kPion,icent), Form("(%f*%f+(AliExternalTrackParam::BetheBlochAleph(x/%f,[0],[1],[2],[3],[4])-AliExternalTrackParam::BetheBlochAleph(x/%f,[0],[1],[2],[3],[4])))/%f", nSigmaPi,resolution, AliPID::ParticleMass(AliPID::kPion), AliPID::ParticleMass(AliPID::kElectron), resolution), 0.05,200.);
      
      TString list=gSystem->Getenv("LIST");
      
      //LHC11a10b
      if (list.Contains("LHC11a10b") || list.IsNull()) {
        printf("LHC11a10b parameters\n");
        ffPro->SetParameters(BBpro[0],BBpro[1],BBpro[2],BBpro[3],BBpro[4]);
        ffPio->SetParameters(BBpio[0],BBpio[1],BBpio[2],BBpio[3],BBpio[4]);
        
        // proton cut
        pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,ffPro,10,((double)icent)*10.,((double)icent+1)*10,
                    kFALSE,AliDielectronPID::kRequire,AliDielectronVarManager::kCentrality);
        // pion cut
        pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,ffPio,10,((double)icent)*10.,((double)icent+1)*10,
                    kFALSE,AliDielectronPID::kRequire,AliDielectronVarManager::kCentrality);
      }
    }
    
    // shifts for the nSigma electrons
    TGraph* nSigmaCorrection = new TGraph();
    // LHC11a10b
    if (list.Contains("LHC11a10b") || list.IsNull()) {
      nSigmaCorrection->SetPoint(0, 137161., -0.50-(0.28));
      nSigmaCorrection->SetPoint(1, 139510., -0.50-(0.28));
      pid->SetCorrGraph(nSigmaCorrection);
    }
    
  } //hasMC
  
  ////////////////////////////////// DATA + MC
  // pid cuts TPC + TOF & TRD
  pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.);
  if(cutDefinition==kTOFTRD || cutDefinition==kTOFTRD2) 
    pid->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,3.,0.,0.,kFALSE,AliDielectronPID::kIfAvailable);
  
  //if(cutDefinition!=krec) 
  cuts->AddCut(pid);
  /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PID CUTS ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
  
  
  // exclude conversion electrons selected by the tender
  AliDielectronTrackCuts *noconv=new AliDielectronTrackCuts("noConv","noConv");
  noconv->SetV0DaughterCut(AliPID::kElectron,kTRUE);
  cuts->AddCut(noconv);
  
}

//______________________________________________________________________________________
void SetupPairCuts(AliDielectron *die, Int_t cutDefinition)
{
  //
  // Setup the pair cuts
  //
  
  // conversion rejection
  Double_t gCut = 0.05;             // default
  
  AliDielectronVarCuts *gammaCut=new AliDielectronVarCuts("gammaCut","gammaCut");
  gammaCut->AddCut(AliDielectronVarManager::kM,0.,gCut);
  die->GetPairPreFilter().AddCuts(gammaCut);
  
  
  // rapidity selection
  AliDielectronVarCuts *rapCut=new AliDielectronVarCuts("|Y|<.9","|Y|<.9");
  rapCut->AddCut(AliDielectronVarManager::kY,-0.9,0.9);
  die->GetPairFilter().AddCuts(rapCut);
  
}

//______________________________________________________________________________________
void InitHistograms(AliDielectron *die, Int_t cutDefinition)
{
  //
  // Initialise the histograms
  //
  //  Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
  
  //Setup histogram Manager
  AliDielectronHistos *histos=new AliDielectronHistos(die->GetName(),die->GetTitle());
  
  
  //add histograms to event class
  histos->AddClass("Event");
  histos->UserHistogram("Event","VtxZ","Vertex Z;z (cm)",
                        300,-15.,15.,
                        AliDielectronVarManager::kZvPrim);
  //histos->UserHistogram("Event","Centrality","Centrality;centrality (%)",
  //                      "0.,5.,10.,20.,40.,50.,60.,80.,100.",
  //                      AliDielectronVarManager::kCentrality);
  histos->UserHistogram("Event","Centrality","Centrality;centrality (%)",
                        20,0.,100.,AliDielectronVarManager::kCentrality);

  histos->UserHistogram("Event","Multiplicity","Multiplicity V0;Multiplicity V0",
                        500,0.,25000., AliDielectronVarManager::kMultV0);
  histos->UserHistogram("Event","Cent_Mult","Centrality vs. Multiplicity;centrality (%);Multiplicity V0",
                        10,0.,100., 500,0.,25000.,AliDielectronVarManager::kCentrality,AliDielectronVarManager::kMultV0);
  histos->UserProfile("Event","Cent_Nacc",
                      "accepted tracks;centrality (%)",
                      AliDielectronVarManager::kNacc,
                      "0.,5.,10.,20.,40.,50.,60.,80.,100.",
                      AliDielectronVarManager::kCentrality);
  histos->UserProfile("Event","Cent_NVtxContrib",
                      "number of vertex contributors;centrality (%)",
                      AliDielectronVarManager::kNVtxContrib,
                      "0.,5.,10.,20.,40.,50.,60.,80.,100.",
                      AliDielectronVarManager::kCentrality);
  
  
 
  
  ////// MONTE CARLO //////
  /*
  if(cutDefinition == kTOFTRD && hasMC) {
    histos->AddClass("MCEvent");
    histos->UserHistogram("MCEvent","Cent_NJPsis","Centrality vs. generated incl. J/#psi per event;centrality (%);N_{J/#psi}",
                          10,0.,100., 21,-0.5,20.5,
                          AliDielectronVarManager::kCentrality,AliDielectronVarManager::kNumberOfJPsis);
  }
  */
  
  
  //Initialise histogram classes
  histos->SetReservedWords("Track;Pair");
  
  
  //Pair classes
  // to fill also mixed event histograms loop until 10
  for (Int_t i=0; i<3; ++i){
    histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
  }
  
  if(cutDefinition <= kTOFTRD) {
    
    //legs from pair
    for (Int_t i=0; i<3; ++i){
      histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i)));
    }
    
    //Track classes
    //to fill also track info from 2nd event loop until 2
    for (Int_t i=0; i<2; ++i){
      histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
    }
    
    //track rotation
    //   histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
    //   histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
    
    //add histograms to Track classes
    //histos->UserHistogram("Track","TOFbit","TOFbit;bit;#tracks",19,-9.5,9.5,AliDielectronVarManager::kTOFPIDBit);
    histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",
                          400,0,20.,
                          AliDielectronVarManager::kPt);
    histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",
                          160,-0.5,159.5,
                          AliDielectronVarManager::kNclsTPC);
    histos->UserHistogram("Track","TPCsignalN","Number of Clusters TPC;TPC number clusteres;#tracks",
                          160,-0.5,159.5,
                          AliDielectronVarManager::kTPCsignalN);
    
    histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",
                          500,-1.,1.,
                          AliDielectronVarManager::kImpactParXY);
    histos->UserHistogram("Track","dZ","dZ;dZ [cm];#tracks",
                          600,-3.,3.,
                          AliDielectronVarManager::kImpactParZ);
    histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
                          200,-1,1,200,0,6.285,
                          AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
    
    histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
                          400,0.2,20.,200,0.,200.,
                          AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
    histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
                          400,0.2,20.,200,-10.,10.,
                          AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
    
    histos->UserHistogram("Track","Ncl",";Number clusters TPC;Number clusters TPC",
                          160,-0.5,159.5,
                          AliDielectronVarManager::kNclsTPC);
    histos->UserHistogram("Track","NclFr",";Number of findable clusters (robust);Number findable clusters TPC",
                          160,-0.5,159.5,
                          AliDielectronVarManager::kNFclsTPCr);
    histos->UserHistogram("Track","Ncl_NclFr","Number of (findable) clusters TPC;found clusters;findable clusters",
                          160,-0.5,159.5,160,-0.5,159.5,
                          AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr);
    histos->UserHistogram("Track","NtrklTRD",";Number tracklets TRD for pid;Number tracklets TRD",
                          8,-0.5,7.5,
                          AliDielectronVarManager::kTRDpidQuality);
    
    //add histograms to Pair classes
    histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
                          300,.0,300*0.04,
                          AliDielectronVarManager::kM); // 40MeV bins, 12GeV/c2
    histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
                          100,-1.,1.,
                          AliDielectronVarManager::kY);
    histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
                          100,0.,3.15,
                          AliDielectronVarManager::kOpeningAngle);
    histos->UserHistogram("Pair","Chi2NDF","#chi^{2}/NDF;#chi^{2}/NDF",
                          100,0.,20,
                          AliDielectronVarManager::kChi2NDF);
  
   histos->UserHistogram("Pair","PseudoProperTime","Pseudoproper decay length; pseudoproper-decay-length[#mum];Entries/40#mum",
                          150,-0.3.,0.3,AliDielectronVarManager::kPseudoProperTime);


   }
  
  die->SetHistogramManager(histos);
}


void InitCF(AliDielectron* die, Int_t cutDefinition)
{
  //
  // Setup the CF Manager if needed
  //
  //  Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);  
  
  AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
  
  // pair variables
  cf->AddVariable(AliDielectronVarManager::kM,125,0.,125*.04); //40Mev Steps
  if(cutDefinition!=kSubRndm) cf->AddVariable(AliDielectronVarManager::kPairType,11,0,11);
  
  if(cutDefinition <= kTOFTRD2) {
    
    // pair and event vars
      cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,5.,10.,20.,40.,50.,60.,80.");
      cf->AddVariable(AliDielectronVarManager::kPt,"0., 1., 2.5, 5., 100.0");
      if(!hasMC) cf->AddVariable(AliDielectronVarManager::kZvPrim,20, -10., 10.);
      if(hasMC) cf->AddVariable(AliDielectronVarManager::kNacc,20,0.,3000.0);
      if(hasMC) cf->AddVariable(AliDielectronVarManager::kNVtxContrib,20,0.,4000.);
      if(hasMC) cf->AddVariable(AliDielectronVarManager::kTRDpidEffPair,101,0.0,1.01);
      //cf->AddVariable(AliDielectronVarManager::kY,"-0.8,0.8");
    
    //leg variables
      cf->AddVariable(AliDielectronVarManager::kPt,"0.8, 1.0, 1.1, 1.2, 1.5, 100.0",kTRUE);
      cf->AddVariable(AliDielectronVarManager::kTPCnSigmaEle,"-3,-2.5,-2,2,2.5,3",kTRUE);
      //cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPio,"3.5,4.0,4.5,5.0,100",kTRUE);
      //    cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPro,"3.5,4.0,4.5,5.0,100",kTRUE);
      
      // standard vars
        if(hasMC) cf->AddVariable(AliDielectronVarManager::kEta,"-0.9,0.9",kTRUE);
        //cf->AddVariable(AliDielectronVarManager::kNclsTPC,"70, 90, 100, 120, 160",kTRUE);
    }
    
  
  
  if(hasMC) {
    cf->AddVariable(AliDielectronVarManager::kRunNumber, GetRunNumbers() ); // LHC10h only
    //    cf->AddVariable(AliDielectronVarManager::kRunNumber, 170593-136831, 136831, 170593); // LHC10h -> LHC11h
    if(cutDefinition==kTOFTRD || cutDefinition==kTOFTRD2) cf->SetStepForMCtruth();
     cf->SetStepsForMCtruthOnly();  
	   // cf->SetStepsForBackground();   
  }
  
  die->SetCFManagerPair(cf);
}

void AddMCSignals(AliDielectron *die){
  //Do we have an MC handler?
  //Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
  if (!hasMC) return;
  
  AliDielectronSignalMC* inclusiveJpsi = new AliDielectronSignalMC("inclusiveJpsi","Inclusive J/psi");
  inclusiveJpsi->SetLegPDGs(11,-11);
  inclusiveJpsi->SetMotherPDGs(443,443);
  inclusiveJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
  inclusiveJpsi->SetFillPureMCStep(kTRUE);
  inclusiveJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
  inclusiveJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
  die->AddSignalMC(inclusiveJpsi);
  
  AliDielectronSignalMC* promptJpsi = new AliDielectronSignalMC("promptJpsi","Prompt J/psi");   // prompt J/psi (not from beauty decays)
  promptJpsi->SetLegPDGs(11,-11);
  promptJpsi->SetMotherPDGs(443,443);
  promptJpsi->SetGrandMotherPDGs(503,503,kTRUE,kTRUE);   // not from beauty hadrons
  promptJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
  promptJpsi->SetFillPureMCStep(kTRUE);
  promptJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
  promptJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
  promptJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
  promptJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
  die->AddSignalMC(promptJpsi);
  
  AliDielectronSignalMC* beautyJpsi = new AliDielectronSignalMC("beautyJpsi","Beauty J/psi");
  beautyJpsi->SetLegPDGs(11,-11);
  beautyJpsi->SetMotherPDGs(443,443);
  beautyJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
  beautyJpsi->SetGrandMotherPDGs(500,500);
  beautyJpsi->SetFillPureMCStep(kTRUE);
  beautyJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
  beautyJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
  beautyJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
  die->AddSignalMC(beautyJpsi);
  
  AliDielectronSignalMC* directJpsi = new AliDielectronSignalMC("directJpsi","Direct J/psi");   // embedded J/psi
  directJpsi->SetLegPDGs(11,-11);
  directJpsi->SetMotherPDGs(443,443);
  directJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
  directJpsi->SetFillPureMCStep(kTRUE);
  directJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
  directJpsi->SetMotherSources(AliDielectronSignalMC::kDirect, AliDielectronSignalMC::kDirect);
  directJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
  directJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
  die->AddSignalMC(directJpsi);
}

void SetEtaCorrection()
{
  if (AliDielectronPID::GetEtaCorrFunction()) return;
  
  TString list=gSystem->Getenv("LIST");

  TString etaMap="$TRAIN_ROOT/jpsi_JPSI/EtaCorrMaps.root";
  TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
  if (trainRoot.IsNull()) etaMap="$ALICE_ROOT/PWGDQ/dielectron/files/EtaCorrMaps.root";
  if (gSystem->AccessPathName(gSystem->ExpandPathName(etaMap.Data()))){
    Error("ConfigPbPb","Eta map not found: %s",etaMap.Data());
    return;
  }

  TFile f(etaMap.Data());
  if (!f.IsOpen()) return;
  TList *keys=f.GetListOfKeys();

  for (Int_t i=0; i<keys->GetEntries(); ++i){
    TString kName=keys->At(i)->GetName();
    TPRegexp reg(kName);
    if (reg.MatchB(list)){
      printf("Using Eta Correction Function: %s\n",kName.Data());
      AliDielectronPID::SetEtaCorrFunction((TF1*)f.Get(kName.Data()));
    }
  }
}

TVectorD *GetRunNumbers() {

  Double_t runLHC10h[] = { // all runs
    136851, 136854, 136879, 137042, 137045, 137124, 137125, 137132, 137133, 137135, 137136, 137137, 137161, 137162, 137163, 137165, 137230, 137231, 137232, 137235, 137236, 137243, 137365, 137366, 137370, 137430, 137431, 137432, 137434, 137439, 137440, 137441, 137443, 137530, 137531, 137539, 137541, 137544, 137546, 137549, 137595, 137608, 137609, 137638, 137639, 137685, 137686, 137689, 137691, 137692, 137693, 137704, 137718, 137722, 137724, 137748, 137751, 137752, 137843, 137844, 137847, 137848, 138125, 138126, 138150, 138151, 138153, 138154, 138190, 138192, 138197, 138200, 138201, 138225, 138275, 138359, 138364, 138396, 138438, 138439, 138442, 138469, 138533, 138534, 138578, 138579, 138582, 138583, 138620, 138621, 138624, 138637, 138638, 138652, 138653, 138662, 138666, 138730, 138731, 138732, 138736, 138737, 138740, 138742, 138795, 138796, 138826, 138828, 138830, 138831, 138836, 138837, 138870, 138871, 138872, 138924, 138965, 138972, 138973, 138976, 138977, 138978, 138979, 138980, 138982, 138983, 139024, 139025, 139028, 139029, 139030, 139031, 139034, 139036, 139037, 139038, 139042, 139104, 139105, 139107, 139110, 139172, 139173, 139308, 139309, 139310, 139311, 139314, 139316, 139328, 139329, 139360, 139437, 139438, 139439, 139440, 139441, 139465, 139466, 139467, 139470, 139471, 139503, 139504, 139505, 139507, 139510, 139511, 139513, 139514, 139517,
0
  };
  

  Int_t sizeLHC10h = (int) (sizeof(runLHC10h)/sizeof(Double_t)); 
  runLHC10h[sizeLHC10h-1] =   runLHC10h[sizeLHC10h-2] + 1.;
  TVectorD *vecLHC10h = new TVectorD(sizeLHC10h, runLHC10h);
  
  return vecLHC10h;

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