ROOT logo
void SetupTrackCutsDieleData(AliDielectron *diele, Int_t cutDefinition);
void SetupPairCutsDieleData(AliDielectron *diele, Int_t cutDefinition);
void InitHistogramsDieleData(AliDielectron *diele, Int_t cutDefinition);
void InitCFDieleData(AliDielectron *diele, Int_t cutDefinition);
void SetupV0Cuts(AliDielectron *diele, Int_t cutDefinition);
void SetSignals(AliDielectron *diele);


TString namesDieleData=("basicQ+SPDfirst+pt>1+PID;basicQ+SPDany+pt>1+PID;basicQ+SPDany+pt>1+noexclPIDforcontrolpurpose;nocuts");
//has to introduce PID cuts....
//TString namesDieleData=("basicQ+SPDfirst+pt>1+PID");

TObjArray *arrNamesDieleData=namesDieleData.Tokenize(";");

const Int_t nDie=arrNamesDieleData->GetEntries();

AliDielectron* ConfigJpsi_mw_pPb_MC(Int_t cutDefinition) 
{
  //
  // Setup the instance of AliDielectron
  //
  
  // create the actual framework object
  TString name=Form("%02d",cutDefinition);
  if (cutDefinition<arrNamesDieleData->GetEntriesFast()){
    name=arrNamesDieleData->At(cutDefinition)->GetName();
  }
  AliDielectron *diele = new AliDielectron(Form("%s",name.Data()),
                             Form("Track cuts: %s",name.Data()));

  
  // estimators filename
  //NOTE: what does this mean?: estimator for pp multiplicity, not needed for instance for my pA-purpose(mwinn 16.1.2012)..
  diele->SetEstimatorFilename("$ALICE_ROOT/PWGDQ/dielectron/files/estimators.root");
  //diele->SetEstimatorFilename("estimators.root");
  // cut setup
  SetupTrackCutsDieleData(diele, cutDefinition);
  SetupPairCutsDieleData(diele, cutDefinition);
  SetupV0Cuts(diele, cutDefinition);	

   // Set MC signals
  SetSignals(diele);
  //
  // histogram setup
  // only if an AliDielectronHistos object is attached to the
  // dielelectron framework histograms will be filled
  //
  InitHistogramsDieleData(diele, cutDefinition);
  
  // the last definition uses no cuts and only the QA histograms should be filled!, now for all cuts
  if(cutDefinition == 1 ||cutDefinition == 2 || cutDefinition == 3 || cutDefinition == 4) InitCFDieleData(diele, cutDefinition);//first 2 cut sets in 3rd included
 
  
  return diele;
}

