void SetupEventCuts(AliDielectron *die, ULong64_t triggers);
void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition);
void SetupPairCuts(AliDielectron *die, Int_t cutDefinition);
+void SetupV0Cuts( AliDielectron *die, Int_t cutDefinition);
+
+void ConfigEvtPlane(AliDielectron *die, Int_t cutDefinition);
void AddMCSignals(AliDielectron *die);
void SetEtaCorrection();
TVectorD *GetRunNumbers();
-TString names=("QA");
-enum { kQA=0 };
+TString names=("QA;PIDQA");
+enum { kQA=0, kQApid };
TObjArray *arrNames=names.Tokenize(";");
const Int_t nDie=arrNames->GetEntries();
Bool_t hasMC = kFALSE;
TString list = gSystem->Getenv("LIST");
-AliDielectron* ConfigJpsiQA_jpsi_PbPb(Int_t cutDefinition, TString prod="", ULong64_t triggers=AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB)
+AliDielectron* ConfigJpsiQA_jpsi_PbPb(Int_t cutDefinition, TString prod="",
+ ULong64_t triggers=AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB)
{
//
// Setup the instance of AliDielectron
// switch off some configurations
if(hasMC) { // MONTE CARLO
switch(cutDefinition) {
- // case kQA: return 0x0;
+ //case kQApid: return 0x0;
}
} else { // COLLISION DATA
switch(cutDefinition) {
- // case kQA: return 0x0;
+ // case kQA: return 0x0;
+ // case kQApid: return 0x0;
}
}
// create the actual framework object
TString name=Form("%02d",cutDefinition);
- if (cutDefinition<arrNames->GetEntriesFast()){
- name=arrNames->At(cutDefinition)->GetName();
- }
- printf(" Adding %s %s config %s for %s \n",(isESD?"ESD":"AOD"),(hasMC?"MC":""),name.Data(),list.Data());
- AliDielectron *die = new AliDielectron(Form("%s",name.Data()), Form("Track cuts: %s",name.Data()));
+ if (cutDefinition<arrNames->GetEntriesFast()) name=arrNames->At(cutDefinition)->GetName();
+ printf(" Adding %s%s config %s for %s \n",(isESD?"ESD":"AOD"),(hasMC?" MC":""),name.Data(),list.Data());
+
+ // init AliDielectron
+ AliDielectron *die = new AliDielectron(Form("%s",name.Data()), Form("QA config: %s",name.Data()));
die->SetHasMC(hasMC);
// cut setup
SetupEventCuts(die,triggers);
SetupTrackCuts(die,cutDefinition);
- SetupPairCuts(die,cutDefinition);
+ if(cutDefinition!=kQApid) SetupPairCuts(die,cutDefinition);
+ SetupV0Cuts(die,cutDefinition);
// MC signals
if(hasMC) {
}
// histogram setup
InitHistograms(die,cutDefinition);
- printf(" Add %d classes to the manager \n",die->GetHistogramList()->GetEntries());
+ //printf(" Add %d classes to the manager \n",die->GetHistogramList()->GetEntries());
// CF container setup
- InitCF(die,cutDefinition);
-
- /*
- // tpc event plane
- if(!hasMC) {
- // TPC event plane configurations
- Double_t gGap;
- switch(cutDefinition) {
- default: gGap=0.0;
- }
+ //InitCF(die,cutDefinition);
- AliDielectronVarCuts *poi = new AliDielectronVarCuts("PoI","PoI");
- poi->AddCut(AliDielectronVarManager::kM,2.92,3.20); // particles of interest, jpsi mass window
- die->GetEventPlanePOIPreFilter().AddCuts(poi);
-
- AliDielectronVarCuts *etaGap = new AliDielectronVarCuts(AliDielectronVarManager::GetValueName(AliDielectronVarManager::kEta),"etaGap");
- etaGap->AddCut(AliDielectronVarManager::kEta,-1*gGap,gGap,kTRUE);
- die->GetEventPlanePreFilter().AddCuts(etaGap);
- // die->SetLikeSignSubEvents();
-
- die->SetPreFilterEventPlane();
- }
- */
+ // tpc event plane configuration
+ // ConfigEvtPlane(die,cutDefinition);
// prefilter settings
- // die->SetNoPairing();
+ // if(cutDefinition==kQA) die->SetNoPairing();
+ // else
die->SetPreFilterUnlikeOnly();
//die->SetPreFilterAllSigns();
eventCuts->SetRequireVertex();
eventCuts->SetMinVtxContributors(1);
eventCuts->SetVertexZ(-10.,+10.);
- //eventCuts->SetCentralityRange(minCent,maxCent);
+ eventCuts->SetCentralityRange(minCent,maxCent);
/*
TF1 *fMean = new TF1("fMean", "pol1", 0,25e+3);
// AOD track filter (needs to be first cut to speed up)
AliDielectronTrackCuts *trkFilter = new AliDielectronTrackCuts("TrkFilter","TrkFilter");
trkFilter->SetAODFilterBit(AliDielectronTrackCuts::kTPCqual);
- // trkFilter->SetMinNCrossedRowsOverFindable(0.6);
//if(!isESD) cuts->AddCut(trkFilter);
AliDielectronTrackCuts *trkCuts = new AliDielectronTrackCuts("TrkCuts","TrkCuts");
- trkCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 15); // ITS-4 = 1+2+4+8
- trkCuts->SetRequireITSRefit(kTRUE);
+ if(cutDefinition==kQA) trkCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 15); // ITS-4 = 1+2+4+8
+ if(cutDefinition==kQA) trkCuts->SetRequireITSRefit(kTRUE);
+ if(cutDefinition!=kQA) trkCuts->SetMinNCrossedRowsOverFindable(0.6);
trkCuts->SetRequireTPCRefit(kTRUE);
cuts->AddCut(trkCuts);
- //Pt cut, should make execution a bit faster
- AliDielectronVarCuts *pt = new AliDielectronVarCuts("PtCut","PtCut");
- pt->AddCut(AliDielectronVarManager::kPt,0.8,1e30); //1.1
- cuts->AddCut(pt);
- pt->Print();
-
// 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);
+ if(cutDefinition==kQA) varCuts->AddCut(AliDielectronVarManager::kPt,0.8,1e30); //1.1
+ if(cutDefinition==kQA) varCuts->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
+ if(cutDefinition==kQA) varCuts->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
+ if(cutDefinition==kQA) varCuts->AddCut(AliDielectronVarManager::kTOFbeta, 0.2, 0.9, kTRUE);
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::kNclsTPC, 50.0, 160.0);
varCuts->AddCut(AliDielectronVarManager::kKinkIndex0, 0.0);
- //varCuts->AddCut(AliDielectronVarManager::kTOFbeta, 0.2, 0.9, kTRUE);
- varCuts->Print();
cuts->AddCut(varCuts);
/* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv PID CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
////////////////////////////////// DATA
if(!hasMC) {
// TPC
- pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron, -4.,4.0);
- pid->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -100.,4.0,0.,0.,kTRUE);
- pid->AddCut(AliDielectronPID::kTPC,AliPID::kProton, -100.,3.5,0.,0.,kTRUE);
+ pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron, -3.,3.0);
+ if(cutDefinition==kQA) pid->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -100.,4.0,0.,0.,kTRUE);
+ // pid->AddCut(AliDielectronPID::kTPC,AliPID::kProton, -100.,3.5,0.,0.,kTRUE);
// TOF
- pid->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-5,5.,0.,0.,kFALSE,AliDielectronPID::kIfAvailable);
- // pid->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,3.,0.,0.,kFALSE,AliDielectronPID::kIfAvailable);
+ //pid->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-5,5.,0.,0.,kFALSE,AliDielectronPID::kIfAvailable);
+ pid->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,5.,0.,0.,kFALSE,AliDielectronPID::kIfAvailable);
// TRD 1- or 2-dimensonal
/* pid->AddCut(AliDielectronPID::kTRDeleEff,AliPID::kElectron,.8,1.,3.5.,6.,kFALSE,
} //hasMC
- // cuts->AddCut(pid);
+ cuts->AddCut(pid);
/* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PID CUTS ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
noconv->SetV0DaughterCut(AliPID::kElectron,kTRUE);
//cuts->AddCut(noconv);
+ // Print
+ // cuts->Print();
+
+ die->GetTrackFilter().GetCuts()->ls();
}
//______________________________________________________________________________________
// conversion rejection
Double_t gCut;
switch(cutDefinition) {
- case kQA: gCut = 0.05; break;
- default: gCut = 0.05;
+ case kQA: gCut = 0.05; break;
+ case kQApid: gCut = 0.00; return;
+ default: gCut = 0.05;
}
AliDielectronVarCuts *gammaCuts = new AliDielectronVarCuts("GammaCuts","GammaCuts");
- // gammaCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.1, kTRUE);
- // gammaCuts->AddCut(AliDielectronVarManager::kLegDist, 0.0, 0.25, kTRUE);
- // gammaCuts->AddCut(AliDielectronVarManager::kR, 3.0, 90.0, kTRUE);
- // gammaCuts->AddCut(AliDielectronVarManager::kPsiPair, 0.0, 0.05, kTRUE);
- // gammaCuts->AddCut(AliDielectronVarManager::kChi2NDF, 0.0, 10.0, kTRUE);
gammaCuts->AddCut(AliDielectronVarManager::kM, 0.0, gCut);
gammaCuts->Print();
die->GetPairPreFilter().AddCuts(gammaCuts);
// minvCut->Print();
// die->GetPairFilter().AddCuts(minvCut);
}
+
+ // gamma selection
+ AliDielectronVarCuts *gamma = new AliDielectronVarCuts("Gamma","Gamma");
+ gamma->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.035); // 0.1
+ gamma->AddCut(AliDielectronVarManager::kCosPointingAngle, TMath::Cos(0.02), 1.0);
+ gamma->AddCut(AliDielectronVarManager::kLegDist, 0.0, 0.25);
+ gamma->AddCut(AliDielectronVarManager::kR, 3.0, 90.0);
+ gamma->AddCut(AliDielectronVarManager::kPsiPair, 0.0, 0.05);
+ gamma->AddCut(AliDielectronVarManager::kChi2NDF, 0.0, 10.0);
+ gamma->AddCut(AliDielectronVarManager::kM, 0.0, 0.05);
+ if(cutDefinition==kQApid) {
+ // gamma->Print();
+ // die->GetPairFilter().AddCuts(gamma);
+ }
+
+}
+
+//______________________________________________________________________________________
+void SetupV0Cuts(AliDielectron *die, Int_t cutDefinition)
+{
+ //
+ // Setup the V0 cuts
+ //
+
+ if(cutDefinition!=kQApid) return;
+
+ // add to cut group
+ TIter next(die->GetTrackFilter().GetCuts());
+ AliAnalysisCuts *cuts;
+ while((cuts = (AliAnalysisCuts*)next())) {
+ if(cuts->IsA() == AliDielectronCutGroup::Class()) break;
+ }
+
+ AliDielectronV0Cuts *gammaV0Cuts = new AliDielectronV0Cuts("IsGamma","IsGamma");
+ gammaV0Cuts->SetPdgCodes(22,11,11);
+ //gammaV0Cuts->SetDefaultPID(13); // TPC+-3.5 TOF+-4
+ gammaV0Cuts->SetDefaultPID(7); // TPC+-10 TOF+-3 required
+ gammaV0Cuts->AddCut(AliDielectronVarManager::kCosPointingAngle, TMath::Cos(0.02), 1.0 );
+ gammaV0Cuts->AddCut(AliDielectronVarManager::kChi2NDF, 0.0, 10.0 );
+ gammaV0Cuts->AddCut(AliDielectronVarManager::kLegDist, 0.0, 0.25);
+ gammaV0Cuts->AddCut(AliDielectronVarManager::kR, 3.0, 90.0 );
+ gammaV0Cuts->AddCut(AliDielectronVarManager::kPsiPair, 0.0, 0.05);
+ gammaV0Cuts->AddCut(AliDielectronVarManager::kM, 0.0, 0.05);
+ // gammaV0Cuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.1 );
+ gammaV0Cuts->AddCut(AliDielectronVarManager::kArmPt, 0.0, 0.05);
+ // gammaV0Cuts->AddCut(AliDielectronVarManager::kArmAlpha, -0.35, 0.35); // not sure if this works fine
+ gammaV0Cuts->SetExcludeTracks(kFALSE); // inclusion
+ gammaV0Cuts->Print();
+
+ // efficiency
+ // const Double_t cutQTG < 0.05;
+ // purity
+ // 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; // high pt gammas
+
+ //////////
+ /* // Hans configuration
+ fMaxEta(1.4),
+ fMinR(10.),
+ fMaxR(180.),
+ fMaxChi2NDF(5.), //100
+ fMaxPsi(.05), //2
+ fMinCosP(0.9997), //0.97
+ fMinDaughterPt(.05),
+ fMinTPCNcls(70), //40
+ fMaxAsym(.06),
+ fMaxNSigEleTPC(4.),
+ fMaxNSigEleTPCLowP(3.), //4.
+ fMinNSigPioTPC(1.),
+ fMinNSigKaoTPC(1.),
+ fMinNSigProTPC(1.),
+ fMaxNSigEleTOF(3.),
+ */
+
+
+
+
+
+
+ if(cuts)
+ ((AliDielectronCutGroup*)cuts)->AddCut(gammaV0Cuts);
+ else
+ die->GetTrackFilter().AddCuts(gammaV0Cuts);
+}
+
+//______________________________________________________________________________________
+void ConfigEvtPlane(AliDielectron *die, Int_t cutDefinition)
+{
+ //
+ // Configurate the TPC event plane
+ //
+
+ Double_t gGap = 0.0;
+ AliDielectronVarCuts *poi = new AliDielectronVarCuts("PoI","PoI");
+ poi->AddCut(AliDielectronVarManager::kM,2.92,3.20); // particles of interest, jpsi mass window
+ die->GetEventPlanePOIPreFilter().AddCuts(poi);
+
+ // eta gap in tpc event plane
+ //AliDielectronVarCuts *etaGap = new AliDielectronVarCuts(AliDielectronVarManager::GetValueName(AliDielectronVarManager::kEta),"etaGap");
+ //etaGap->AddCut(AliDielectronVarManager::kEta,-1*gGap,gGap,kTRUE);
+ //die->GetEventPlanePreFilter().AddCuts(etaGap);
+ //if(cutDefinition==kSubLS) die->SetLikeSignSubEvents();
+
+ die->SetPreFilterEventPlane();
}
//______________________________________________________________________________________
//
// booleans for histo selection
- Bool_t bHistEvtQA=kFALSE, bHistTrackQA=kFALSE, bHistPairQA = kFALSE;
+ Bool_t bHistEvtQA=kFALSE, bHistTrackQA=kFALSE, bHistPairQA = kFALSE, bHistPidQA=kFALSE;
switch (cutDefinition) {
- case kQA: bHistEvtQA=kTRUE; bHistTrackQA=kTRUE; bHistPairQA=kTRUE; break;
+ case kQA: bHistEvtQA=kTRUE; bHistTrackQA=kTRUE; bHistPairQA=kTRUE; bHistPidQA=kFALSE; break;
+ case kQApid: bHistEvtQA=kFALSE; bHistTrackQA=kFALSE; bHistPairQA=kFALSE; bHistPidQA=kTRUE; break;
}
-
//Setup histogram Manager
AliDielectronHistos *histos=new AliDielectronHistos(die->GetName(),die->GetTitle());
-
////// EVENT HISTOS /////
if(bHistEvtQA) {
//add histograms to event class
histos->AddClass("Event");
- Int_t bins[]={125,100,100,55}; Double_t min[]={0.,0.,0.,0.}; Double_t max[]={25000.,20000.,4000.,1.1};
- UInt_t var[]={AliDielectronVarManager::kMultV0,AliDielectronVarManager::kNTrk,AliDielectronVarManager::kNacc,AliDielectronVarManager::kMatchEffITSTPC};
- histos->UserSparse("Event", 4, bins, min, max, var);
- //histos->UserHistogram("Event", 3, bins, min, max, var);
+
+ Int_t binsev[] ={ 125, 100, 100, 100, 100, 100, 55 };
+ Double_t minev[] ={ 0., 0., 0., 0., 0., 0., 0. };
+ Double_t maxev[] ={25000.,20000.,20000.,4000.,4000., 4000., 1.1};
+ UInt_t varev[] ={AliDielectronVarManager::kMultV0,
+ AliDielectronVarManager::kNTrk,
+ AliDielectronVarManager::kRefMult,
+ AliDielectronVarManager::kNacc,
+ AliDielectronVarManager::kRefMultTPConly,
+ AliDielectronVarManager::kNVtxContrib,
+ AliDielectronVarManager::kMatchEffITSTPC };
+ histos->UserSparse("Event", 7, binsev, minev, maxev, varev);
+
histos->UserHistogram("Event","","", 80,0.,80., AliDielectronVarManager::kCentrality);
+
histos->UserHistogram("Event","","", GetRunNumbers(), AliDielectronVarManager::kRunNumber);
histos->UserHistogram("Event","","", GetRunNumbers(), AliDielectronHelper::MakeLinBinning(80,0.,80.),
AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kCentrality);
AliDielectronVarManager::kCentrality, AliDielectronVarManager::kTPCrpH2uc);
histos->UserHistogram("Event","","", 80,0.,80., 100,0.,250.,
AliDielectronVarManager::kCentrality, AliDielectronVarManager::kTPCmagH2uc);
-
}
////// PAIR HISTOS /////
histos->UserHistogram("Pair","","", 200, 0.,20., AliDielectronVarManager::kR);
histos->UserHistogram("Pair","","", 100,-1.,+1., AliDielectronVarManager::kThetaCS);
+ histos->UserHistogram("Pair","","", 200,-10.,+10., 125, 0.0, 2.5, AliDielectronVarManager::kArmAlpha, AliDielectronVarManager::kArmPt);
+
if(hasMC) histos->UserHistogram("Pair","","",10000,-5000.5,4999.5, 300, 0.,300*0.04, AliDielectronVarManager::kPdgCode, AliDielectronVarManager::kM);
histos->UserProfile("Pair","","", AliDielectronVarManager::kPt, GetRunNumbers(), AliDielectronVarManager::kRunNumber);
histos->UserProfile("Pair","","", AliDielectronVarManager::kEta, GetRunNumbers(), AliDielectronVarManager::kRunNumber);
histos->UserProfile("Pair","","", AliDielectronVarManager::kPhi, GetRunNumbers(), AliDielectronVarManager::kRunNumber);
- histos->UserProfile("Pair","","", AliDielectronVarManager::kOpeningAngle, GetRunNumbers(), AliDielectronVarManager::kRunNumber);
- histos->UserProfile("Pair","","", AliDielectronVarManager::kM, GetRunNumbers(), AliDielectronVarManager::kRunNumber);
}
////// TRACK HISTOS /////
//add histograms to track class
histos->SetReservedWords("Track");
- for (Int_t i=0; i<2; ++i) histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
- //legs from pair (fill SE PM)
- for (Int_t i=1; i<2; ++i) histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i)));
-
+ // all tracks after all cuts
+ histos->AddClass(Form("Track_%s", AliDielectron::PairClassName(AliDielectron::kEv1PM)));
+ // fill legs from OS pairs
+ histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PM)));
+
//add MC signal histograms to track class
if(die->GetMCSignals()) {
for (Int_t i=0; i<die->GetMCSignals()->GetEntriesFast(); ++i)
// TRD
histos->UserHistogram("Track","", "", 7, 0., 7., AliDielectronVarManager::kTRDpidQuality);
histos->UserHistogram("Track","", "", 105,-1.,20., AliDielectronVarManager::kTRDchi2);
+ // TRD PID
+ // histos->UserHistogram("Track","", "", 100,0.0,5., 100,0.,6., AliDielectronVarManager::kPIn, AliDielectronVarManager::kTRDsignal);
+ histos->UserHistogram("Track","","", 100,0.,1., AliDielectronVarManager::kTRDprobEle);
+ histos->UserHistogram("Track","","", 100,0.,1., AliDielectronVarManager::kTRDprobPio);
+// histos->UserHistogram("Track","","", 100,0.,1., AliDielectronVarManager::kTRDprob2DEle);
+// histos->UserHistogram("Track","","", 100,0.,1., AliDielectronVarManager::kTRDprob2DPio);
// TPC PID
histos->UserProfile("Track","","", AliDielectronVarManager::kTPCnSigmaEle, GetRunNumbers(), AliDielectronVarManager::kRunNumber);
+ // histos->UserHistogram("Track","","", GetRunNumbers(), AliDielectronHelper::MakeLinBinning(200, 0.,200.), AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kTPCSignal);
histos->UserHistogram("Track","","", GetRunNumbers(), AliDielectronHelper::MakeLinBinning(16, 0.,80.), AliDielectronHelper::MakeLinBinning(100, -5.,+5),
AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kTPCnSigmaEle);
histos->UserHistogram("Track","","", GetRunNumbers(), AliDielectronHelper::MakeLinBinning(20, -1.,1.), AliDielectronHelper::MakeLinBinning(100, -5.,+5),
histos->UserHistogram("Track","","",10000,-5000.5,4999.5, AliDielectronVarManager::kPdgCodeMother);
histos->UserHistogram("Track","","",10000,-5000.5,4999.5, AliDielectronVarManager::kPdgCode);
}
-
}
+ // TPC PID
+ if(bHistPidQA) {
+ //add histograms to track class
+ histos->SetReservedWords("Track");
+ //for (Int_t i=0; i<2; ++i) histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
+ histos->AddClass(Form("Track_%s",AliDielectron::PairClassName(AliDielectron::kEv1PM)));
+
+ TObjArray *limits = new TObjArray();
+ limits->Add(AliDielectronHelper::MakeLinBinning(100,-10., 5.));
+ limits->Add(AliDielectronHelper::MakeLinBinning(100, 0., 200.));
+ limits->Add(AliDielectronHelper::MakeLinBinning(100, 0., 4000.));
+ limits->Add(AliDielectronHelper::MakeLinBinning( 50, 0., 10.));
+ limits->Add(AliDielectronHelper::MakeLinBinning( 32, 0., 80.));
+ limits->Add(AliDielectronHelper::MakeLinBinning( 20, -1., 1.));
+ limits->Add(GetRunNumbers());
+
+ UInt_t var[7]={AliDielectronVarManager::kTPCnSigmaEle,
+ AliDielectronVarManager::kTPCsignal,
+ AliDielectronVarManager::kNacc,
+ AliDielectronVarManager::kPIn,
+ AliDielectronVarManager::kCentrality,
+ AliDielectronVarManager::kEta,
+ AliDielectronVarManager::kRunNumber};
+ histos->UserSparse("Track", 7, limits, var);
+
+ }
+
+
die->SetHistogramManager(histos);
}
TVectorD *GetRunNumbers();
TVectorD *GetDeltaPhiBins();
-TString names=("TPC;TOF;TRD;TOFTRD;TOFTRD2D;rec;Gam0;Gam01;Gam05;Gam10;Gam15;Gam20;EtaGap01;EtaGap02;EtaGap03;EtaGap04;EtaGap05;SubLS;SubRndm");
-enum { kTPC=0, kTOF, kTRD, kTOFTRD, kTOFTRD2D, krec,kGam0, kGam01, kGam05, kGam10, kGam15, kGam20, kEtaGap01, kEtaGap02, kEtaGap03, kEtaGap04, kEtaGap05, kSubLS, kSubRndm };
+TString names=("TPC;TOF;TRD;Ionut;NOPID");
+enum { kTPC=0, kTOF, kTRD, kIonut, kNoPID };
TObjArray *arrNames=names.Tokenize(";");
const Int_t nDie=arrNames->GetEntries();
Bool_t isESD = kTRUE;
-Bool_t hasMC = kFALSE;
TString list = gSystem->Getenv("LIST");
-AliDielectron* ConfigJpsi_jb_PbPb(Int_t cutDefinition, TString prod="", ULong64_t triggers=AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB)
+AliDielectron* ConfigJpsi_jb_PbPb(Int_t cutDefinition, Bool_t hasMC=kFALSE, ULong64_t triggers=AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB)
{
//
// Setup the instance of AliDielectron
// gsi train?
TString trainRoot = gSystem->Getenv("TRAIN_ROOT");
Bool_t isGSItrain = (trainRoot.IsNull()?kFALSE:kTRUE);
-
- // find mc or not?
- if( list.IsNull()) list=prod;
- if( list.Contains("LHC10h") || list.Contains("LHC11h") ) hasMC=kFALSE;
- if( list.Contains("LHC11a10") || list.Contains("LHC12a17") ) hasMC=kTRUE;
+ if(isGSItrain) {
+ // find mc or not?
+ if( list.IsNull()) list=prod;
+ if( list.Contains("LHC10h") || list.Contains("LHC11h") ) hasMC=kFALSE;
+ if( list.Contains("LHC11a10") || list.Contains("LHC12a17") ) hasMC=kTRUE;
+ }
//ESD handler?
isESD=(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()->IsA()==AliESDInputHandler::Class());
// switch configurations ON and OFF
if(hasMC) { // MONTE CARLO
switch(cutDefinition) {
- case kTOF: /* */ break;
+ case kTPC: /* */ break;
+ case kTOF: /* */ break;
+ case kTRD: /* */ break;
+ case kIonut: /* */ break;
+ // case kNoPID: /* */ break;
default: return 0x0;
}
} else { // COLLISION DATA
switch(cutDefinition) {
- case kTOF: /* */ break;
+ case kTPC: /* */ break;
+ case kTOF: /* */ break;
+ case kTRD: /* */ break;
+ case kIonut: /* */ break;
default: return 0x0;
}
}
printf(" Adding %s%s config %s for %s \n",(isESD?"ESD":"AOD"),(hasMC?" MC":""),name.Data(),list.Data());
// init AliDielectron
- AliDielectron *die = new AliDielectron(Form("%s",name.Data()), Form("Track cuts: %s",name.Data()));
+ AliDielectron *die = new AliDielectron(Form("%s",name.Data()), Form("%s",name.Data()));
die->SetHasMC(hasMC);
// cut setup
SetupEventCuts(die,triggers,cutDefinition);
SetupTrackCuts(die,cutDefinition);
SetupV0Cuts(die,cutDefinition);
- // SetupPairCuts(die,cutDefinition);
+ SetupPairCuts(die,cutDefinition);
// Monte Carlo Signals
if(hasMC) {
printf(" Add %d class types to the histo manager \n",die->GetHistogramList()->GetEntries());
// HF array setup
- InitHF(die,cutDefinition);
+ if(!hasMC) InitHF(die,cutDefinition);
// CF container setup, switched off
InitCF(die,cutDefinition);
- /* printf(" Add %d pair, %d leg vars, %p steps and %p bins to the container \n",
- die->GetCFManagerPair()->GetNvarsPair(),die->GetCFManagerPair()->GetNvarsLeg(),
- die->GetCFManagerPair()->GetContainer(), die->GetCFManagerPair()->GetContainer() );
+ /*
+ printf(" Add %d pair, %d leg vars, %p steps and %p bins to the container \n",
+ die->GetCFManagerPair()->GetNvarsPair(),die->GetCFManagerPair()->GetNvarsLeg(),
+ die->GetCFManagerPair()->GetContainer(), die->GetCFManagerPair()->GetContainer() );
*/
// bgrd estimators
if(!hasMC) ConfigBgrd(die,cutDefinition);
// tpc event plane configuration
- ConfigEvtPlane(die,cutDefinition);
+ if(!hasMC) ConfigEvtPlane(die,cutDefinition);
// prefilter settings
die->SetPreFilterUnlikeOnly();
// trigger specific centrality cuts (reject trigger inefficiencies)
Double_t minCent=0.0, maxCent=100.;
- if(!hasMC) {
+ if(!die->GetHasMC()) {
switch(triggers) {
case AliVEvent::kCentral: minCent= 0.; maxCent= 9.; break;
case AliVEvent::kSemiCentral: minCent=12.; maxCent=53.; break;
AliDielectronCutGroup* cuts = new AliDielectronCutGroup("cuts","cuts",AliDielectronCutGroup::kCompAND);
die->GetTrackFilter().AddCuts(cuts);
+ /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv FILTER CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
// AOD track filter (needs to be first cut to speed up)
AliDielectronTrackCuts *trkFilter = new AliDielectronTrackCuts("TrkFilter","TrkFilter");
trkFilter->SetAODFilterBit(AliDielectronTrackCuts::kTPCqual);
// trkFilter->SetMinNCrossedRowsOverFindable(0.6);
- if(!isESD) cuts->AddCut(trkFilter);
- //Pt cut, should make execution a bit faster
- AliDielectronVarCuts *pt = new AliDielectronVarCuts("PtCut","PtCut");
- pt->AddCut(AliDielectronVarManager::kPt,1.1,1e30); //0.8
- cuts->AddCut(pt);
-
- // track cuts ESD and AOD
- AliDielectronVarCuts *varCuts = new AliDielectronVarCuts("VarCuts","VarCuts");
+ /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv TRACK CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
+ AliDielectronVarCuts *varCuts = new AliDielectronVarCuts("VarCuts","VarCuts");
+ AliDielectronTrackCuts *trkCuts = new AliDielectronTrackCuts("TrkCuts","TrkCuts");
+ // config specific cuts
+ switch(cutDefinition) {
+ case kIonut:
+ varCuts->AddCut(AliDielectronVarManager::kPt,0.85,1e30);
+ varCuts->AddCut(AliDielectronVarManager::kEta, -0.8, 0.8);
+ varCuts->AddCut(AliDielectronVarManager::kTPCclsSegments,7., 8.0);
+ trkCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 3); // SPD any
+ break;
+ case kNoPID:
+ varCuts->AddCut(AliDielectronVarManager::kPt,0.85,1e30); //0.8
+ varCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9); // -0.9, 0.9
+ varCuts->AddCut(AliDielectronVarManager::kNclsTPC, 70.0, 160.0);
+ trkCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 7); // ITS-3 = 1+2+4
+ break;
+ case kTOF:
+ case kTRD:
+ case kTPC:
+ varCuts->AddCut(AliDielectronVarManager::kPt,0.95,1e30); //0.8
+ varCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9); // -0.9, 0.9
+ varCuts->AddCut(AliDielectronVarManager::kNclsTPC, 70.0, 160.0);
+ trkCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 7); // ITS-3 = 1+2+4
+ break;
+ }
+ // standard cuts
varCuts->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
varCuts->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
- varCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9); // -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);
// varCuts->AddCut(AliDielectronVarManager::kV0Index0, 0.0);
- if(cutDefinition==kTOF || cutDefinition==kTOFTRD || cutDefinition==kTOFTRD2D)
- varCuts->AddCut(AliDielectronVarManager::kTOFbeta, 0.2, 0.9, kTRUE);
- cuts->AddCut(varCuts);
- varCuts->Print();
-
- AliDielectronTrackCuts *trkCuts = new AliDielectronTrackCuts("TrkCuts","TrkCuts");
- trkCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 15); // ITS-4 = 1+2+4+8
- // trkCuts->SetMaxWaivedITSNcls(1);
trkCuts->SetRequireITSRefit(kTRUE);
trkCuts->SetRequireTPCRefit(kTRUE);
- cuts->AddCut(trkCuts);
/* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv PID CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
- AliDielectronPID *pid = new AliDielectronPID("PID","PID");
- ////////////////////////////////// DATA
- if(!hasMC) {
- pid->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-100.,4.0,0.,0.,kTRUE);
- pid->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-100.,3.5,0.,0.,kTRUE);
-
- if(cutDefinition==kTRD || cutDefinition==kTOFTRD)
- pid->AddCut(AliDielectronPID::kTRDeleEff,AliPID::kElectron,.8,1.,3.5.,6.,kFALSE,
- AliDielectronPID::kIfAvailable,AliDielectronVarManager::kTRDpidQuality);
-
- if(cutDefinition==kTOFTRD2D)
- pid->AddCut(AliDielectronPID::kTRDeleEff2D,AliPID::kElectron,.8,1.,3.5.,6.,kFALSE,
- AliDielectronPID::kIfAvailable,AliDielectronVarManager::kTRDpidQuality);
+ AliDielectronVarCuts *pidVarCuts = new AliDielectronVarCuts("varPIDCuts","varPIDCuts");
+ AliDielectronPID *pidCuts = new AliDielectronPID("PIDCuts","PIDCuts");
+ switch(cutDefinition) {
+ case kTRD:
+ pidCuts->AddCut(AliDielectronPID::kTRDeleEff,AliPID::kElectron,.8,1.,3.5.,6.,kFALSE,
+ AliDielectronPID::kIfAvailable,AliDielectronVarManager::kTRDpidQuality);
+ case kTOF:
+ pidVarCuts->AddCut(AliDielectronVarManager::kTOFbeta, 0.2, 0.9, kTRUE);
+ pidCuts->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,3.,0.,0.,kFALSE,
+ AliDielectronPID::kIfAvailable);
+ case kTPC:
+ pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,4.);
+ pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-100.,4.0,0.,0.,kTRUE);
+ pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-100.,3.5,0.,0.,kTRUE);
+ break;
+ case kIonut:
+ pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-1.5.,3.);
+ pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-0.9,3.0,-0.5,+0.5,kFALSE,
+ AliDielectronPID::kRequire,AliDielectronVarManager::kEta);
+ pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-0.65,3.0,-0.3,+0.3,kFALSE,
+ AliDielectronPID::kRequire,AliDielectronVarManager::kEta);
+ pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-0.4,3.0,-0.1,+0.1,kFALSE,
+ AliDielectronPID::kRequire,AliDielectronVarManager::kEta);
+ pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-100.,4.0,0.,0.,kTRUE);
+ break;
}
- ////////////////////////////////// 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.);
-
- //LHC11a10b
- if (list.Contains("LHC11a10b")) {
- 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")) {
- 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,-4.,4.);
-
- if(cutDefinition==kTOF || cutDefinition==kTOFTRD || cutDefinition==kTOFTRD2D)
- pid->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,3.,0.,0.,kFALSE,AliDielectronPID::kIfAvailable);
-
- if(cutDefinition!=krec) cuts->AddCut(pid);
- /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PID CUTS ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
-
-
+ /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv TENDER CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
// exclude conversion electrons selected by the tender
AliDielectronTrackCuts *noconv=new AliDielectronTrackCuts("noConv","noConv");
noconv->SetV0DaughterCut(AliPID::kElectron,kTRUE);
- // cuts->AddCut(noconv);
+
+ // activate the cut sets (order might be CPU timewise important)
+ if(!isESD) cuts->AddCut(trkFilter);
+ cuts->AddCut(varCuts);
+ cuts->AddCut(trkCuts);
+ if(cutDefinition!=kNoPID) cuts->AddCut(pidCuts);
+ if(cutDefinition!=kNoPID) cuts->AddCut(pidVarCuts);
+ //cuts->AddCut(noconv);
+ cuts->Print();
}
// Setup the V0 cuts
//
- // Quality cuts
+ // Quality cuts (add the gamma filter to the cut group)
TIter next(die->GetTrackFilter().GetCuts());
AliAnalysisCuts *cuts;
while((cuts = (AliAnalysisCuts*)next())) {
AliDielectronV0Cuts *gammaV0Cuts = new AliDielectronV0Cuts("IsGamma","IsGamma");
gammaV0Cuts->SetPdgCodes(22,11,11);
+ gammaV0Cuts->SetDefaultPID(13); // TPC+-3.5 TOF+-4
gammaV0Cuts->AddCut(AliDielectronVarManager::kCosPointingAngle, TMath::Cos(0.02), 1.0, kFALSE);
gammaV0Cuts->AddCut(AliDielectronVarManager::kChi2NDF, 0.0, 10.0, kFALSE);
gammaV0Cuts->AddCut(AliDielectronVarManager::kLegDist, 0.0, 0.25, 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);
+ // 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;
+ // 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;
if(cuts)
((AliDielectronCutGroup*)cuts)->AddCut(gammaV0Cuts);
// conversion rejection
Double_t gCut;
switch(cutDefinition) {
- case kTPC: gCut=0.05; break;
- case krec: gCut=0.05; break;
- case kGam10: gCut=0.1; break;
- case kGam15: gCut=0.15; break;
- case kGam20: gCut=0.2; break;
- case kGam05: gCut=0.05; break;
- case kGam01: gCut=0.01; break;
- case kGam0: gCut=0.0; break;
- default: gCut=0.05; // default
+ // case kTPC: gCut=0.05; break;
+ // case kTOF: gCut=0.05; break;
+ // case kTRD: gCut=0.05; break;
+ // case kIonut: gCut=0.05; break;
+ default: gCut=0.05; // default
}
AliDielectronVarCuts *gammaCuts = new AliDielectronVarCuts("GammaCuts","GammaCuts");
-// gammaCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.1, kTRUE);
-// gammaCuts->AddCut(AliDielectronVarManager::kLegDist, 0.0, 0.25, kTRUE);
-// gammaCuts->AddCut(AliDielectronVarManager::kR, 3.0, 90.0, kTRUE);
-// gammaCuts->AddCut(AliDielectronVarManager::kPsiPair, 0.0, 0.05, kTRUE);
-// gammaCuts->AddCut(AliDielectronVarManager::kChi2NDF, 0.0, 10.0, kTRUE);
gammaCuts->AddCut(AliDielectronVarManager::kM, 0.0, gCut);
die->GetPairPreFilter().AddCuts(gammaCuts);
-
// rapidity selection
// AliDielectronVarCuts *rapCut=new AliDielectronVarCuts("|Y|<.9","|Y|<.9");
// rapCut->AddCut(AliDielectronVarManager::kY,-0.9,0.9);
// add mixed events
AliDielectronMixingHandler *mix=new AliDielectronMixingHandler;
mix->AddVariable(AliDielectronVarManager::kZvPrim, "-10.,-5.,-4.,-3.,-2.,-1.,0.,1.,2.,3.,4.,5.,10.");
- // mix->AddVariable(AliDielectronVarManager::kCentrality, 8, 0.,80.);
+ mix->AddVariable(AliDielectronVarManager::kCentrality, 8, 0.,80.);
mix->AddVariable(AliDielectronVarManager::kTPCrpH2, 8, TMath::Pi()/-2., TMath::Pi()/2.);
mix->AddVariable(AliDielectronVarManager::kTPCmagH2, "0.,20.,50.,80.,110.,150.,500.");
mix->SetMixType(AliDielectronMixingHandler::kAll);
// Configurate the TPC event plane
//
- Double_t gGap;
- switch(cutDefinition) {
- case kEtaGap01: gGap=0.1; break;
- case kEtaGap02: gGap=0.2; break;
- case kEtaGap03: gGap=0.3; break;
- case kEtaGap04: gGap=0.4; break;
- case kEtaGap05: gGap=0.5; break;
- default: gGap=0.0;
- }
+ // Double_t gGap;
+ // switch(cutDefinition) {
+ // case kEtaGap01: gGap=0.1; break;
+ // case kEtaGap02: gGap=0.2; break;
+ // case kEtaGap03: gGap=0.3; break;
+ // case kEtaGap04: gGap=0.4; break;
+ // case kEtaGap05: gGap=0.5; break;
+ // default: gGap=0.0;
+ // }
+ // eta gap in tpc event plane
+ // AliDielectronVarCuts *etaGap = new AliDielectronVarCuts(AliDielectronVarManager::GetValueName(AliDielectronVarManager::kEta),"etaGap");
+ // etaGap->AddCut(AliDielectronVarManager::kEta,-1*gGap,gGap,kTRUE);
+ // die->GetEventPlanePreFilter().AddCuts(etaGap);
AliDielectronVarCuts *poi = new AliDielectronVarCuts("PoI","PoI");
poi->AddCut(AliDielectronVarManager::kM,2.92,3.20); // particles of interest, jpsi mass window
die->GetEventPlanePOIPreFilter().AddCuts(poi);
- // eta gap in tpc event plane
- if(cutDefinition >= kEtaGap01 &&
- cutDefinition < kSubLS ) {
- AliDielectronVarCuts *etaGap = new AliDielectronVarCuts(AliDielectronVarManager::GetValueName(AliDielectronVarManager::kEta),"etaGap");
- etaGap->AddCut(AliDielectronVarManager::kEta,-1*gGap,gGap,kTRUE);
- die->GetEventPlanePreFilter().AddCuts(etaGap);
- }
-
- if(cutDefinition==kSubLS) die->SetLikeSignSubEvents();
+ // die->SetLikeSignSubEvents();
die->SetPreFilterEventPlane();
}
//
// Initialise the histograms
//
+ Bool_t hasMC=die->GetHasMC();
// booleans for histo selection
Bool_t bHistTrackQA=kFALSE, bHistEvts = kFALSE, bHistPair = kFALSE, bHistPairME = kFALSE, bHistFlow = kFALSE, bHistFlowQA=kFALSE;
switch (cutDefinition) {
- case kTPC:
- case kTOF: bHistEvts=kTRUE; bHistFlow=kTRUE; bHistPair=kTRUE; bHistPairME=kFALSE; break;
+ case kTPC: bHistEvts=kTRUE;
+ case kTOF:
case kTRD:
- case kTOFTRD:
- case kTOFTRD2D: bHistFlow=kTRUE; bHistPair=kTRUE; break;
- case krec: break;
+ case kIonut: bHistFlow=kTRUE; bHistFlowQA=kTRUE; bHistPair=kTRUE; bHistPairME=kFALSE;
+
+ // case kTOFTRD:
+ // case kTOFTRD2D: bHistFlow=kTRUE; bHistPair=kTRUE; break;
+ // case krec: break;
// case kITScls:
// case kITSamy:
// case kDCA:
// case kChi: break;
- case kEtaGap01:
- case kEtaGap02:
- case kEtaGap03:
- case kEtaGap04:
- case kEtaGap05:
- case kSubRndm: bHistFlow=kTRUE; bHistFlowQA=kTRUE; break;
- case kSubLS: bHistFlow=kTRUE; bHistFlowQA=kTRUE; bHistEvts=kTRUE; break;
- case kGam0:
- case kGam01:
- case kGam05:
- case kGam10:
- case kGam15:
- case kGam20: break;
+ // case kEtaGap01:
+ // case kEtaGap02:
+ // case kEtaGap03:
+ // case kEtaGap04:
+ // case kEtaGap05:
+ // case kSubRndm: bHistFlow=kTRUE; bHistFlowQA=kTRUE; break;
+ // case kSubLS: bHistFlow=kTRUE; bHistFlowQA=kTRUE; bHistEvts=kTRUE; break;
+ // case kGam0:
+ // case kGam01:
+ // case kGam05:
+ // case kGam10:
+ // case kGam15:
+ // case kGam20: break;
}
-
+ if(hasMC) { bHistFlow=kFALSE; bHistFlowQA=kFALSE; bHistPairME=kFALSE; }
//Setup histogram Manager
AliDielectronHistos *histos=new AliDielectronHistos(die->GetName(),die->GetTitle());
////// FLOW //////
if(bHistFlow) {
// EP Qvector magnitudes // TODO move to QA
- histos->UserHistogram("Event","","", 200,0.,200., AliDielectronVarManager::kTPCmagH2uc);
- histos->UserHistogram("Event","","", 200,0.,800., AliDielectronVarManager::kv0ACmagH2);
- histos->UserHistogram("Event","","", 200,0.,800., AliDielectronVarManager::kv0AmagH2);
- histos->UserHistogram("Event","","", 200,0.,800., AliDielectronVarManager::kv0CmagH2);
+ // histos->UserHistogram("Event","","", 200,0.,200., AliDielectronVarManager::kTPCmagH2uc);
+ // histos->UserHistogram("Event","","", 200,0.,800., AliDielectronVarManager::kv0ACmagH2);
+ // histos->UserHistogram("Event","","", 200,0.,800., AliDielectronVarManager::kv0AmagH2);
+ // histos->UserHistogram("Event","","", 200,0.,800., AliDielectronVarManager::kv0CmagH2);
// RP angles versus centrality
histos->UserHistogram("Event","","", 16,0.,80.,100,-2.,2., AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCrpH2);
histos->UserHistogram("Event","","", 16,0.,80.,100,-2.,2., AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsub1rpH2);
for (Int_t i=0; i<(bHistPairME ? 8 : 3); ++i){
histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
}
+ //add MC signal histograms to track class
+ if(die->GetMCSignals()) {
+ for (Int_t i=0; i<die->GetMCSignals()->GetEntriesFast(); ++i)
+ histos->AddClass(Form("Pair_%s",die->GetMCSignals()->At(i)->GetName()));
+ }
+
+ //Track classes
//legs from pair (fill SE)
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)));
+ // for (Int_t i=0; i<2; ++i) histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
+ histos->AddClass(Form("Track_%s", AliDielectron::PairClassName(AliDielectron::kEv1PM)));
// Vertex
histos->UserHistogram("Track","","", 500,-1.,1., AliDielectronVarManager::kImpactParXY);
//// FLOW results use tprofiles
if(bHistFlow) {
- histos->UserProfile("Pair","",
- "cos(2(#varphi-#Psi^{V0AC}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)",
- AliDielectronVarManager::kv0ACrpH2FlowV2,
- 125,0.,125*.04, 10, 0.,100., 200,0.,100.,
- AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt);
- histos->UserProfile("Pair","",
- "cos(2(#varphi-#Psi^{V0A}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)",
+ // differential observed v2 (pt and centrality)
+ histos->UserProfile("Pair","","",
AliDielectronVarManager::kv0ArpH2FlowV2,
- 125,0.,125*.04, 10, 0.,100., 200,0.,100.,
+ 125,0.,125*.04, 10, 0.,100., 20,0.,10.,
AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt);
- histos->UserProfile("Pair","",
- "cos(2(#varphi-#Psi^{V0C}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)",
+ histos->UserProfile("Pair","","",
AliDielectronVarManager::kv0CrpH2FlowV2,
- 125,0.,125*.04, 10, 0.,100., 200,0.,100.,
+ 125,0.,125*.04, 10, 0.,100., 20,0.,10.,
AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt);
+ histos->UserProfile("Pair","","",
+ AliDielectronVarManager::kv0ArpH2FlowV2,
+ 125,0.,125*.04, 10, 0.,100., 20,0.,10.,
+ AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt,
+ 0, 0, 0, "S");
+ histos->UserProfile("Pair","","",
+ AliDielectronVarManager::kv0CrpH2FlowV2,
+ 125,0.,125*.04, 10, 0.,100., 20,0.,10.,
+ AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt,
+ 0, 0, 0, "S");
+ // pt dependence
+ histos->UserProfile("Pair","","", AliDielectronVarManager::kv0ArpH2FlowV2,
+ 125,0.,125*.04, 20, 0.,10., AliDielectronVarManager::kM, AliDielectronVarManager::kPt);
+ histos->UserProfile("Pair","","", AliDielectronVarManager::kv0ArpH2FlowV2,
+ 125,0.,125*.04, 20, 0.,10., AliDielectronVarManager::kM, AliDielectronVarManager::kPt, 0, 0, "S");
+ histos->UserProfile("Pair","","", AliDielectronVarManager::kv0CrpH2FlowV2,
+ 125,0.,125*.04, 20, 0.,10., AliDielectronVarManager::kM, AliDielectronVarManager::kPt);
+ histos->UserProfile("Pair","","", AliDielectronVarManager::kv0CrpH2FlowV2,
+ 125,0.,125*.04, 20, 0.,10., AliDielectronVarManager::kM, AliDielectronVarManager::kPt, 0, 0, "S");
+
+ // centrality dependence
histos->UserProfile("Pair","","", AliDielectronVarManager::kv0ArpH2FlowV2,
125,0.,125*.04, 10, 0.,100., AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality);
+ histos->UserProfile("Pair","","", AliDielectronVarManager::kv0ArpH2FlowV2,
+ 125,0.,125*.04, 10, 0.,100., AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, 0, 0, "S");
+ histos->UserProfile("Pair","","", AliDielectronVarManager::kv0CrpH2FlowV2,
+ 125,0.,125*.04, 10, 0.,100., AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality);
+ histos->UserProfile("Pair","","", AliDielectronVarManager::kv0CrpH2FlowV2,
+ 125,0.,125*.04, 10, 0.,100., AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, 0, 0, "S");
+
+ // integrated inv mass dependence
+ histos->UserProfile("Pair","","", AliDielectronVarManager::kv0ArpH2FlowV2,
+ 125,0.,125*.04, AliDielectronVarManager::kM);
+ histos->UserProfile("Pair","","", AliDielectronVarManager::kv0ArpH2FlowV2,
+ 125,0.,125*.04, AliDielectronVarManager::kM , 0, "S");
+
+ // control histograms
+ histos->UserHistogram("Pair","","",
+ 125,0.,125*.04, 200,-1.,+1.,
+ AliDielectronVarManager::kM, AliDielectronVarManager::kv0ArpH2FlowV2);
+
} //hist: flow
} //hist: pair
//
// Setup the HF arrays
//
+ Bool_t hasMC=die->GetHasMC();
+ AliDielectronHistos *histos=new AliDielectronHistos("abc","def");
+ //Initialise histogram classes
+ histos->SetReservedWords("Track;Pair");
+ // to fill also mixed event histograms loop until 7 or 10
+ for (Int_t i=0; i<1; ++i){
+ histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
+ }
AliDielectronHF *hf=new AliDielectronHF(die->GetName(),die->GetTitle());
// if(hasMC) hf->SetStepForMCGenerated();
- hf->SetPairTypes(AliDielectronHF::kAll);
- hf->SetVariable(AliDielectronVarManager::kM, 125, 0.0, 0.04*125);
+ // hf->SetPairTypes(AliDielectronHF::kAll);
+ // hf->SetVariable(AliDielectronVarManager::kM, 125, 0.0, 0.04*125);
+
+ hf->SetPairTypes(AliDielectronHF::kOSonly);
+ TProfile *prf = new TProfile("","",125,0.,125*.04);
+ UInt_t vars[] = {AliDielectronVarManager::kM, AliDielectronVarManager::kv0CrpH2FlowV2};
+ hf->SetRefHist(prf,vars);
hf->AddCutVariable(AliDielectronVarManager::kCentrality, "0.,5.,10.,20.,40.,50.,60.,80." );
hf->AddCutVariable(AliDielectronVarManager::kPt, "0.,2.5,5.,100." );
- hf->AddCutVariable(AliDielectronVarManager::kDeltaPhiv0ArpH2, 8,-1.*TMath::Pi(),TMath::Pi());
- hf->AddCutVariable(AliDielectronVarManager::kDeltaPhiv0CrpH2, 8,-1.*TMath::Pi(),TMath::Pi());
+ // hf->AddCutVariable(AliDielectronVarManager::kDeltaPhiv0ArpH2, 8,-1.*TMath::Pi(),TMath::Pi());
+ // hf->AddCutVariable(AliDielectronVarManager::kDeltaPhiv0CrpH2, 8,-1.*TMath::Pi(),TMath::Pi());
// hf->AddCutVariable(AliDielectronVarManager::kY, 1, -0.9, 0.9 );
// hf->AddCutVariable(AliDielectronVarManager::kPt, "0.8, 1.0, 1.1, 1.2, 1.5, 100.0", kTRUE, AliDielectronHF::kBinToMax);
// hf->AddCutVariable(AliDielectronVarManager::kNclsTPC, "70,90,100,120,160", kTRUE, AliDielectronHF::kBinToMax);
//
// Setup the CF Manager if needed
//
-
- // switch off ep systematics
- if(cutDefinition > kEtaGap01 && cutDefinition != kSubRndm ) continue;
+ Bool_t hasMC=die->GetHasMC();
AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
// event variables
cf->AddVariable(AliDielectronVarManager::kCentrality, "0.,5.,10.,20.,40.,50.,60.,80.");
- // pair variables
- cf->AddVariable(AliDielectronVarManager::kPairType, 11, 0, 11);
- cf->AddVariable(AliDielectronVarManager::kM, 125, 0.0, 0.04*125); // 40MeV bins
- cf->AddVariable(AliDielectronVarManager::kPt, "0., 1., 2.5, 5., 100.0");
- cf->AddVariable(AliDielectronVarManager::kDeltaPhiv0ArpH2, GetDeltaPhiBins());
- cf->AddVariable(AliDielectronVarManager::kDeltaPhiv0CrpH2, GetDeltaPhiBins());
-
- /*
- // 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::kRunNumber, GetRunNumbers() );
+ // if(hasMC) cf->AddVariable(AliDielectronVarManager::kNacc,20,0.,3000.0);
+ // if(hasMC) cf->AddVariable(AliDielectronVarManager::kNVtxContrib,20,0.,4000.);
// pair variables
- // cf->AddVariable(AliDielectronVarManager::kY,"-0.8,0.8");
- cf->AddVariable(AliDielectronVarManager::kM,125,0.,125*.04); //40Mev Steps
- cf->AddVariable(AliDielectronVarManager::kPairType,11,0,11);
- cf->AddVariable(AliDielectronVarManager::kPt,"0., 1., 2.5, 5., 100.0");
- if(hasMC) cf->AddVariable(AliDielectronVarManager::kTRDpidEffPair,101,0.0,1.01);
+ cf->AddVariable(AliDielectronVarManager::kY, 18, -0.9, 0.9);
+ cf->AddVariable(AliDielectronVarManager::kM, 125, 0.0, 5.0); //40Mev Steps
+ cf->AddVariable(AliDielectronVarManager::kPt, 50, 0.0, 10.0);
+ if(!hasMC) cf->AddVariable(AliDielectronVarManager::kPairType,11,0,11);
+ // if(hasMC) cf->AddVariable(AliDielectronVarManager::kTRDpidEffPair,101,0.0,1.01);
// if(hasMC) cf->AddVariable(AliDielectronVarManager::kThetaCS,15,-1.,1.);
// flow variables
- cf->AddVariable(AliDielectronVarManager::kDeltaPhiv0ArpH2,4,-1.*TMath::Pi(),TMath::Pi());
- cf->AddVariable(AliDielectronVarManager::kDeltaPhiv0CrpH2,4,-1.*TMath::Pi(),TMath::Pi());
+ if(!hasMC) cf->AddVariable(AliDielectronVarManager::kDeltaPhiv0ArpH2, GetDeltaPhiBins());
+ if(!hasMC) cf->AddVariable(AliDielectronVarManager::kDeltaPhiv0CrpH2, GetDeltaPhiBins());
// leg variables
- cf->AddVariable(AliDielectronVarManager::kPt,"0.8, 1.0, 1.1, 1.2, 1.5, 100.0",kTRUE);
- if(hasMC) cf->AddVariable(AliDielectronVarManager::kEta,"-0.9,0.9",kTRUE);
+ cf->AddVariable(AliDielectronVarManager::kPt,"0.85, 0.95, 1.1, 100.0",kTRUE);
+ if(hasMC) cf->AddVariable(AliDielectronVarManager::kEta,"-0.9,-0.8,0.8,0.9",kTRUE);
// cf->AddVariable(AliDielectronVarManager::kITSLayerFirstCls,7,-1.5,5.5,kTRUE);
// cf->AddVariable(AliDielectronVarManager::kNclsITS,"1,2,3,4,5,6",kTRUE);
- cf->AddVariable(AliDielectronVarManager::kTPCnSigmaEle,"-3,-2.5,-2,2,2.5,3",kTRUE);
- cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPio,"2.5,3.0,3.5,4.0,4.5,100",kTRUE);
- cf->AddVariable(AliDielectronVarManager::kNclsTPC,"70, 90, 100, 120, 160",kTRUE);
+ // cf->AddVariable(AliDielectronVarManager::kTPCnSigmaEle,"-3,-2.5,-2,2,2.5,3",kTRUE);
+ // cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPio,"2.5,3.0,3.5,4.0,4.5,100",kTRUE);
+ // cf->AddVariable(AliDielectronVarManager::kNclsTPC,"70, 90, 100, 120, 160",kTRUE);
// cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPro,"3.5,4.0,4.5,5.0,100",kTRUE);
// cf->AddVariable(AliDielectronVarManager::kTOFnSigmaEle,"-3,-2,2,3",kTRUE); break;
// cf->AddVariable(AliDielectronVarManager::kTRDpidQuality,"3.5, 4.5, 5.5, 6.5",kTRUE);
// if(!hasMC && isESD) cf->AddVariable(AliDielectronVarManager::kTRDchi2,"-1.,0.,2.,4.",kTRUE);
- */
+
// mc steps
if(hasMC) {
- if(cutDefinition==kTOFTRD) cf->SetStepForMCtruth();
+ if(cutDefinition==kTPC) cf->SetStepForMCtruth();
+ // cf->SetStepForNoCutsMCmotherPid();
+ // cf->SetStepForAfterAllCuts();
+ // cf->SetStepsForEachCut();
+ // cf->SetStepsForSignal();
+ // cf->SetStepsForBackground();
cf->SetStepsForMCtruthOnly();
- // cf->SetStepsForBackground();
}
die->SetCFManagerPair(cf);
void AddMCSignals(AliDielectron *die){
//Do we have an MC handler?
- if (!hasMC) return;
-
- AliDielectronSignalMC* inclusiveJpsi = new AliDielectronSignalMC("inclusiveJpsi","Inclusive J/psi");
+ if (!die->GetHasMC()) return;
+
+ AliDielectronSignalMC* inclusiveJpsi = new AliDielectronSignalMC("inclusiveJpsi","Inclusive");
inclusiveJpsi->SetLegPDGs(11,-11);
inclusiveJpsi->SetMotherPDGs(443,443);
inclusiveJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
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)
+
+ AliDielectronSignalMC* beautyJpsi = new AliDielectronSignalMC("beautyJpsi","Beauty");
+ 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* promptJpsi = new AliDielectronSignalMC("promptJpsi","Prompt"); // 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->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);
-
- 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);
- die->AddSignalMC(conversionElePairs);
// prompt J/psi radiative channel
- AliDielectronSignalMC* promptJpsiRad = new AliDielectronSignalMC("promptJpsiRad","Prompt J/psi Radiative"); // prompt J/psi (not from beauty decays)
+ AliDielectronSignalMC* promptJpsiRad = new AliDielectronSignalMC("promptJpsiRad","PromptRadiative"); // prompt J/psi (not from beauty decays)
promptJpsiRad->SetLegPDGs(11,-11);
promptJpsiRad->SetMotherPDGs(443,443);
promptJpsiRad->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons
promptJpsiRad->SetCheckBothChargesMothers(kTRUE,kTRUE);
promptJpsiRad->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
promptJpsiRad->SetJpsiRadiative(AliDielectronSignalMC::kIsRadiative);
- // die->AddSignalMC(promptJpsiRad);
+ die->AddSignalMC(promptJpsiRad);
// prompt J/psi Non radiative channel
- AliDielectronSignalMC* promptJpsiNonRad = new AliDielectronSignalMC("promptJpsiNonRad","Prompt J/psi non-Radiative"); // prompt J/psi (not from beauty decays)
+ AliDielectronSignalMC* promptJpsiNonRad = new AliDielectronSignalMC("promptJpsiNonRad","PromptNonRadiative"); // prompt J/psi (not from beauty decays)
promptJpsiNonRad->SetLegPDGs(11,-11);
promptJpsiNonRad->SetMotherPDGs(443,443);
promptJpsiNonRad->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons
promptJpsiNonRad->SetCheckBothChargesMothers(kTRUE,kTRUE);
promptJpsiNonRad->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
promptJpsiNonRad->SetJpsiRadiative(AliDielectronSignalMC::kIsNotRadiative);
- // die->AddSignalMC(promptJpsiNonRad);
+ die->AddSignalMC(promptJpsiNonRad);
+
+ AliDielectronSignalMC* directJpsi = new AliDielectronSignalMC("directJpsi","Direct"); // 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);
+
+ AliDielectronSignalMC* gammaConversion = new AliDielectronSignalMC("gammaConversion","gamma conversions");
+ gammaConversion->SetLegPDGs(11,-11);
+ gammaConversion->SetCheckBothChargesLegs(kTRUE,kTRUE);
+ gammaConversion->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary);
+ gammaConversion->SetMotherPDGs(22,22);
+ gammaConversion->SetMothersRelation(AliDielectronSignalMC::kSame);
+ // die->AddSignalMC(gammaConversion);
+
}
void SetEtaCorrection()