void SetupPairCuts(AliDielectron *die, Int_t cutDefinition);
AliESDtrackCuts *SetupESDtrackCuts(Int_t cutDefinition);
-/*
-trackQ+Pt>1GeV+|TPCnSigE|<3
-trackQ+PID1
-trackQ+PID6
-trackQ+PID7
-trackQ+Pt>.5GeV
-*/
-TString names=("trackQ+Pt>1GeV+|TPCnSigE|<3;trackQ+PID1;trackQ+PID6;trackQ+PID7;trackQ+Pt>.5GeV");
+
+TString names=("basicQ+SPDfirst+pt>.6+PID");
+
TObjArray *arrNames=names.Tokenize(";");
const Int_t nDie=arrNames->GetEntries();
AliDielectron *die =
new AliDielectron(Form("%s",name.Data()),
Form("Track cuts: %s",name.Data()));
+
// cut setup
SetupTrackCuts(die,cutDefinition);
//
// histogram setup
// only if an AliDielectronHistos object is attached to the
- // dielectron framework the QA histograms will be filled
+ // dielectron framework histograms will be filled
//
InitHistograms(die,cutDefinition);
// the last definition uses no cuts and only the QA histograms should be filled!
-// if (cutDefinition<nDie-1) InitCF(die,cutDefinition);
-
+// if (cutDefinition<nDie-1)
+ InitCF(die,cutDefinition);
+
return die;
}
//ESD quality cuts
die->GetTrackFilter().AddCuts(SetupESDtrackCuts(cutDefinition));
-
- //QA no CF
- if (cutDefinition==nDie-1) {
- //Pt cut
- AliDielectronVarCuts *pt = new AliDielectronVarCuts("Pt>.5","Pt>.5");
- pt->AddCut(AliDielectronVarManager::kPt,.5,1e30);
+ if(cutDefinition==0) {
+ //Pt cut ----------------------------------------------------------
+ AliDielectronVarCuts *pt = new AliDielectronVarCuts("ptCut","pt cut");
+ pt->AddCut(AliDielectronVarManager::kPt,0.6,1e30);
die->GetTrackFilter().AddCuts(pt);
- return;
- }
-
- // pt + 3 sigma ele TPC
- if (cutDefinition==0){
- AliDielectronVarCuts *pt = new AliDielectronVarCuts("Pt>1+|TPCnSigE|<3","Pt>1+|TPCnSigE|<3");
- pt->AddCut(AliDielectronVarManager::kPt,1.,1e30);
- pt->AddCut(AliDielectronVarManager::kTPCnSigmaEle, -3., 3.);
- die->GetTrackFilter().AddCuts(pt);
- }
-
- //PID 1
- if (cutDefinition==1){
- AliDielectronPID *pid=new AliDielectronPID("pid1","pid1");
- pid->SetDefaults(1);
+ // PID cuts --------------------------------------------------------
+ AliDielectronPID *pid = new AliDielectronPID("PID10","TPC nSigma |e|<3 + |Pi|>3 + |P|>3 + TOF nSigma |e|<3");
+ pid->SetDefaults(10);
die->GetTrackFilter().AddCuts(pid);
}
-
- //PID 6
- if (cutDefinition==2){
- AliDielectronPID *pid=new AliDielectronPID("pid6","pid6");
- pid->SetDefaults(6);
- die->GetTrackFilter().AddCuts(pid);
- }
-
- //PID 7
- if (cutDefinition==3){
- AliDielectronPID *pid=new AliDielectronPID("pid7","pid7");
- pid->SetDefaults(7);
- die->GetTrackFilter().AddCuts(pid);
- }
-
}
//______________________________________________________________________________________
// Setup the pair cuts
//
-
- // reject conversions
- // and select mass region
- AliDielectronVarCuts *openingAngleCut=new AliDielectronVarCuts("OpeningAngle","Opening angle > 35mrad");
- openingAngleCut->AddCut(AliDielectronVarManager::kOpeningAngle,.035,4.);
- openingAngleCut->AddCut(AliDielectronVarManager::kM,2.,4.);
- die->GetPairFilter().AddCuts(openingAngleCut);
+ //Invariant mass selection
+ AliDielectronVarCuts *invMassCut=new AliDielectronVarCuts("2<M<4+|Y|<.8","2<M<4 + |Y|<.8");
+ invMassCut->AddCut(AliDielectronVarManager::kM,2.,4.);
+ invMassCut->AddCut(AliDielectronVarManager::kY,-0.8,0.8);
+ die->GetPairFilter().AddCuts(invMassCut);
}
//______________________________________________________________________________________
//
AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts;
+ // basic track quality cuts (basicQ)
esdTrackCuts->SetMaxDCAToVertexZ(3.0);
- esdTrackCuts->SetMaxDCAToVertexXY(.07);
- esdTrackCuts->SetRequireTPCRefit(kTRUE);
- esdTrackCuts->SetRequireITSRefit(kTRUE);
+ esdTrackCuts->SetMaxDCAToVertexXY(1.0);
+
+ esdTrackCuts->SetEtaRange( -0.8 , 0.8 );
+
esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
- esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
+ esdTrackCuts->SetRequireITSRefit(kTRUE);
+ esdTrackCuts->SetRequireTPCRefit(kTRUE);
- esdTrackCuts->SetMinNClustersTPC(110);
+ esdTrackCuts->SetMinNClustersTPC(90);
esdTrackCuts->SetMaxChi2PerClusterTPC(4);
+ esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
+
return esdTrackCuts;
}
+
//______________________________________________________________________________________
void InitHistograms(AliDielectron *die, Int_t cutDefinition)
{
//
- // Initialise the QA histograms
+ // Initialise the histograms
//
-
- //Setup QA histograms
- AliDielectronHistos *histos=
- new AliDielectronHistos(die->GetName(),
- die->GetTitle());
+
+ //Setup histogram Manager
+ AliDielectronHistos *histos=new AliDielectronHistos(die->GetName(),die->GetTitle());
//Initialise histogram classes
histos->SetReservedWords("Track;Pair");
- //Event class (only for last QA)
- if (cutDefinition==nDie-1) histos->AddClass("Event");
-
- //Track classes, only first event
+ //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, only first event
+ //Pair classes
+ // to fill also mixed event histograms loop until 10
for (Int_t i=0; i<3; ++i){
histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
}
-
- //Event histograms
- if (cutDefinition==nDie-1){
- //add histograms to event class
- histos->UserHistogram("Event","nEvents","Number of processed events after cuts;Number events",
- 1,0.,1.,AliDielectronVarManager::kNevents);
+
+ //legs from pair
+ for (Int_t i=0; i<3; ++i){
+ histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i)));
}
//add histograms to Track classes
- histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
+ histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",400,0,20.,AliDielectronVarManager::kPt);
+ histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNclsTPC);
+
+ histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",500,-1.,1.,AliDielectronVarManager::kImpactParXY);
+ histos->UserHistogram("Track","dZ","dZ;dZ [cm];#tracks",600,-3.,3.,AliDielectronVarManager::kImpactParZ);
+ histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
+ 200,-1,1,200,0,6.285,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
+
histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
400,0.2,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
- 400,0.2,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
- histos->UserHistogram("Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
- 400,0.2,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);
- histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
-
+ 400,0.2,20.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
+
//add histograms to Pair classes
histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
- 500,0.,4.,AliDielectronVarManager::kM);
+ 201,-.01,4.01,AliDielectronVarManager::kM);
histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
- 100,-2.,2.,AliDielectronVarManager::kY);
+ 100,-1.,1.,AliDielectronVarManager::kY);
histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
- histos->UserHistogram("Pair","Chi2/NDF","#Chi^{2}/NDF;#Chi^{2}/NDF",
- 100, 0., 20., AliDielectronVarManager::kChi2NDF);
die->SetHistogramManager(histos);
}
//
// Setupd the CF Manager if needed
//
+
AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
//pair variables
- cf->AddVariable(AliDielectronVarManager::kPt,20,0,10);
+ TVectorD *binLimPt=new TVectorD(6);
+ (*binLimPt)[0]=0.0; (*binLimPt)[1]=0.8; (*binLimPt)[2]=1.4; (*binLimPt)[3]=2.8; (*binLimPt)[4]=4.2; (*binLimPt)[5]=9.9;
+ cf->AddVariable(AliDielectronVarManager::kPt,binLimPt);
cf->AddVariable(AliDielectronVarManager::kY,40,-2,2);
- cf->AddVariable(AliDielectronVarManager::kM,200,-0.01,3.99);
+ cf->AddVariable(AliDielectronVarManager::kM,150,0.,150*.027); //27Mev Steps
cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);
//leg variables
- cf->AddVariable(AliDielectronVarManager::kPt,20,0,10,kTRUE);
-
- //only in this case write MC truth info
- cf->SetStepsForCutsIncreasing();
- if (cutDefinition==0){
- cf->SetStepForMCtruth();
- }
+ cf->AddVariable(AliDielectronVarManager::kPt,2,0.8,1.2,kTRUE);
+ cf->AddVariable(AliDielectronVarManager::kNclsTPC,3,90,120,kTRUE);
die->SetCFManagerPair(cf);
+
}
+