//______________________________________________________________________________________
void SetupTrackCutsDieleData(AliDielectron *diele, Int_t cutDefinition)
{
  //
  // Setup the track cuts
  //
  
  //NOTE: seems to work, see AliDielectronTrackCuts method IsSelected at the beginning, to be checked with AODs
    //exclude conversion electrons selected by the tender
 /* if(!cutDefinition==4){   
    AliDielectronTrackCuts *noconv=new AliDielectronTrackCuts("noConv","noConv");
    noconv->SetV0DaughterCut(AliPID::kElectron,kTRUE);
    diele->GetTrackFilter().AddCuts(noconv);
  }*/
    // }
    AliDielectronTrackCuts *trackCuts=new AliDielectronTrackCuts("ITSandgeneral_trackCuts","ITSandgeneral_trackCuts");
    //ITS related cuts
    if (cutDefinition==0)
      trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); //does not work in MC???
      trackCuts->SetRequireTPCRefit(kTRUE);
      trackCuts->SetRequireITSRefit(kTRUE);
      diele->GetTrackFilter().AddCuts(trackCuts);
  
  //Pt cut ----------------------------------------------------------
  AliDielectronVarCuts *pt = new AliDielectronVarCuts("trackkineandTPCQ","trackkine_and_TPCQ");
  if ((cutDefinition==0)){
    pt->AddCut(AliDielectronVarManager::kPt,1.,1e30);
  }else{ pt->AddCut(AliDielectronVarManager::kP,.8,1e30);}
  pt->AddCut(AliDielectronVarManager::kKinkIndex0,0.);
  // SPDany
  if (cutDefinition==2) pt->AddCut(AliDielectronVarManager::kITSLayerFirstCls,-0.5,1.5);
  //AOD additions since there are no AliESDtrackCuts -----------------
  //
  // TPC #clusteres cut
  if (!(cutDefinition==1) ) pt->AddCut(AliDielectronVarManager::kNclsTPC,70.,160.);//does not work in MC???
   if (!(cutDefinition==4) )pt->AddCut(AliDielectronVarManager::kTPCchi2Cl,0.,4.);//to be checked
  if (!(cutDefinition==1) ) pt->AddCut(AliDielectronVarManager::kEta,-0.9,0.9);//does not work in MC???
  //TODO: DCA cuts to be investigated!!! NOTE: why?? (mwinn, 15.01.2013)
  if (!(cutDefinition==4) ) pt->AddCut(AliDielectronVarManager::kImpactParXY,-1.,1.);
  if (!(cutDefinition==4) ) pt->AddCut(AliDielectronVarManager::kImpactParZ,-3.,3.);
  
  diele->GetTrackFilter().AddCuts(pt);
    
  // PID cuts --------------------------------------------------------
  if(cutDefinition ==0 || cutDefinition ==1 ||cutDefinition ==2){
    AliDielectronPID *pid = new AliDielectronPID("PID10","TPC nSigma |e|<3 + |Pi|>3.5 + P>3");
    pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.);
    pid->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.5,3.5,0.,0.,kTRUE);//does not work in MC???
    pid->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-20.,3.,0.,0.,kTRUE);//does not work in MC???
    diele->GetTrackFilter().AddCuts(pid);
  }
  if(cutDefinition ==3){
    AliDielectronPID *pid = new AliDielectronPID("PID10","TPC nSigma |e|<3");
    pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.);
    diele->GetTrackFilter().AddCuts(pid);
    /* //taken out at the 04.02.2013 in order to have some feeling for PID cuts in QAplots...
    AliDielectronVarCuts *pidsubs = new AliDielectronVarCuts("pidSubs","pidsubs cut");
     pidsubs->AddCut(AliDielectronVarManager::kP,1.2,1e30);
     pidsubs->AddCut(AliDielectronVarManager::kTPCsignal,70.,110.);
     diele->GetTrackFilter().AddCuts(pidsubs);*/
  }
}

//______________________________________________________________________________________
void SetupPairCutsDieleData(AliDielectron *diele, Int_t cutDefinition)
{
  //
  // Setup the pair cuts
  //
  // conversion rejection
  //Double_t gCut = 0.05;             // default
   Double_t gCut = 0.100;             // default
   if(!cutDefinition==4){
     AliDielectronVarCuts *gammaCut=new AliDielectronVarCuts("gammaCut","gammaCut");
     gammaCut->AddCut(AliDielectronVarManager::kM,0.,gCut);
     diele->GetPairPreFilter().AddCuts(gammaCut);
  diele->SetPreFilterUnlikeOnly();
   }
 
   //Invariant mass and rapidity selection
   if(!cutDefinition==4){
     AliDielectronVarCuts *pairCut=new AliDielectronVarCuts("|Y|<.9","|Y|<.9");
     // pairCut->AddCut(AliDielectronVarManager::kM,2.,4.);
     pairCut->AddCut(AliDielectronVarManager::kY,-0.9,0.9);
     diele->GetPairFilter().AddCuts(pairCut);
   }
}
//______________________________________________________________________________________

void SetupV0Cuts(AliDielectron *diele, Int_t cutDefinition)
{
  //
  // Setup the V0 cuts
  //
 if(!cutDefinition==4){  

  AliDielectronV0Cuts *gammaV0Cuts = new AliDielectronV0Cuts("IsGamma","IsGamma");
  gammaV0Cuts->SetPdgCodes(22,11,11);
  gammaV0Cuts->SetDefaultPID(13); // TPC+-10, TOF+-3 if available
  gammaV0Cuts->AddCut(AliDielectronVarManager::kCosPointingAngle, TMath::Cos(0.02),   1.0, kFALSE);
  gammaV0Cuts->AddCut(AliDielectronVarManager::kChi2NDF,                       0.0,  10.0, kFALSE);//to be checked, if properly filled
  gammaV0Cuts->AddCut(AliDielectronVarManager::kLegDist,                       0.0,   0.25, kFALSE);
  gammaV0Cuts->AddCut(AliDielectronVarManager::kR,                             3.0,  90.0, kFALSE);
  gammaV0Cuts->AddCut(AliDielectronVarManager::kPsiPair,                       0.0,   0.05, kFALSE);
  gammaV0Cuts->AddCut(AliDielectronVarManager::kM,                             0.0,   0.05, kFALSE);
  //  gammaV0Cuts->AddCut(AliDielectronVarManager::kOpeningAngle,              0.0,   0.1, kFALSE);
  gammaV0Cuts->AddCut(AliDielectronVarManager::kArmPt,                         0.0,   0.05, kFALSE);
  //  gammaV0Cuts->AddCut(AliDielectronVarManager::kArmAlpha,                     -0.35,  0.35, kFALSE); // not sure if it works as expected
  gammaV0Cuts->SetExcludeTracks(kTRUE);
  gammaV0Cuts->Print();
  
  //  const Double_t |cutAlphaG| < 0.35; &&  const Double_t cutQTG < 0.05;
 //  const Double_t |cutAlphaG2|[2] = {0.6, 0.8}; &&  const Double_t cutQTG2 < 0.04;

  diele->GetTrackFilter().AddCuts(gammaV0Cuts);
	}

}

//______________________________________________________________________________________

void InitHistogramsDieleData(AliDielectron *diele, Int_t cutDefinition)
{
  //
  // Initialise the histograms
  //
  
  //Setup histogram Manager
  AliDielectronHistos *histos=new AliDielectronHistos(diele->GetName(),diele->GetTitle());
  
  //Initialise histogram classes
  histos->SetReservedWords("Track;Pair");
  
  //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)));
  }
  
  //Pair classes
  // to fill also mixed event histograms loop until 10
  for (Int_t i=0; i<3/*for mixing until 10*/; ++i){
    histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
  }
  
  //legs from pair
  for (Int_t i=0; i<3; ++i){
    histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i)));
  }
 
  
  
  //add histograms to event class
  if (cutDefinition==0) {
    histos->AddClass("Event");
    histos->AddClass("Event_noCuts"); 
   histos->UserHistogram("Event","VtxZ","Vertex Z;Z[cm]",300,-15.,15.,AliDielectronVarManager::kZvPrim);
    // nAcc
   histos->UserHistogram("Event","NAccRaw","Accepted raw SPD tracklets, |y|<1; nTrackl; #Entries",301,-0.5,300.5, AliDielectronVarManager::kNaccTrckltsEsd10); 
   // histos->UserHistogram("Event","NAccCorr","Accepted corr SPD tracklets, |y|<1; nTrackl; #Entries",101,-0.5,100.5, AliDielectronVarManager::kNaccTrckltsEsd10Corr); 
   // nAcc vs Zvtx
   // histos->UserHistogram("Event","NAccRaw_vs_Zvtx","Accepted raw SPD tracklets vs Z vtx, |y|<1; Zvtx[cm]; nTrackl ",300,-15.,15.,101,-0.5,100.5, AliDielectronVarManager::kZvPrim,AliDielectronVarManager::kNaccTrckltsEsd10);
   // histos->UserHistogram("Event","NAccCorr_vs_Zvtx","Accepted corr SPD tracklets vs Z vtx, |y|<1; Zvtx[cm]; nTrackl ",300,-15.,15.,101,-0.5,100.5, AliDielectronVarManager::kZvPrim,AliDielectronVarManager::kNaccTrckltsEsd10Corr);

 
   // no event cuts 
    histos->UserHistogram("Event_noCuts","VtxZ","Vertex Z;Z[cm]",300,-15.,15.,AliDielectronVarManager::kZvPrim);
    // nAcc
    histos->UserHistogram("Event_noCuts","NAccRaw","Accepted raw SPD tracklets, |y|<1; nTrackl; #Entries",301,-0.5,300.5, AliDielectronVarManager::kNaccTrckltsEsd10);
    histos->UserHistogram("Event_noCuts","NAccRaw |y|<1 eta phi","Eta; Phi; nTrackl; #Entries",100,-1,1,144,0,6.285,301,-0.5,300.5,AliDielectronVarManager::kEta, AliDielectronVarManager::kPhi, AliDielectronVarManager::kNaccTrckltsEsd10);
   //  histos->UserHistogram("Event_noCuts","NAccCorr","Accepted corr SPD tracklets, |y|<1; nTrackl; #Entries",101,-0.5,100.5, AliDielectronVarManager::kNaccTrckltsEsd10Corr);
   // nAcc vs Zvtx
   //  histos->UserHistogram("Event_noCuts","NAccRaw_vs_Zvtx","Accepted raw SPD tracklets vs Z vtx, |y|<1; Zvtx[cm]; nTrackl ",300,-15.,15.,101,-0.5,100.5, AliDielectronVarManager::kZvPrim,AliDielectronVarManager::kNaccTrckltsEsd10);
   // histos->UserHistogram("Event_noCuts","NAccCorr_vs_Zvtx","Accepted corr SPD tracklets vs Z vtx, |y|<1; Zvtx[cm]; nTrackl ",300,-15.,15.,101,-0.5,100.5, AliDielectronVarManager::kZvPrim,AliDielectronVarManager::kNaccTrckltsEsd10Corr);

   }
  
  //add histograms to Track classes
  histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",400,0,20.,AliDielectronVarManager::kPt);
  histos->UserHistogram("Track","TOFPIDBit","TOFPIDBit;TOFPIDBit;#tracks",2,-0.5,1.5,AliDielectronVarManager::kTOFPIDBit);
  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 PID Clusters TPC;TPC PID number clusteres;#tracks",160,-0.5,159.5,AliDielectronVarManager::kTPCsignalN);
  histos->UserHistogram("Track","nClsoverfindablecluster","Number of found Clusters TPC over findably ;TPC number cluster over findable;#tracks",160,0.0,1.1,AliDielectronVarManager::kNFclsTPCrFrac);
  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",
                        100,-1,1,144,0,6.285,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);

  histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
                        200,0.2,20.,100,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",
                        200,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
  histos->UserHistogram("Track","TPCnSigmaPi_P","TPC number of sigmas Kaons;PIN [GeV];TPC number of sigmas Pions;#tracks",
                        200,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);
  histos->UserHistogram("Track","TPCnSigmaPro_P","TPC number of sigmas Protons;PIN [GeV];TPC number of sigmas Protons;#tracks",
                        200,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPro,kTRUE);
  // histos->UserHistogram("Track","TPCnSigmaKao_P","TPC number of sigmas Kaons;PIN [GeV];TPC number of sigmas Kaons;#tracks",
  //                        200,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE);
   histos->UserHistogram("Track","TOFbeta_P","TOF beta;P [GeV];TOF beta;#tracks",
                      200,0.2,20.,100,0.,1.,AliDielectronVarManager::kP,AliDielectronVarManager::kTOFnSigmaEle,kTRUE);
  // histos->UserHistogram("Track","TOFnSigmaEle_P","TOF number of sigmas Electrons;P [GeV];TOF number of sigmas Electrons;#tracks",
  //                      200,0.2,20.,200,-20.,20.,AliDielectronVarManager::kP,AliDielectronVarManager::kTOFnSigmaEle,kTRUE);
  histos->UserHistogram("Track","TRDnCls","Number of Clusters TRD;TRD number clusters;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNclsTRD);
  histos->UserHistogram("Track","TRDntracklets","Number of tracklets TRD;TRD number tracklets;#tracks",7,-0.5,6.5,AliDielectronVarManager::kTRDntracklets);
  histos->UserHistogram("Track","TRDprobEle_P","TRD electron prob.;P [GeV];TRD electron prob.;#tracks",
			200,0.2,20.,100,.0,1.,AliDielectronVarManager::kP,AliDielectronVarManager::kTRDprobEle,kTRUE);
  histos->UserHistogram("Track","TRDprobEle2D_P","TRD electron prob. 2D;P [GeV];TRD electron prob. 2D;#tracks",
			200,0.2,20.,100,.0,1.,AliDielectronVarManager::kP,AliDielectronVarManager::kTRDprob2DEle,kTRUE);

  


      
  //add histograms to Pair classes
  histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
                        125,0.,125*.04,AliDielectronVarManager::kM);
  histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
                        100,-1.,1.,AliDielectronVarManager::kY);
  histos->UserHistogram("Pair","Pt","Pt;Pt;#pairs",
                      200,0.,20.,AliDielectronVarManager::kPt);
  histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
                      100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
  histos->UserHistogram("Pair","OpeningAngletransverse","Opening angle transverse;angle",
                      100,0.,3.15,AliDielectronVarManager::kDeltaPhi);
  histos->UserHistogram("Pair","Chi2NDF","chisquareNDF;chisquare/ndf;#pairs",
                      100,0.,30.,AliDielectronVarManager::kChi2NDF);
  histos->UserHistogram("Pair","distanceXY","distancelegsXY;distanceXY[cm];#pairs",
  			100,0.,.0001,AliDielectronVarManager::kLegDistXY);
  histos->UserHistogram("Pair","distance","distancelegs;distance[cm];#pairs",
                      100,0.,.0001,AliDielectronVarManager::kLegDist);
  histos->UserHistogram("Pair","pseudoproperdecaylength","pseudoproperdecaylength;pseudoproperdecaylength[cm];#pairs",
  			100,0.,.5,AliDielectronVarManager::kPseudoProperTime);
  histos->UserHistogram("Pair","Armenteros-Podolanski","Armenteros-Podolanski;ArmAlpha;ArmPt[GeV];#tracks",
  			100,-10.0,10.,100,0.,2.,AliDielectronVarManager::kArmAlpha,AliDielectronVarManager::kArmPt,kTRUE);
 
 

 // 3D histos: invMass - Multiplicity - ptJpsi
  histos->UserHistogram("Pair","InvMass_NaccRaw_PtJpsi","Inv.Mass - NaccRaw - PtJpsi;Inv. Mass [GeV];NaccRaw; pTJpsi[GeV/c]", 125,0.,125*.04,101,-0.5,100.5, 100, 0.,10., AliDielectronVarManager::kM,AliDielectronVarManager::kNaccTrckltsEsd10, AliDielectronVarManager::kPt);
  //  histos->UserHistogram("Pair","InvMass_NaccCorr_PtJpsi","Inv.Mass - NaccCorr - PtJpsi;Inv. Mass [GeV];NaccCor; pTJpsi[GeV/c]", 125,0.,125*.04,101,-0.5,100.5,100,0.,10., AliDielectronVarManager::kM,AliDielectronVarManager::kNaccTrckltsEsd10Corr, AliDielectronVarManager::kPt);
 
  diele->SetHistogramManager(histos);
}


void InitCFDieleData(AliDielectron *diele, Int_t cutDefinition)
{//number of dimensions also not the problem
  //
  // Setupd the CF Manager if needed
  //
  
  AliDielectronCF *cf=new AliDielectronCF(diele->GetName(),diele->GetTitle());
  
  //pair variables
  cf->AddVariable(AliDielectronVarManager::kPt,"0.0,1.0,1.3,2.0, 3.0,5.0, 7.0,10.0,100.0");
  cf->AddVariable(AliDielectronVarManager::kY,"-1,-0.9,-0.8,-0.5,-0.3,0,0.3,0.5,0.8,0.9,1.0");
  cf->AddVariable(AliDielectronVarManager::kM,125,0.,125*.04); //40Mev Steps
  cf->AddVariable(AliDielectronVarManager::kPseudoProperTime,150,-0.3,0.3);
  cf->AddVariable(AliDielectronVarManager::kPseudoProperTimeErr,600,0.,0.3);
  cf->AddVariable(AliDielectronVarManager::kPairType,11,0,11);
  // cf->AddVariable(AliDielectronVarManager::kArmAlpha,"-10.,-5.,-2.,-.1.,0.,1.,2.,5.,10.");
  //cf->AddVariable(AliDielectronVarManager::kArmPt,"0.0,0.4,0.6,0.8,1.0,1.5,2.0,3.0");
  

  //leg variables
  //TODO: add variables used for cuts, debug-tree??
  cf->AddVariable(AliDielectronVarManager::kPt,"0.0, 0.8, 1.0, 1.1, 1.2, 1.3, 100.0",kTRUE);
  cf->AddVariable(AliDielectronVarManager::kNclsTPC,"0, 60, 65, 70, 75, 80, 85, 90, 100, 120, 160",kTRUE);
  cf->AddVariable(AliDielectronVarManager::kTPCsignalN,"0, 50, 60, 70, 80, 90, 100, 160",kTRUE);
  cf->AddVariable(AliDielectronVarManager::kTPCchi2Cl,"0, 0.5, 1., 1.5, 2., 2.5, 3., 3.5, 4.",kTRUE);  
  cf->AddVariable(AliDielectronVarManager::kEta, "-1.0, -0.9, -0.8,0.0,0.8, 0.9, 1.0", kTRUE);
  cf->AddVariable(AliDielectronVarManager::kTPCnSigmaEle,"-2.5,-2,-1.5,-1,-0.5,4.",kTRUE);
  cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPio,"3.,3.5,4.,100",kTRUE);
  cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPro,"3.,3.5,4.,100",kTRUE);
  cf->AddVariable(AliDielectronVarManager::kITSLayerFirstCls,6,-0.5,5.5,kTRUE);  
  cf->AddVariable(AliDielectronVarManager::kP,"0.0, 0.8, 0.9, 0.95, 1.0, 1.05, 1.1, 1.2,1.5,2.0,3.0,4.0,5.0, 100.0",kTRUE);
  //event variables
  //cf->AddVariable(AliDielectronVarManager::kNaccTrcklts,"0.0, 9.0, 17.0, 25.0, 36.0, 55.0, 500.0");
  // cf->AddVariable(AliDielectronVarManager::kNaccTrckltsEsd10,101,-0.5,100.5);
  //  cf->AddVariable(AliDielectronVarManager::kNaccTrckltsEsd10Corr,101,-0.5,100.5);
  //cf->AddVariable(AliDielectronVarManager::kZvPrim,"-20.,-15.,-10.,-5.,0.,5.,10.,15.,20.");
    Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
    if (hasMC){
      cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE);
      cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE);
      cf->AddVariable(AliDielectronVarManager::kPdgCodeGrandMother,10000,-5000.5,4999.5,kTRUE);

      //only steps for efficiencies//seems not to help with problem!!!!, not only MC truth step, but also MCreconstructed with Signals, no MC reconstructed in total
      //cf->SetStepsForMCtruthOnly();
    }
  
  //only in this case write MC truth info//NOTE perhaps only wirking for first one????
    // if (cutDefinition==2){
  if (hasMC) cf->SetStepForMCtruth();
  // }
  cf->SetStepsForSignal();

  diele->SetCFManagerPair(cf);
  
}

void SetSignals(AliDielectron *diele){
  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);//options kUndefined, kDifferent
  promptJpsi->SetFillPureMCStep(kTRUE);
  promptJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);//kDirect produces empty Histograms...//
  promptJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
  promptJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
  promptJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
  diele->AddSignalMC(promptJpsi);


  AliDielectronSignalMC* beautyJpsi = new AliDielectronSignalMC("producedbeautyJpsi","produced beauty hadron -> J/psi");  // J/psi->e+e- from beauty hadron decays
  beautyJpsi->SetLegPDGs(11,-11);
  beautyJpsi->SetMotherPDGs(443,443);
  beautyJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);//test
  beautyJpsi->SetMotherSources(AliDielectronSignalMC::kPrimary,AliDielectronSignalMC::kPrimary);//added lines!!!
  beautyJpsi->SetGrandMotherSources(AliDielectronSignalMC::kPrimary,AliDielectronSignalMC::kPrimary);//added lines!!!!
  beautyJpsi->SetGrandMotherPDGs(503,503);
  beautyJpsi->SetFillPureMCStep(kTRUE); //does not help to take it out!!!
  beautyJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);//possibilities: kFinalState, kDirect, kPrimary, kDontCare, kSecondary, kNoCocktail
  // beautyJpsi->SetJpsiRadiative(AliDielectronSignalMC::kIsNotRadiative);//tested line, works, but is not solve problem!!!
  beautyJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
  beautyJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
  beautyJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
  diele->AddSignalMC(beautyJpsi);


 AliDielectronSignalMC* background1 = new AliDielectronSignalMC("backgroundnolegjpsi","backgroundnolegjpsi");  //not J/psi->e+e-
 //background1->SetLegPDGs(11,-11);
  background1->SetMotherPDGs(443,443, kTRUE,kTRUE );
  background1->SetMothersRelation(AliDielectronSignalMC::kUndefined);
  background1->SetGrandMotherPDGs(503,503);
  background1->SetFillPureMCStep(kFALSE);
  background1->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
  background1->SetCheckBothChargesLegs(kTRUE,kTRUE);
  diele->AddSignalMC(background1);

AliDielectronSignalMC* background2 = new AliDielectronSignalMC("backgroundonelegjpsi","backgroundonelegjpsi");  //not J/psi->e+e-
// background2->SetLegPDGs(11,-11);
  background2->SetMotherPDGs(443,443, kTRUE,kFALSE );
  background2->SetMothersRelation(AliDielectronSignalMC::kUndefined);
  background2->SetFillPureMCStep(kFALSE);
  background2->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
  background2->SetCheckBothChargesLegs(kTRUE,kTRUE);
  diele->AddSignalMC(background2);
  /*
  AliDielectronSignalMC* beautyMesonJpsi = new AliDielectronSignalMC("beautyMesonJpsi","beauty meson -> J/psi");  // J/psi->e+e- from beauty hadron decays
  beautyMesonJpsi->SetLegPDGs(11,-11);
  beautyMesonJpsi->SetMotherPDGs(443,443);
  beautyMesonJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
  beautyMesonJpsi->SetGrandMotherPDGs(500,500);
  beautyMesonJpsi->SetFillPureMCStep(kTRUE);
  beautyMesonJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
  beautyMesonJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
  beautyMesonJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
  beautyMesonJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
  diele->AddSignalMC(beautyMesonJpsi);


  // physical backgrounds (electrons from other sources)
  AliDielectronSignalMC* diEleContinuum = new AliDielectronSignalMC("diEleContinuum","di-electron continuum");     // all di-electrons originating in the collision
  diEleContinuum->SetLegPDGs(11,-11);
  diEleContinuum->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
  diEleContinuum->SetCheckBothChargesLegs(kTRUE,kTRUE);
  diele->AddSignalMC(diEleContinuum);

  AliDielectronSignalMC* diEleCharm = new AliDielectronSignalMC("diEleCharm","di-electrons from charm");  // dielectrons originating from charm hadrons (not neccessary from same mother)
  diEleCharm->SetLegPDGs(11,-11);
  diEleCharm->SetMotherPDGs(403,403);
  diEleCharm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
  diEleCharm->SetCheckBothChargesLegs(kTRUE,kTRUE);
  diEleCharm->SetCheckBothChargesMothers(kTRUE,kTRUE);
  diele->AddSignalMC(diEleCharm);

  AliDielectronSignalMC* diEleOpenCharm = new AliDielectronSignalMC("diEleOpenCharm","di-electrons from open charm");  // dielectrons originating from open charm hadrons
  diEleOpenCharm->SetLegPDGs(11,-11);
  diEleOpenCharm->SetMotherPDGs(402,402);
  diEleOpenCharm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
  diEleOpenCharm->SetCheckBothChargesLegs(kTRUE,kTRUE);
  diEleOpenCharm->SetCheckBothChargesMothers(kTRUE,kTRUE);
  diele->AddSignalMC(diEleOpenCharm);

  AliDielectronSignalMC* diEleOpenCharmJpsi = new AliDielectronSignalMC("diEleOpenCharmJpsi","1 leg from open charm + 1 jpsi leg");  // 1 leg from open charm + 1 leg from jpsi
  diEleOpenCharmJpsi->SetLegPDGs(11,-11);
  diEleOpenCharmJpsi->SetMotherPDGs(402,443);
  diEleOpenCharmJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
  diEleOpenCharmJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
  diEleOpenCharmJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
  diele->AddSignalMC(diEleOpenCharmJpsi);

  AliDielectronSignalMC* muonMuonPairs = new AliDielectronSignalMC("muonMuonPairs","muon+muon pairs");   // dimuon pairs, all sources (both from collision and from material interaction)
  muonMuonPairs->SetLegPDGs(13,13);
  muonMuonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
  diele->AddSignalMC(muonMuonPairs);

  // background from secondary electrons
  AliDielectronSignalMC* secondaryElectrons = new AliDielectronSignalMC("secondaryElectrons","Secondary electrons");   // all di-electrons from secondary electrons (interaction with detector)
  secondaryElectrons->SetLegPDGs(11,-11);
  secondaryElectrons->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary);
  secondaryElectrons->SetCheckBothChargesLegs(kTRUE,kTRUE);
  diele->AddSignalMC(secondaryElectrons);

  AliDielectronSignalMC* primarySecElePairs = new AliDielectronSignalMC("primarySecElePairs","Primary+Secondary electron pairs");  // primary-secondary pairs
  primarySecElePairs->SetLegPDGs(11,-11);
  primarySecElePairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
  primarySecElePairs->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kSecondary);
  diele->AddSignalMC(primarySecElePairs);

  AliDielectronSignalMC* conversionElePairs = new AliDielectronSignalMC("conversionElePairs","conversion electron pairs");      // pairs made from conversion (may be also from 2 different conversions)
  conversionElePairs->SetLegPDGs(11,-11);
  conversionElePairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
  conversionElePairs->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary);
  conversionElePairs->SetMotherPDGs(22,22);
  diele->AddSignalMC(conversionElePairs);

  // misidentification
  AliDielectronSignalMC* allEleMisIdPairs = new AliDielectronSignalMC("allEleMisIdPairs","all electron+misid. pairs");  // one true electron + a mis-id electron (all sources included)
  allEleMisIdPairs->SetLegPDGs(11,11,kFALSE,kTRUE);
  allEleMisIdPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
  diele->AddSignalMC(allEleMisIdPairs);

  AliDielectronSignalMC* allMisIdMisIdPairs = new AliDielectronSignalMC("allMisIdMisIdPairs","all misid.+misid. pairs");  // mis-id + mis-id
  allMisIdMisIdPairs->SetLegPDGs(11,11,kTRUE,kTRUE);
  allMisIdMisIdPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
  diele->AddSignalMC(allMisIdMisIdPairs);

  AliDielectronSignalMC* elePionPairs = new AliDielectronSignalMC("elePionPairs","electron+pion pairs");    // true electron + mis-id pion
  elePionPairs->SetLegPDGs(11,211);
  elePionPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
  diele->AddSignalMC(elePionPairs);

  AliDielectronSignalMC* eleKaonPairs = new AliDielectronSignalMC("eleKaonPairs","electron+kaon pairs");   // true electron + mis-id kaon
  eleKaonPairs->SetLegPDGs(11,321);
  eleKaonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
  diele->AddSignalMC(eleKaonPairs);

  AliDielectronSignalMC* eleProtonPairs = new AliDielectronSignalMC("eleProtonPairs","Electron+proton pairs");  // true electron + mis-id proton
  eleProtonPairs->SetLegPDGs(11,2212);
  eleProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
  diele->AddSignalMC(eleProtonPairs);

  AliDielectronSignalMC* piPiPairs = new AliDielectronSignalMC("piPiPairs","pion+pion pairs");    // mis-id pion + mis-id pion
  piPiPairs->SetLegPDGs(211,211);
  piPiPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
  diele->AddSignalMC(piPiPairs);

  AliDielectronSignalMC* piKaonPairs = new AliDielectronSignalMC("piKaonPairs","pion+kaon pairs");  // mis-id pion + mis-id kaon
  piKaonPairs->SetLegPDGs(211,321);
  piKaonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
  diele->AddSignalMC(piKaonPairs);

  AliDielectronSignalMC* piProtonPairs = new AliDielectronSignalMC("piProtonPairs","pion+proton pairs");  // mis-id pion + mis-id proton
  piProtonPairs->SetLegPDGs(211,2212);
  piProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
  diele->AddSignalMC(piProtonPairs);

  AliDielectronSignalMC* kaonKaonPairs = new AliDielectronSignalMC("kaonKaonPairs","kaon+kaon pairs");  // mis-id kaon + mis-id kaon
  kaonKaonPairs->SetLegPDGs(321,321);
  kaonKaonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
  diele->AddSignalMC(kaonKaonPairs);

  AliDielectronSignalMC* kaonProtonPairs = new AliDielectronSignalMC("kaonProtonPairs","kaon+proton pairs");   // mis-id kaon + mis-id proton
  kaonProtonPairs->SetLegPDGs(321,2212);
  kaonProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
  diele->AddSignalMC(kaonProtonPairs);

  AliDielectronSignalMC* protonProtonPairs = new AliDielectronSignalMC("protonProtonPairs","proton+proton pairs");  // mis-id proton + mis-id proton
  protonProtonPairs->SetLegPDGs(2212,2212);
  protonProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
  diele->AddSignalMC(protonProtonPairs);

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