void ConfigEvtPlane(AliDielectron *die, Int_t cutDefinition);
void ConfigBgrd( AliDielectron *die, Int_t cutDefinition);
-void AddMCSignals(AliDielectron *die);
-void SetEtaCorrection();
-TVectorD *GetRunNumbers();
+void AddMCSignals(AliDielectron *die, Int_t cutDefinition);
+void SetEtaCorrection(AliDielectron *die);
+TVectorD *GetRunNumbers2011();
TVectorD *GetDeltaPhiBins();
-TString names=("TPC;TOF;TRD;Ionut;NOPID");
-enum { kTPC=0, kTOF, kTRD, kIonut, kNoPID };
+TString names=("Event;Rec;TPC;TOF;TRD;Ionut;TPC-TOF-TRD;NOPID;NOPIDeta;avgPt;LegEff");
+enum { kEvent, kRec, kTPC, kTOF, kTRD, kIonut, kTPCTOFTRD, kNoPID, kNoPIDEta, kAvgPt, kLegEff };
TObjArray *arrNames=names.Tokenize(";");
const Int_t nDie=arrNames->GetEntries();
// Setup the instance of AliDielectron
//
-
// gsi train?
TString trainRoot = gSystem->Getenv("TRAIN_ROOT");
Bool_t isGSItrain = (trainRoot.IsNull()?kFALSE:kTRUE);
// switch configurations ON and OFF
if(hasMC) { // MONTE CARLO
switch(cutDefinition) {
- case kTPC: /* */ break;
- case kTOF: /* */ break;
- case kTRD: /* */ break;
+ case kEvent: /* */ break;
+ // case kRec: /* */ break;
+ // case kTPC: /* */ break;
+ // case kTOF: /* */ break;
+ // case kTRD: /* */ break;
case kIonut: /* */ break;
+ case kLegEff: /* */ break;
// case kNoPID: /* */ break;
default: return 0x0;
}
} else { // COLLISION DATA
switch(cutDefinition) {
- case kTPC: /* */ break;
- case kTOF: /* */ break;
- case kTRD: /* */ break;
- case kIonut: /* */ break;
+ case kEvent: /* */ break;
+ // case kNoPID: /* */ break;
+ //case kNoPIDEta: /* */ break;
+ // case kTPC: /* */ break;
+ // case kTOF: /* */ break;
+ // case kTRD: /* */ break;
+ case kIonut: /* */ break;
+ // case kTPCTOFTRD: /* */ break;
+ // case kAvgPt: /* */ break;
default: return 0x0;
}
}
AliDielectron *die = new AliDielectron(Form("%s",name.Data()), Form("%s",name.Data()));
die->SetHasMC(hasMC);
- // cut setup
+ /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
SetupEventCuts(die,triggers,cutDefinition);
SetupTrackCuts(die,cutDefinition);
SetupV0Cuts(die,cutDefinition);
SetupPairCuts(die,cutDefinition);
+ /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv MISC vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
// Monte Carlo Signals
- if(hasMC) {
- AddMCSignals(die);
- printf(" Add %d MC signals \n",die->GetMCSignals()->GetEntriesFast());
- }
-
- // TRD efficiencies tables
- /*
- if (hasMC && list.Contains("LHC11a") ) {
- TString pidTab="$TRAIN_ROOT/util/dielectron/dielectron/TRDpidEff_eleProb07_TRDntr4_6.root";
- if(!isGSItrain) pidTab="$ALICE_ROOT/PWGDQ/dielectron/files/TRDpidEff_eleProb07_TRDntr4_6.root";
-
- if (gSystem->AccessPathName(gSystem->ExpandPathName(pidTab.Data())))
- Error("ConfigPbPb","PID table not found: %s",pidTab.Data());
- else
- die->SetTRDcorrectionFilename(pidTab.Data());
- }
- */
-
- // histogram setup
- InitHistograms(die,cutDefinition);
- printf(" Add %d class types to the histo manager \n",die->GetHistogramList()->GetEntries());
-
- // HF array setup
- 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() );
- */
-
+ if(hasMC) AddMCSignals(die, cutDefinition);
+ // PID eta correction
+ if(cutDefinition!=kNoPID && cutDefinition!=kEvent) SetEtaCorrection(die);
// bgrd estimators
if(!hasMC) ConfigBgrd(die,cutDefinition);
-
// tpc event plane configuration
if(!hasMC) ConfigEvtPlane(die,cutDefinition);
-
// prefilter settings
- die->SetPreFilterUnlikeOnly();
- //die->SetPreFilterAllSigns();
- //die->SetNoPairing();
+ if(cutDefinition==kEvent || cutDefinition==kNoPID || cutDefinition==kNoPIDEta)
+ die->SetNoPairing();
+ else
+ die->SetPreFilterAllSigns();
+ //die->SetPreFilterUnlikeOnly();
+ // load single electron effieciency map ATTENTION
+ if(!hasMC && 0) AliDielectronVarManager::InitEffMap("/home/aliceexp/jbook/gsi-train-trunk/jbook_jpsi/effMap.root");
+ if(!hasMC && 1) AliDielectronVarManager::InitEffMap("/sw/alice/gsi-svn/testtrain/effMap.root");
- // setup eta correction
- // if(isESD && list.Contains("LHC10h")) SetEtaCorrection();
+ /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv OUTPUT vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
+ // histogram setup
+ InitHistograms(die,cutDefinition);
+ // histogram grid setup
+ /*if(!hasMC)*/
+ if(cutDefinition!=kEvent && cutDefinition!=kNoPID && cutDefinition!=kNoPIDEta && cutDefinition!=kLegEff)
+ InitHF(die,cutDefinition);
+ // CF container setup
+ if(hasMC && cutDefinition!=kEvent && cutDefinition!=kLegEff)
+ InitCF(die,cutDefinition);
- // VZERO calibration
- if (isGSItrain && list.Contains("LHC10h")) {
- die->SetVZEROCalibrationFilename("$TRAIN_ROOT/util/dielectron/dielectron/VzeroCalibrationLHC10h.root");
- die->SetVZERORecenteringFilename("$TRAIN_ROOT/util/dielectron/dielectron/VzeroRecenteringLHC10h.root");
- }
+ // cut QA
+ die->SetCutQA();
return die;
}
Double_t minCent=0.0, maxCent=100.;
if(!die->GetHasMC()) {
switch(triggers) {
- case AliVEvent::kCentral: minCent= 0.; maxCent= 9.; break;
- case AliVEvent::kSemiCentral: minCent=12.; maxCent=53.; break;
- case AliVEvent::kMB: minCent= 0.; maxCent=80.; break;
- default: minCent= 0.; maxCent=80.; break;
+ // case AliVEvent::kCentral: minCent= 0.; maxCent=10.; break; //0-9
+ // case AliVEvent::kSemiCentral: minCent=10.; maxCent=50.; break; //12-53
+ // case AliVEvent::kMB: minCent=10.; maxCent=90.; break;
+ default: minCent= 0.; maxCent=90.; break;
}
}
// if(cutDefinition >= kEtaGap01) {minCent=20.; maxCent=50.;} // v2 analysis
//
// Setup the track cuts
//
+ Bool_t hasMC=die->GetHasMC();
// Quality cuts
- AliDielectronCutGroup* cuts = new AliDielectronCutGroup("cuts","cuts",AliDielectronCutGroup::kCompAND);
- die->GetTrackFilter().AddCuts(cuts);
+ // die->GetTrackFilter().AddCuts(cuts);
/* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv FILTER CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
// AOD track filter (needs to be first cut to speed up)
// trkFilter->SetMinNCrossedRowsOverFindable(0.6);
/* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv TRACK CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
- AliDielectronVarCuts *varCuts = new AliDielectronVarCuts("VarCuts","VarCuts");
- AliDielectronTrackCuts *trkCuts = new AliDielectronTrackCuts("TrkCuts","TrkCuts");
+ AliDielectronVarCuts *varAccCuts = new AliDielectronVarCuts("acc","acc");
+ AliDielectronCutGroup *grpRecCuts = new AliDielectronCutGroup("rec","rec",AliDielectronCutGroup::kCompAND);
+ AliDielectronVarCuts *varRecCuts = new AliDielectronVarCuts("VarRecCuts","VarRecCuts");
+ AliDielectronTrackCuts *trkRecCuts = new AliDielectronTrackCuts("TrkRecCuts","TrkRecCuts");
+
// config specific cuts
switch(cutDefinition) {
+ case kEvent:
+ case kRec:
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 kTRD:
+ case kTPCTOFTRD:
+ case kAvgPt:
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
+ case kNoPIDEta:
+ varAccCuts->AddCut(AliDielectronVarManager::kPt, 0.85, 20./*1e30*/); ///ATTENTION
+ varAccCuts->AddCut(AliDielectronVarManager::kEta, -0.8, 0.8); ////ATTENTION
+ case kLegEff:
+ varRecCuts->AddCut(AliDielectronVarManager::kTPCclsSegments,7., 8.0);
+ trkRecCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 3); // SPD any
+ //if(hasMC) varAccCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9);
+ //else
+ ///
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
+ varAccCuts->AddCut(AliDielectronVarManager::kPt, 0.95, 1e30); //0.8
+ varAccCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9);
+ varRecCuts->AddCut(AliDielectronVarManager::kNclsTPC, 70.0, 160.0);
+ trkRecCuts->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::kTPCchi2Cl, 0.0, 4.0);
- varCuts->AddCut(AliDielectronVarManager::kKinkIndex0, 0.0);
- // varCuts->AddCut(AliDielectronVarManager::kV0Index0, 0.0);
- trkCuts->SetRequireITSRefit(kTRUE);
- trkCuts->SetRequireTPCRefit(kTRUE);
+
+ // standrad reconstruction cuts
+ varRecCuts->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
+ varRecCuts->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
+ varRecCuts->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0);
+ varRecCuts->AddCut(AliDielectronVarManager::kKinkIndex0, 0.0);
+ // varRecCuts->AddCut(AliDielectronVarManager::kV0Index0, 0.0);
+ trkRecCuts->SetRequireITSRefit(kTRUE);
+ trkRecCuts->SetRequireTPCRefit(kTRUE);
/* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv PID CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
+ AliDielectronCutGroup *grpPIDCuts = new AliDielectronCutGroup("PID","PID",AliDielectronCutGroup::kCompAND);
+ AliDielectronVarCuts *pidSelCuts = new AliDielectronVarCuts("selPIDCuts","selPIDCuts");
+ pidSelCuts->AddCut(AliDielectronVarManager::kTRDpidQuality, 4.0, 6.0);
+ pidSelCuts->AddCut(AliDielectronVarManager::kTRDchi2, 0.0, 2.0);
AliDielectronVarCuts *pidVarCuts = new AliDielectronVarCuts("varPIDCuts","varPIDCuts");
+ AliDielectronVarCuts *pidMCCuts = new AliDielectronVarCuts("mcPIDCuts","mcPIDCuts");
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 kNoPIDEta:
+ pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-10.,10.);
+ break;
case kTOF:
pidVarCuts->AddCut(AliDielectronVarManager::kTOFbeta, 0.2, 0.9, kTRUE);
pidCuts->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,3.,0.,0.,kFALSE,
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 kTRD:
+ pidCuts->AddCut(AliDielectronPID::kTRDeleEff,AliPID::kElectron,.95,1.,pidSelCuts,
+ kFALSE, AliDielectronPID::kIfAvailable);
+ case kEvent:
case kIonut:
+ case kLegEff:
+ case kAvgPt:
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);
+ 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);
+ // tof heavy particle exclusion
+ // pidVarCuts->AddCut(AliDielectronVarManager::kTOFbeta, 0.3, 0.7, kTRUE);
+ //pidCuts->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,3.,0.,0.,kFALSE,
+ // AliDielectronPID::kIfAvailable);
+ break;
+ case kTPCTOFTRD:
+ pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-1.3.,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);
+ AliDielectronPID::kRequire,AliDielectronVarManager::kEta);
pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-0.4,3.0,-0.1,+0.1,kFALSE,
- AliDielectronPID::kRequire,AliDielectronVarManager::kEta);
+ AliDielectronPID::kRequire,AliDielectronVarManager::kEta);
pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-100.,4.0,0.,0.,kTRUE);
+ pidVarCuts->AddCut(AliDielectronVarManager::kTOFbeta, 0.2, 0.9, kTRUE);
+ pidCuts->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,3.,0.,0.,kFALSE,
+ AliDielectronPID::kIfAvailable);
+ pidCuts->AddCut(AliDielectronPID::kTRDeleEff,AliPID::kElectron,.95,1.,pidSelCuts,
+ kFALSE, AliDielectronPID::kIfAvailable);
break;
}
+ // mc identification
+ if(cutDefinition==kLegEff && 0) {
+ pidMCCuts->SetCutType(AliDielectronVarCuts::kAny);//only apply any of the two cuts
+ pidMCCuts->AddCut(AliDielectronVarManager::kPdgCode,-11.5,-10.5 );
+ pidMCCuts->AddCut(AliDielectronVarManager::kPdgCode,10.5,11.5 );
+ }
+
+
/* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv TENDER CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
// exclude conversion electrons selected by the tender
AliDielectronTrackCuts *noconv=new AliDielectronTrackCuts("noConv","noConv");
noconv->SetV0DaughterCut(AliPID::kElectron,kTRUE);
// 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();
+ switch(cutDefinition) {
+ case kNoPID:
+ case kNoPIDEta:
+ case kRec:
+ die->GetTrackFilter().AddCuts(varAccCuts);
+ grpRecCuts->AddCut(trkRecCuts);
+ grpRecCuts->AddCut(varRecCuts);
+ die->GetTrackFilter().AddCuts(grpRecCuts);
+ break;
+ case kEvent:
+ case kIonut:
+ case kLegEff:
+ case kTRD:
+ case kTPCTOFTRD:
+ case kAvgPt:
+ case kTOF:
+ case kTPC:
+ die->GetTrackFilter().AddCuts(varAccCuts);
+ grpRecCuts->AddCut(trkRecCuts);
+ grpRecCuts->AddCut(varRecCuts);
+ die->GetTrackFilter().AddCuts(grpRecCuts);
+ grpPIDCuts->AddCut(pidCuts);
+ grpPIDCuts->AddCut(pidVarCuts);
+ grpPIDCuts->AddCut(pidMCCuts);
+ die->GetTrackFilter().AddCuts(grpPIDCuts);
+ // if(!isESD) cuts->AddCut(trkFilter);
+ //cuts->AddCut(noconv);
+ }
+ // cuts->Print();
}
//
// Quality cuts (add the gamma filter to the cut group)
- TIter next(die->GetTrackFilter().GetCuts());
- AliAnalysisCuts *cuts;
- while((cuts = (AliAnalysisCuts*)next())) {
- if(cuts->IsA() == AliDielectronCutGroup::Class()) break;
- }
+ // TIter next(die->GetTrackFilter().GetCuts());
+ // AliAnalysisCuts *cuts;
+ // while((cuts = (AliAnalysisCuts*)next())) {
+ // if(cuts->IsA() == AliDielectronCutGroup::Class()) break;
+ // }
- AliDielectronV0Cuts *gammaV0Cuts = new AliDielectronV0Cuts("IsGamma","IsGamma");
+ AliDielectronV0Cuts *gammaV0Cuts = new AliDielectronV0Cuts("V0","V0");
gammaV0Cuts->SetPdgCodes(22,11,11);
- gammaV0Cuts->SetDefaultPID(13); // TPC+-3.5 TOF+-4
+ gammaV0Cuts->SetDefaultPID(16);
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);
// 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);
- else
- die->GetTrackFilter().AddCuts(gammaV0Cuts);
+ // if(cuts)
+ // ((AliDielectronCutGroup*)cuts)->AddCut(gammaV0Cuts);
+ // else
+ die->GetTrackFilter().AddCuts(gammaV0Cuts);
}
//______________________________________________________________________________________
//
// Setup the pair cuts
//
+ Bool_t hasMC=die->GetHasMC();
- // conversion rejection
- Double_t gCut;
+ // rap and mass rejection
+ Double_t gCut=0.05, yCut=0.9;
switch(cutDefinition) {
- // 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
+ case kEvent: yCut=0.0; break;
+ case kRec: yCut=0.9; break;
+ case kNoPID: return;
+ case kNoPIDEta: return;
+ case kTPC: yCut=0.9; break;
+ case kTOF: yCut=0.9; break;
+ case kTRD: yCut=0.8; break;
+ case kIonut: yCut=0.8; break;
+ case kLegEff: return;
+ case kTPCTOFTRD: yCut=0.8; break;
+ case kAvgPt: yCut=0.8; break;
+ // default: gCut=0.05; // default
}
+ // MC
+ //if(hasMC) yCut=0.9;
+
+ // rapidity selection
+ AliDielectronVarCuts *rapCut=new AliDielectronVarCuts(Form("|Y|<%.1f",yCut),Form("|Y|<%.1f",yCut));
+ rapCut->AddCut(AliDielectronVarManager::kY,-1.*yCut,yCut);
+ die->GetPairFilter().AddCuts(rapCut);
+
+ // gamma rejection
AliDielectronVarCuts *gammaCuts = new AliDielectronVarCuts("GammaCuts","GammaCuts");
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);
- // die->GetPairFilter().AddCuts(rapCut);
-
}
//______________________________________________________________________________________
// Configurate the background estimators
//
+ // skip event QA
+ switch(cutDefinition) {
+ case kEvent:
+ case kNoPID:
+ case kNoPIDEta:
+ case kRec:
+ return;
+ }
+
// add track rotations
AliDielectronTrackRotator *rot=new AliDielectronTrackRotator;
rot->SetIterations(10);
// 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::kTPCrpH2, 8, TMath::Pi()/-2., TMath::Pi()/2.);
- mix->AddVariable(AliDielectronVarManager::kTPCmagH2, "0.,20.,50.,80.,110.,150.,500.");
+ switch(cutDefinition) {
+ // case kIonut:
+ // mix->AddVariable(AliDielectronVarManager::kZvPrim, 20, -10., 10.);
+ // mix->AddVariable(AliDielectronVarManager::kCentrality, 36, 0., 90.);
+ // mix->AddVariable(AliDielectronVarManager::kv0ACrpH2, 10, 0., TMath::Pi());
+ // break;
+ default:
+ mix->AddVariable(AliDielectronVarManager::kZvPrim, "-10.,-5.,-4.,-3.,-2.,-1.,0.,1.,2.,3.,4.,5.,10.");
+ mix->AddVariable(AliDielectronVarManager::kCentrality, 9, 0.,90.);
+ mix->AddVariable(AliDielectronVarManager::kTPCrpH2, 10, TMath::Pi()/-2, TMath::Pi()/2); // max res: 10%->10bins // 8bins
+ // mix->AddVariable(AliDielectronVarManager::kTPCmagH2, "0.,20.,50.,80.,110.,150.,500.");
+ break;
+ }
+ mix->SetSkipFirstEvent(kTRUE); // needed for flow analysis
mix->SetMixType(AliDielectronMixingHandler::kAll);
mix->SetDepth(150);
die->SetMixingHandler(mix);
// Configurate the TPC event plane
//
+ switch(cutDefinition) {
+ case kNoPID:
+ case kNoPIDEta:
+ case kRec:
+ return;
+ }
+
// Double_t gGap;
// switch(cutDefinition) {
// case kEtaGap01: gGap=0.1; break;
Bool_t hasMC=die->GetHasMC();
// booleans for histo selection
- Bool_t bHistTrackQA=kFALSE, bHistEvts = kFALSE, bHistPair = kFALSE, bHistPairME = kFALSE, bHistFlow = kFALSE, bHistFlowQA=kFALSE;
+ Bool_t bHistTrackQA=kFALSE, bHistEvts = kFALSE, bHistPair = kFALSE, bHistPairME = kFALSE, bHistFlow = kFALSE, bHistFlowQA=kFALSE, bHistPID=kFALSE;
switch (cutDefinition) {
- case kTPC: bHistEvts=kTRUE;
- case kTOF:
- case kTRD:
- 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 kEvent: bHistEvts=kTRUE; break;
+ case kRec:
+ case kNoPID:
+ case kNoPIDEta:
+ case kTPC:
+ case kTOF: //bHistEvts=kTRUE; //bHistFlow=kTRUE;
+ case kTRD: ///bHistEvts=kTRUE; //bHistFlow=kTRUE;
+ case kIonut: ///*bHistEvts=kTRUE;*/ bHistPair=kTRUE; break; //bHistPairME=kTRUE;
+ case kTPCTOFTRD: bHistPair=kTRUE; bHistPID=kTRUE; break; //bHistPairME=kTRUE;
+ case kAvgPt: /* */ break;
+ }
+ if(hasMC) {
+ bHistPID=kFALSE;
}
- if(hasMC) { bHistFlow=kFALSE; bHistFlowQA=kFALSE; bHistPairME=kFALSE; }
//Setup histogram Manager
AliDielectronHistos *histos=new AliDielectronHistos(die->GetName(),die->GetTitle());
//add histograms to event class
histos->AddClass("Event");
+ Int_t maxMixBins = (die->GetMixingHandler() ? die->GetMixingHandler()->GetNumberOfBins() : 0);
histos->UserHistogram("Event","","", 100, 0.0, 100.0, AliDielectronVarManager::kCentrality);
+ if(!hasMC && die->GetMixingHandler() )
+ histos->UserHistogram("Event","","", maxMixBins, 0, maxMixBins, AliDielectronVarManager::kMixingBin);
////// EVENT HISTOS /////
if(bHistEvts) {
- histos->UserHistogram("Event","","", GetRunNumbers(), AliDielectronVarManager::kRunNumber);
+ histos->UserHistogram("Event","","", 100,0.,100., AliDielectronVarManager::kNTrk);
+ // histos->UserHistogram("Event","","", 100,0.,100., AliDielectronVarManager::kNacc);
+ histos->UserHistogram("Event","","", GetRunNumbers2011(), AliDielectronVarManager::kRunNumber);
histos->UserHistogram("Event","","", 300,-15.,15., AliDielectronVarManager::kZvPrim);
- histos->UserProfile( "Event","","", AliDielectronVarManager::kNacc, 80, 0., 80., AliDielectronVarManager::kCentrality);
- histos->UserProfile( "Event","","", AliDielectronVarManager::kNVtxContrib, 80, 0., 80., AliDielectronVarManager::kCentrality);
- } //hist: event
+ histos->UserHistogram("Event","","", GetRunNumbers2011(), AliDielectronHelper::MakeLinBinning(3000, 0., 3000.),
+ AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kNacc);
+ histos->UserHistogram("Event","","", AliDielectronHelper::MakeLinBinning(90, 0., 90.), AliDielectronHelper::MakeLinBinning(3000, 0., 3000.),
+ AliDielectronVarManager::kCentrality, AliDielectronVarManager::kNacc);
+ histos->UserProfile( "Event","","", AliDielectronVarManager::kNacc, 90, 0., 90., AliDielectronVarManager::kCentrality);
+ histos->UserProfile( "Event","","", AliDielectronVarManager::kNVtxContrib, 90, 0., 90., AliDielectronVarManager::kCentrality);
+
+ if(!hasMC) {
+ // event plane resolutions
+ TObjArray *limits = new TObjArray();
+ limits->Add(AliDielectronHelper::MakeLinBinning( 18, 0., 90.));
+ // limits->Add(GetRunNumbers2011());
+ limits->Add(AliDielectronHelper::MakeLinBinning(100, -1., 1.));
+ limits->Add(AliDielectronHelper::MakeLinBinning(100, -1., 1.));
+ limits->Add(AliDielectronHelper::MakeLinBinning(100, -1., 1.));
+
+ UInt_t var[4]={AliDielectronVarManager::kCentrality,
+ // AliDielectronVarManager::kRunNumber,
+ AliDielectronVarManager::kv0ATPCDiffH2,
+ AliDielectronVarManager::kv0CTPCDiffH2,
+ AliDielectronVarManager::kv0Av0CDiffH2 };
+ histos->UserSparse("Event", 4, limits, var);
+
+ // // event plane flattening
+ TObjArray *limits2 = new TObjArray();
+ limits2->Add(AliDielectronHelper::MakeLinBinning( 18, 0., 90.));
+ //limits2->Add(GetRunNumbers2011());
+ limits2->Add(AliDielectronHelper::MakeLinBinning(100, -1.6, 1.6));
+ limits2->Add(AliDielectronHelper::MakeLinBinning(100, -1.6, 1.6));
+ limits2->Add(AliDielectronHelper::MakeLinBinning(100, -1.6., 1.6));
+
+ UInt_t var2[4]={AliDielectronVarManager::kCentrality,
+ // AliDielectronVarManager::kRunNumber,
+ AliDielectronVarManager::kv0ArpH2,
+ AliDielectronVarManager::kv0CrpH2,
+ AliDielectronVarManager::kTPCrpH2 };
+ // histos->UserSparse("Event", 4, limits2, var2);
+ } //end: hasMC
+ } //hist: event
////// 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);
- // 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);
- histos->UserHistogram("Event","","", 16,0.,80.,100,-2.,2., AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsub2rpH2);
- histos->UserHistogram("Event","","", 16,0.,80.,100,-2.,2., AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0ArpH2);
- histos->UserHistogram("Event","","", 16,0.,80.,100,-2.,2., AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0CrpH2);
- histos->UserHistogram("Event","","", 16,0.,80.,100,-2.,2., AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0ACrpH2);
- histos->UserHistogram("Event","","", 16,0.,80.,100,-2.,2., AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0A0rpH2);
- histos->UserHistogram("Event","","", 16,0.,80.,100,-2.,2., AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0C0rpH2);
- histos->UserHistogram("Event","","", 16,0.,80.,100,-2.,2., AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0A3rpH2);
- histos->UserHistogram("Event","","", 16,0.,80.,100,-2.,2., AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0C3rpH2);
+ histos->UserHistogram("Event","","", 100,-1500.,1500., AliDielectronVarManager::kTPCxH2);
+ histos->UserHistogram("Event","","", 100,-1500.,1500., AliDielectronVarManager::kTPCyH2);
+ histos->UserHistogram("Event","","", 100,-2.,2., AliDielectronVarManager::kTPCrpH2);
+ histos->UserHistogram("Event","","", 100,-2.,2., AliDielectronVarManager::kv0ArpH2);
+ histos->UserHistogram("Event","","", 100,-2.,2., AliDielectronVarManager::kv0CrpH2);
+ histos->UserHistogram("Event","","", 100,-2.,2., AliDielectronVarManager::kv0ACrpH2);
+ histos->UserHistogram("Event","","", 100,-2.,2., AliDielectronVarManager::kv0A0rpH2);
+ histos->UserHistogram("Event","","", 100,-2.,2., AliDielectronVarManager::kv0C0rpH2);
+ histos->UserHistogram("Event","","", 100,-2.,2., AliDielectronVarManager::kv0A3rpH2);
+ histos->UserHistogram("Event","","", 100,-2.,2., AliDielectronVarManager::kv0C3rpH2);
+ // EP resolution calculation centrality dependence
+ // histos->UserHistogram("Event","","", 18,0.,90., 100,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0ATPCDiffH2);
+ // histos->UserHistogram("Event","","", 18,0.,90., 100,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0CTPCDiffH2);
+ // histos->UserHistogram("Event","","", 18,0.,90., 100,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0Av0CDiffH2);
} // hist: flow
+ // DEBUG
if(bHistFlowQA) {
// TPC event plane
- histos->UserHistogram("Event","","", 100,-1500.,1500., AliDielectronVarManager::kTPCxH2);
- histos->UserHistogram("Event","","", 100,-1500.,1500., AliDielectronVarManager::kTPCyH2);
- histos->UserHistogram("Event","","", 100, -2., 2., AliDielectronVarManager::kTPCrpH2);
+ histos->UserHistogram("Event","","", 100,-1500.,1500., AliDielectronVarManager::kTPCxH2uc);
+ histos->UserHistogram("Event","","", 100,-1500.,1500., AliDielectronVarManager::kTPCyH2uc);
+ histos->UserHistogram("Event","","", 100, -2., 2., AliDielectronVarManager::kTPCrpH2uc);
histos->UserHistogram("Event","","", 100, -2., 2., AliDielectronVarManager::kTPCsub1rpH2);
histos->UserHistogram("Event","","", 100, -2., 2., AliDielectronVarManager::kTPCsub2rpH2);
histos->UserHistogram("Event","","", 100, -1., 1., AliDielectronVarManager::kTPCsub12DiffH2);
- // EP resolution calculation
- histos->UserHistogram("Event","","", 80,0.,80., 300,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0ATPCDiffH2);
- histos->UserHistogram("Event","","", 80,0.,80., 300,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0CTPCDiffH2);
- histos->UserHistogram("Event","","", 80,0.,80., 300,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0Av0CDiffH2);
- histos->UserHistogram("Event","","", 80,0.,80., 300,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kTPCsub12DiffH2);
- histos->UserHistogram("Event","","", 80,0.,80., 300,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0Av0C0DiffH2);
- histos->UserHistogram("Event","","", 80,0.,80., 300,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0Av0C3DiffH2);
- histos->UserHistogram("Event","","", 80,0.,80., 300,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0Cv0A0DiffH2);
- histos->UserHistogram("Event","","", 80,0.,80., 300,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0Cv0A3DiffH2);
- histos->UserHistogram("Event","","", 80,0.,80., 300,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0A0v0A3DiffH2);
- histos->UserHistogram("Event","","", 80,0.,80., 300,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0C0v0C3DiffH2);
// detector effects
histos->UserHistogram("Event","","", 10,0.,100., 300,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kTPCsub12DiffH2Sin);
// recentering stuff
histos->UserProfile("Event","","", AliDielectronVarManager::kTPCxH2,
- AliDielectronHelper::MakeLinBinning(8, 0.,80.), GetRunNumbers(),
+ AliDielectronHelper::MakeLinBinning(8, 0.,80.), GetRunNumbers2011(),
AliDielectronVarManager::kCentrality, AliDielectronVarManager::kRunNumber);
histos->UserProfile("Event","","", AliDielectronVarManager::kTPCyH2,
- AliDielectronHelper::MakeLinBinning(8, 0.,80.), GetRunNumbers(),
- AliDielectronVarManager::kCentrality, AliDielectronVarManager::kRunNumber);
+ AliDielectronHelper::MakeLinBinning(8, 0.,80.), GetRunNumbers2011(),
+ AliDielectronVarManager::kCentrality, AliDielectronVarManager::kRunNumber);
+ // EP resolution calculation
+ histos->UserHistogram("Event","","", 200,-1.0,1.0, AliDielectronVarManager::kv0ATPCDiffH2);
+ histos->UserHistogram("Event","","", 200,-1.0,1.0, AliDielectronVarManager::kv0CTPCDiffH2);
+ histos->UserHistogram("Event","","", 200,-1.0,1.0, AliDielectronVarManager::kv0Av0CDiffH2);
+ histos->UserHistogram("Event","","", 200,-1.0,1.0, AliDielectronVarManager::kTPCsub12DiffH2);
+ histos->UserHistogram("Event","","", 200,-1.0,1.0, AliDielectronVarManager::kv0Av0C0DiffH2);
+ histos->UserHistogram("Event","","", 200,-1.0,1.0, AliDielectronVarManager::kv0Av0C3DiffH2);
+ histos->UserHistogram("Event","","", 200,-1.0,1.0, AliDielectronVarManager::kv0Cv0A0DiffH2);
+ histos->UserHistogram("Event","","", 200,-1.0,1.0, AliDielectronVarManager::kv0Cv0A3DiffH2);
+ histos->UserHistogram("Event","","", 200,-1.0,1.0, AliDielectronVarManager::kv0A0v0A3DiffH2);
+ histos->UserHistogram("Event","","", 200,-1.0,1.0, AliDielectronVarManager::kv0C0v0C3DiffH2);
+ // EP resolution calculation centrality dependence
+ histos->UserHistogram("Event","","", 18,0.,90., 100,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0ATPCDiffH2);
+ histos->UserHistogram("Event","","", 18,0.,90., 100,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0CTPCDiffH2);
+ histos->UserHistogram("Event","","", 18,0.,90., 100,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0Av0CDiffH2);
+ // histos->UserHistogram("Event","","", 18,0.,90., 100,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kTPCsub12DiffH2);
+ // histos->UserHistogram("Event","","", 18,0.,90., 100,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0Av0C0DiffH2);
+ // histos->UserHistogram("Event","","", 18,0.,90., 100,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0Av0C3DiffH2);
+ // histos->UserHistogram("Event","","", 18,0.,90., 100,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0Cv0A0DiffH2);
+ // histos->UserHistogram("Event","","", 18,0.,90., 100,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0Cv0A3DiffH2);
+ // histos->UserHistogram("Event","","", 18,0.,90., 100,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0A0v0A3DiffH2);
+ // histos->UserHistogram("Event","","", 18,0.,90., 100,-1.0,1.0, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0C0v0C3DiffH2);
+ // EP angle correlation
+ histos->UserHistogram("Event","","", 320,-3.2.,3.2, 320,-3.2.,3.2,
+ AliDielectronVarManager::kTPCrpH2uc,AliDielectronVarManager::kv0ACrpH2);
+ // 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);
} //hist: flowQA
+
+ ///// PAIR HISTOS /////
if(bHistPair) {
//Initialise histogram classes
histos->SetReservedWords("Track;Pair");
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
+ //add MC signal histograms to pair 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){
+ for (Int_t i=1; i<2; ++i){
histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i)));
}
//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)));
histos->AddClass(Form("Track_%s", AliDielectron::PairClassName(AliDielectron::kEv1PM)));
+
+ ////// TRACK HISTOS /////
// Vertex
- histos->UserHistogram("Track","","", 500,-1.,1., AliDielectronVarManager::kImpactParXY);
- histos->UserHistogram("Track","","", 600,-3.,3., AliDielectronVarManager::kImpactParZ);
+ // histos->UserHistogram("Track","","", 500,-1.,1., AliDielectronVarManager::kImpactParXY);
+ // histos->UserHistogram("Track","","", 600,-3.,3., AliDielectronVarManager::kImpactParZ);
// Kinematics
histos->UserHistogram("Track","","", 400,0,20., AliDielectronVarManager::kPt);
histos->UserHistogram("Track","","", 200,-1,1, 200,0,6.285, AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
// TPC
- histos->UserHistogram("Track","","", 160,-0.5,159.5, AliDielectronVarManager::kNclsTPC);
- histos->UserHistogram("Track","","", 160,-0.5,159.5, AliDielectronVarManager::kTPCsignalN);
- histos->UserHistogram("Track","","", 160,-0.5,159.5, AliDielectronVarManager::kNFclsTPCr);
- histos->UserHistogram("Track","","", 160,-0.5,159.5, 160,-0.5,159.5, AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr);
+ // histos->UserHistogram("Track","","", 160,-0.5,159.5, AliDielectronVarManager::kNclsTPC);
+ // histos->UserHistogram("Track","","", 160,-0.5,159.5, AliDielectronVarManager::kTPCsignalN);
+ // histos->UserHistogram("Track","","", 160,-0.5,159.5, AliDielectronVarManager::kNFclsTPCr);
+ // histos->UserHistogram("Track","","", 160,-0.5,159.5, 160,-0.5,159.5, AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr);
// TRD
histos->UserHistogram("Track","","", 8,-0.5, 7.5, AliDielectronVarManager::kTRDpidQuality);
// PID
- histos->UserHistogram("Track","","", 400,0.2,20.,200,0.,200., AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
- histos->UserHistogram("Track","","", 400,0.2,20.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
+ // histos->UserHistogram("Track","","", 400,0.2,20.,200,0.,200., AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
+ // histos->UserHistogram("Track","","", 400,0.2,20.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
histos->UserHistogram("Track","","", 250,0.0,5.0,300,0.,1.2, AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFbeta,kTRUE);
+ // histos->UserHistogram("Track","","", 100,-1.,+1.,200,-10.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
+
+ histos->UserHistogram("Track","","", 100,0.2,10.,100,0.,200.,
+ AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
+ histos->UserHistogram("Track","","", 100,0.2,10.,100,-5.,+5.,
+ AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
+ histos->UserHistogram("Track","","", 100,0.,4000.,100,0.,200.,
+ AliDielectronVarManager::kRefMultTPConly,AliDielectronVarManager::kTPCsignal);
+ histos->UserHistogram("Track","","", 100,0.,4000.,100,-5.,+5.,
+ AliDielectronVarManager::kRefMultTPConly,AliDielectronVarManager::kTPCnSigmaEle);
+ histos->UserHistogram("Track","","", 100,0.,100.,100,0.,200.,
+ AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsignal);
+ histos->UserHistogram("Track","","", 100,0.,100.,100,-5.,+5.,
+ AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCnSigmaEle);
+ histos->UserHistogram("Track","","", 100,-1.,+1.,100,0.,200.,
+ AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCsignal);
+ histos->UserHistogram("Track","","", 100,-1.,+1.,100,-5.,+5.,
+ AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaEle);
+ histos->UserHistogram("Track","","", 100,-1.,+1.,100,-5.,+5.,
+ AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaEleRaw);
+
+ if(!hasMC) histos->UserHistogram("Track","","", 150,0.0,1.5, AliDielectronVarManager::kLegEff);
+ if(!hasMC) histos->UserProfile("Track","","", AliDielectronVarManager::kLegEff, 18,0.0,90.0, AliDielectronVarManager::kCentrality);
+ if(!hasMC) histos->UserProfile("Track","","", AliDielectronVarManager::kLegEff, 100,0.0,20.0, AliDielectronVarManager::kPt);
+ if(!hasMC) histos->UserProfile("Track","","", AliDielectronVarManager::kLegEff, 20,0.0,TMath::TwoPi(), AliDielectronVarManager::kPhi);
+ if(!hasMC) histos->UserProfile("Track","","", AliDielectronVarManager::kLegEff, 20,-1.,+1., AliDielectronVarManager::kEta);
+
+ // TPC PID (detailed) //
+ if(bHistPID) {
+ // arbitrary binning for variables
+ TVectorD *vcen = AliDielectronHelper::MakeLinBinning( 21, 0., 52.5);
+ (*vcen)[21] = 90.;
+
+ TObjArray *limits = new TObjArray();
+ limits->Add(AliDielectronHelper::MakeLinBinning( 75,-10., 5.));
+ // limits->Add(AliDielectronHelper::MakeLinBinning(100, 0., 200.));
+ limits->Add(AliDielectronHelper::MakeLinBinning(60, 0., 1.2));
+ limits->Add(AliDielectronHelper::MakeLinBinning(100, 0., 4000.));
+ limits->Add(AliDielectronHelper::MakeLinBinning( 50, 0., 10.));
+ limits->Add(vcen);
+ // limits->Add(AliDielectronHelper::MakeLinBinning( 36, 0., 90.));
+ limits->Add(AliDielectronHelper::MakeLinBinning( 20, -1., 1.));
+ // limits->Add(GetRunNumbers());
+ UInt_t var[6]={AliDielectronVarManager::kTPCnSigmaEle,
+ AliDielectronVarManager::kTOFbeta,
+ // AliDielectronVarManager::kTPCsignal,
+ AliDielectronVarManager::kRefMultTPConly,
+ AliDielectronVarManager::kPIn,
+ AliDielectronVarManager::kCentrality,
+ AliDielectronVarManager::kEta
+ // AliDielectronVarManager::kRunNumber
+ };
+ histos->UserSparse(Form("Track_%s", AliDielectron::PairClassName(AliDielectron::kEv1PM)), 6, limits, var);
+ }
- histos->UserHistogram("Pair","","", 210,-1.05,1.05, 100,0.,2.5, AliDielectronVarManager::kArmAlpha,AliDielectronVarManager::kArmPt);
-
- ///// add histograms to Pair classes /////
- histos->UserHistogram("Pair","","", 300,.0,300*0.04, AliDielectronVarManager::kM); // 40MeV bins, 12GeV/c2
+ ///// Pair classes /////
+ histos->UserHistogram("Pair","","", 125,.0,125*0.04, AliDielectronVarManager::kM); // 40MeV bins, 12GeV/c2
histos->UserHistogram("Pair","","", 100,-1.,1., AliDielectronVarManager::kY);
histos->UserHistogram("Pair","","", 400,0,20., AliDielectronVarManager::kPt);
histos->UserHistogram("Pair","","", 100,0.,3.15, AliDielectronVarManager::kOpeningAngle);
histos->UserHistogram("Pair","","", 200,0.,100., AliDielectronVarManager::kR);
histos->UserHistogram("Pair","","", 50,0.,5., AliDielectronVarManager::kLegDist);
histos->UserHistogram("Pair","","", 50,0.,5., AliDielectronVarManager::kLegDistXY);
+ histos->UserHistogram("Pair","","", 100,-1*TMath::Pi(),+1*TMath::Pi(), AliDielectronVarManager::kDeltaPhiv0ArpH2);
+ histos->UserHistogram("Pair","","", 100,-1*TMath::Pi(),+1*TMath::Pi(), AliDielectronVarManager::kDeltaPhiv0CrpH2);
+ histos->UserHistogram("Pair","","", 100,-1*TMath::Pi(),+1*TMath::Pi(), AliDielectronVarManager::kDeltaPhiTPCrpH2);
+ // histos->UserHistogram("Pair","","", 210,-1.05,1.05, 100,0.,2.5, AliDielectronVarManager::kArmAlpha,AliDielectronVarManager::kArmPt);
+ if(!hasMC) histos->UserProfile("Pair","","", AliDielectronVarManager::kPairEff, 125,.0,125*0.04, AliDielectronVarManager::kM);
+ if(!hasMC) histos->UserProfile("Pair","","", AliDielectronVarManager::kPairEff, 100,.0,15.0, AliDielectronVarManager::kPt);
+
+ if(!hasMC && die->GetMixingHandler() )
+ histos->UserHistogram("Pair","","", maxMixBins, 0, maxMixBins, AliDielectronVarManager::kMixingBin);
+
- //// FLOW results use tprofiles
- if(bHistFlow) {
- // differential observed v2 (pt and centrality)
- histos->UserProfile("Pair","","",
- AliDielectronVarManager::kv0ArpH2FlowV2,
- 125,0.,125*.04, 10, 0.,100., 20,0.,10.,
- AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt);
- histos->UserProfile("Pair","","",
- AliDielectronVarManager::kv0CrpH2FlowV2,
- 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
////// MONTE CARLO //////
+ if(hasMC && cutDefinition==kLegEff && 1) { ////////ATTENTION
+
+ //Initialise histogram classes
+ histos->SetReservedWords("Track");
+
+ //add MC signal histograms to track class
+ if(die->GetMCSignals()) {
+ TString className = Form("Track_%s_%s",AliDielectron::PairClassName(AliDielectron::kEv1PM),die->GetMCSignals()->Last()->GetName());
+ histos->AddClass(Form("%s_MCtruth",className.Data()));
+ histos->AddClass(className.Data());
+
+ //workaround for AN-09 dummy
+ for(Int_t isig=0; isig<die->GetMCSignals()->GetEntriesFast(); isig++) {
+ histos->AddClass(Form("Pair_%s",die->GetMCSignals()->At(isig)->GetName()));
+ histos->AddClass(Form("Pair_%s_MCtruth",die->GetMCSignals()->At(isig)->GetName()));
+ // histos->AddClass(Form("Track_Legs_%s",die->GetMCSignals()->At(isig)->GetName()));
+ // histos->AddClass(Form("Track_Legs_%s_MCtruth",die->GetMCSignals()->At(isig)->GetName()));
+ histos->AddClass(Form("Track_%s_%s",AliDielectron::PairClassName(AliDielectron::kEv1PM),die->GetMCSignals()->At(isig)->GetName()));
+ histos->AddClass(Form("Track_%s_%s_MCtruth",AliDielectron::PairClassName(AliDielectron::kEv1PM),die->GetMCSignals()->At(isig)->GetName()));
+ }
+
+ // single leg efficiency //
+ // arbitrary binning for variables
+ // TVectorD *vpt = AliDielectronHelper::MakeLinBinning( 41, 0.0, 10.25);
+ // (*vpt)[41] = 20.;
+
+ TObjArray *limEpm = new TObjArray();
+ // limEpm->Add(AliDielectronHelper::MakeLinBinning( 75,-10., 5.));
+ limEpm->Add(AliDielectronHelper::MakeLinBinning( 18, 0., 90.));
+ limEpm->Add(AliDielectronHelper::MakeLinBinning( 80, 0., 20.));
+ // limEpm->Add(vpt);
+ limEpm->Add(AliDielectronHelper::MakeLinBinning( 20, 0., TMath::TwoPi()));
+ limEpm->Add(AliDielectronHelper::MakeLinBinning( 20, -1., +1.));
+ // limEpm->Add(AliDielectronHelper::MakeLinBinning( 20, -2., +2.));
+ // limEpm->Add(GetRunNumbers());
+ UInt_t varEpm[]={//AliDielectronVarManager::kTPCnSigmaEle,
+ AliDielectronVarManager::kCentrality
+ ,AliDielectronVarManager::kPt
+ ,AliDielectronVarManager::kPhi
+ ,AliDielectronVarManager::kEta
+ // ,AliDielectronVarManager::kY
+ // ,AliDielectronVarManager::kRunNumber
+ };
+
+ histos->UserSparse("Track", limEpm->GetEntriesFast(), limEpm, varEpm);
+ }
+ } //end: hasMC
+
+
+
/*
if(cutDefinition == kTOFTRD && hasMC) {
histos->AddClass("MCEvent");
}
*/
- // histos->UserHistogram("Track","TRDprobEle",";P_{ele}^{TRD};#tracks",
- // 100,0.,1., AliDielectronVarManager::kTRDprobEle);
-
die->SetHistogramManager(histos);
+
+
+ ////// LOG //////
+ TIter nextClass(histos->GetHistogramList());
+ THashList *l=0;
+ while ( (l=static_cast<THashList*>(nextClass())) ) {
+ //printf(" [D] HistogramManger: Class %s: Histograms: %04d \n", l->GetName(), l->GetEntries());
+ }
+
+
}
void InitHF(AliDielectron* die, Int_t cutDefinition)
//
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)));
+ // booleans for histo selection
+ Bool_t bHistFlow = kTRUE, bHistPt = kTRUE, bHistEff = kTRUE; //ATTENTION
+ switch (cutDefinition) {
+ case kAvgPt: bHistFlow=kFALSE;; break;
+ // default: bHistPt=kTRUE; bHistFlow = kTRUE; bHistEff=kTRUE; break;
}
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::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());
+ // define pair types and sources
+ if(hasMC) hf->SetStepForMCGenerated();
+ // else
+ if(hasMC) hf->SetPairTypes(AliDielectronHF::kOSandMIX);
+ // hf->SetPairTypes(AliDielectronHF::kOSonly);
+ if(!hasMC) hf->SetPairTypes(AliDielectronHF::kAll);
+
+ //// define output objects ////
+
+ // defaults
+ hf->UserHistogram("Pair", AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM);
+ // for mixed event weighting
+ Int_t maxMixBins = (die->GetMixingHandler() ? die->GetMixingHandler()->GetNumberOfBins() : 0);
+ // if(maxMixBins) hf->UserHistogram("Pair", AliDielectronHelper::MakeLinBinning(maxMixBins,0,maxMixBins), AliDielectronVarManager::kMixingBin);
+
+ // mean pt analysis
+ if(bHistPt) {
+ hf->UserProfile("Pair", AliDielectronVarManager::kPt,
+ AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM);
+ }
+
+ // on the fly efficienies
+ if(bHistEff && !hasMC) {
+ hf->UserProfile("Pair", AliDielectronVarManager::kPairEff,
+ AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM);
+ hf->UserProfile("Pair", AliDielectronVarManager::kPt,
+ AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM,
+ "", AliDielectronVarManager::kOneOverPairEff);
+ hf->UserHistogram("Pair", AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM,
+ AliDielectronVarManager::kOneOverPairEff);
+ }
+
+ // flow analysis
+ if(bHistFlow && !hasMC) {
+ // flow versus minv
+ hf->UserProfile("Pair", AliDielectronVarManager::kv0ArpH2FlowV2,
+ AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM);
+ hf->UserProfile("Pair", AliDielectronVarManager::kv0CrpH2FlowV2,
+ AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM);
+ hf->UserProfile("Pair", AliDielectronVarManager::kTPCrpH2FlowV2,
+ AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM);
+ // detector effects
+ hf->UserProfile("Pair", AliDielectronVarManager::kCosTPCrpH2,
+ AliDielectronHelper::MakeLinBinning(1,.0,125*0.04), AliDielectronVarManager::kM);
+ hf->UserProfile("Pair", AliDielectronVarManager::kSinTPCrpH2,
+ AliDielectronHelper::MakeLinBinning(1,.0,125*0.04), AliDielectronVarManager::kM);
+ hf->UserProfile("Pair", AliDielectronVarManager::kCosPhiH2,
+ AliDielectronHelper::MakeLinBinning(1,.0,125*0.04), AliDielectronVarManager::kM);
+ hf->UserProfile("Pair", AliDielectronVarManager::kSinPhiH2,
+ AliDielectronHelper::MakeLinBinning(1,.0,125*0.04), AliDielectronVarManager::kM);
+ hf->UserProfile("Pair", AliDielectronVarManager::kTPCrpH2FlowV2Sin,
+ AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM);
+ }
+
+ //// define the grid size and granularity /////
+ // event variables //
+ // hf->AddCutVariable(AliDielectronVarManager::kCentrality, AliDielectronHelper::MakeArbitraryBinning("0,10,50,90")); // flow only
+ if(hasMC) hf->AddCutVariable(AliDielectronVarManager::kCentrality, 18, 0., 90.);
+ else hf->AddCutVariable(AliDielectronVarManager::kCentrality, 9, 0., 90.);
+ // if(hasMC) hf->AddCutVariable(AliDielectronVarManager::kRunNumber, GetRunNumbers2011() );
+ // if(hasMC) hf->AddCutVariable(AliDielectronVarManager::kNacc, 3000,0.,3000.);
+ // if(hasMC) hf->AddCutVariable(AliDielectronVarManager::kNVtxContrib, 20,0.,4000.);
+
+ // pair variables //ATTENTION
+ if(hasMC && 0) hf->AddCutVariable(AliDielectronVarManager::kY, 18, -0.9, 0.9);
+ // hf->AddCutVariable(AliDielectronVarManager::kPt, 10, 0.0, 10.0);
+ if(!hasMC)
+ hf->AddCutVariable(AliDielectronVarManager::kPt, AliDielectronHelper::MakeArbitraryBinning("0,1,2,3,4,5,6,7,8,9,10,100"));
+ // hf->AddCutVariable(AliDielectronVarManager::kPt, 20, 0.0, 10.0);
+ else
+ hf->AddCutVariable(AliDielectronVarManager::kPt, 50, 0.0, 10.0);
+
+ // if(hasMC) hf->AddCutVariable(AliDielectronVarManager::kTRDpidEffPair,101,0.0,1.01);
+ // if(hasMC) hf->AddCutVariable(AliDielectronVarManager::kThetaCS,15,-1.,1.);
+
+ // flow variables //
+ // if(!hasMC) hf->AddCutVariable(AliDielectronVarManager::kDeltaPhiv0ArpH2, GetDeltaPhiBins());
+ // if(!hasMC) hf->AddCutVariable(AliDielectronVarManager::kDeltaPhiv0CrpH2, GetDeltaPhiBins());
+ if(!hasMC && bHistFlow) hf->AddCutVariable(AliDielectronVarManager::kDeltaPhiTPCrpH2, GetDeltaPhiBins());
+
+ // leg variables // NOTE: switched off in HF??
+ // if(hasMC) hf->AddCutVariable(AliDielectronVarManager::kPt, "0.85, 0.95, 1.1, 100.0", kTRUE, AliDielectronHF::kBinToMax);
+ // if(hasMC) hf->AddCutVariable(AliDielectronVarManager::kEta,"-0.9,-0.8,0.8,0.9", kTRUE, AliDielectronHF::kSymBin);
// 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);
+ // hf->AddCutVariable(AliDielectronVarManager::kNclsTPC, "70,90,100,120,160", kTRUE, AliDielectronHF::kBinToMax);
// hf->AddCutVariable(AliDielectronVarManager::kTPCnSigmaEle,"-4,-3,-2.5,-2,2,2.5,3,4", kTRUE, AliDielectronHF::kSymBin);
//hf->AddCutVariable(AliDielectronVarManager::kTPCnSigmaPio,"3.,3.5,4.,100.", kTRUE, AliDielectronHF::kBinToMax);
//hf->AddCutVariable(AliDielectronVarManager::kITSLayerFirstCls,4,0.,4., kFALSE, kTRUE, AliDielectronHF::kBinFromMin);
//hf->AddCutVariable(AliDielectronVarManager::kNclsITS, 5,2.,7., kFALSE, kTRUE, AliDielectronHF::kBinToMax);
- //hf->AddCutVariable(AliDielectronVarManager::kRunNumber, GetRunNumbers());
+ //hf->AddCutVariable(AliDielectronVarManager::kRunNumber, GetRunNumbers2011());
die->SetHistogramArray(hf);
}
AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
+ //event variables
+ cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,5.0,10.0,15.0,20.0,25.0,30.0,35.0,40.0,50.0,60.0,70.0,80.,90.");
+ cf->AddVariable(AliDielectronVarManager::kRunNumber, GetRunNumbers2011() );
+
+ //pair variables
+ cf->AddVariable(AliDielectronVarManager::kPt,100,0.0,100*0.2);
+
+ // cf->AddVariable(AliDielectronVarManager::kY,"-5,-1,-0.9,-0.8,-0.5,0.5,0.8,0.9,1.0,5");
+ cf->AddVariable(AliDielectronVarManager::kY,36,-0.9,+0.9);
+ cf->AddVariable(AliDielectronVarManager::kM,125,0.,125*.04); //40Mev Steps
+ cf->AddVariable(AliDielectronVarManager::kPairType,1,1,1);
+ // cf->AddVariable(AliDielectronVarManager::kThetaCS,20,-1.,+1.);
+ // cf->AddVariable(AliDielectronVarManager::kThetaHE,20,-1.,+1.);
+ // cf->AddVariable(AliDielectronVarManager::kPhiCS,20,-3.2,+3.2);
+ // cf->AddVariable(AliDielectronVarManager::kPhiHE,20,-3.2,+3.2);
+ //leg variables
+ cf->AddVariable(AliDielectronVarManager::kPt,"0.0, 0.75, 0.80, 0.85, 1.0, 1.1, 100.0",kTRUE);
+ // cf->AddVariable(AliDielectronVarManager::kNclsTPC,"0, 70, 80, 90, 100, 120, 160",kTRUE);
+ cf->AddVariable(AliDielectronVarManager::kEta,"-0.9,-0.85,-0.8,-0.75,-0.70,0.70,0.75,0.8,0.85,0.9",kTRUE);
+ /*
// event variables
- cf->AddVariable(AliDielectronVarManager::kCentrality, "0.,5.,10.,20.,40.,50.,60.,80.");
- 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.);
+ cf->AddVariable(AliDielectronVarManager::kCentrality, 18,0., 90.);
+ if(hasMC) cf->AddVariable(AliDielectronVarManager::kRunNumber, GetRunNumbers2011() );
+ // if(hasMC) cf->AddVariable(AliDielectronVarManager::kNacc, 3000,0.,3000.);
+ // if(hasMC) cf->AddVariable(AliDielectronVarManager::kNVtxContrib, 20,0.,4000.);
// pair variables
- cf->AddVariable(AliDielectronVarManager::kY, 18, -0.9, 0.9);
+ if(hasMC) cf->AddVariable(AliDielectronVarManager::kPairType,1,1,1);
+ else cf->AddVariable(AliDielectronVarManager::kPairType,11,0,11);
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::kY, 18, -0.9, 0.9);
+ if(hasMC) cf->AddVariable(AliDielectronVarManager::kPt, 100, 0.0, 20.0);
+ else cf->AddVariable(AliDielectronVarManager::kPt, AliDielectronHelper::MakeArbitraryBinning("0,1,2,3,4,5,6,7,8,9,10,20"));
// if(hasMC) cf->AddVariable(AliDielectronVarManager::kTRDpidEffPair,101,0.0,1.01);
// if(hasMC) cf->AddVariable(AliDielectronVarManager::kThetaCS,15,-1.,1.);
// flow variables
- if(!hasMC) cf->AddVariable(AliDielectronVarManager::kDeltaPhiv0ArpH2, GetDeltaPhiBins());
- if(!hasMC) cf->AddVariable(AliDielectronVarManager::kDeltaPhiv0CrpH2, GetDeltaPhiBins());
+ //if(!hasMC) cf->AddVariable(AliDielectronVarManager::kDeltaPhiv0ArpH2, GetDeltaPhiBins());
+ //if(!hasMC) cf->AddVariable(AliDielectronVarManager::kDeltaPhiv0CrpH2, GetDeltaPhiBins());
// leg variables
- 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);
+ if(hasMC) cf->AddVariable(AliDielectronVarManager::kPt,"0.0, 0.85, 0.95, 1.0, 1.1, 100.0",kTRUE);
+ if(hasMC) cf->AddVariable(AliDielectronVarManager::kEta,"-0.9,-0.8,-0.7, 0.7, 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::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==kTPC) cf->SetStepForMCtruth();
+ //if(cutDefinition==kRec)
+ cf->SetStepForMCtruth();
// cf->SetStepForNoCutsMCmotherPid();
// cf->SetStepForAfterAllCuts();
// cf->SetStepsForEachCut();
die->SetCFManagerPair(cf);
}
-void AddMCSignals(AliDielectron *die){
+void AddMCSignals(AliDielectron *die, Int_t cutDefinition){
//Do we have an MC handler?
if (!die->GetHasMC()) return;
inclusiveJpsi->SetFillPureMCStep(kTRUE);
inclusiveJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
inclusiveJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
- die->AddSignalMC(inclusiveJpsi);
AliDielectronSignalMC* beautyJpsi = new AliDielectronSignalMC("beautyJpsi","Beauty");
beautyJpsi->SetLegPDGs(11,-11);
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->SetCheckBothChargesLegs(kTRUE,kTRUE);
promptJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
promptJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
- die->AddSignalMC(promptJpsi);
// prompt J/psi radiative channel
AliDielectronSignalMC* promptJpsiRad = new AliDielectronSignalMC("promptJpsiRad","PromptRadiative"); // prompt J/psi (not from beauty decays)
promptJpsiRad->SetCheckBothChargesMothers(kTRUE,kTRUE);
promptJpsiRad->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
promptJpsiRad->SetJpsiRadiative(AliDielectronSignalMC::kIsRadiative);
- die->AddSignalMC(promptJpsiRad);
// prompt J/psi Non radiative channel
AliDielectronSignalMC* promptJpsiNonRad = new AliDielectronSignalMC("promptJpsiNonRad","PromptNonRadiative"); // prompt J/psi (not from beauty decays)
promptJpsiNonRad->SetCheckBothChargesMothers(kTRUE,kTRUE);
promptJpsiNonRad->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
promptJpsiNonRad->SetJpsiRadiative(AliDielectronSignalMC::kIsNotRadiative);
- die->AddSignalMC(promptJpsiNonRad);
AliDielectronSignalMC* directJpsi = new AliDielectronSignalMC("directJpsi","Direct"); // embedded J/psi
directJpsi->SetLegPDGs(11,-11);
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->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary);
gammaConversion->SetMotherPDGs(22,22);
gammaConversion->SetMothersRelation(AliDielectronSignalMC::kSame);
- // die->AddSignalMC(gammaConversion);
-}
-void SetEtaCorrection()
-{
- if (AliDielectronPID::GetEtaCorrFunction()) return;
-
- TString etaMap="$TRAIN_ROOT/jpsi_JPSI/EtaCorrMaps.root";
- TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
- if (trainRoot.IsNull()) etaMap="$ALICE_ROOT/PWGDQ/dielectron/files/EtaCorrMaps.root";
- if (gSystem->AccessPathName(gSystem->ExpandPathName(etaMap.Data()))){
- Error("ConfigPbPb","Eta map not found: %s",etaMap.Data());
- return;
+ AliDielectronSignalMC* electrons = new AliDielectronSignalMC("electrons","electrons");
+ electrons->SetLegPDGs(11,1); //dummy second leg (never MCtrue)
+ electrons->SetCheckBothChargesLegs(kTRUE,kTRUE);
+ electrons->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
+ electrons->SetFillPureMCStep(kTRUE);
+ // electrons->SetMothersRelation(AliDielectronSignalMC::kSame);
+
+ /*
+ AliDielectronSignalMC* eleHijing = new AliDielectronSignalMC("eleHijing","eleHijing");
+ eleHijing->SetLegPDGs(11,1); //dummy second leg (never MCtrue)
+ eleHijing->SetCheckBothChargesLegs(kTRUE,kTRUE);
+ eleHijing->SetLegSources(AliDielectronSignalMC::kNoCocktail, AliDielectronSignalMC::kNoCocktail);
+ eleHijing->SetFillPureMCStep(kTRUE);
+ */
+ /*
+ AliDielectronSignalMC* electrons = new AliDielectronSignalMC("electrons","electrons");
+ electrons->SetLegPDGs(11,-11); //dummy second leg (never MCtrue)
+ electrons->SetCheckBothChargesLegs(kTRUE,kTRUE);
+ electrons->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
+ // electrons->SetMotherPDGs(111,111,kTRUE,kTRUE); // not from pi0
+ // electrons->SetMothersRelation(AliDielectronSignalMC::kSame);
+ electrons->SetFillPureMCStep(kTRUE);
+ */
+
+ // selection
+ switch(cutDefinition) {
+ case kRec:
+ die->AddSignalMC(inclusiveJpsi);
+ die->AddSignalMC(directJpsi);
+ break;
+ case kIonut:
+ die->AddSignalMC(inclusiveJpsi);
+ // die->AddSignalMC(beautyJpsi);
+ //die->AddSignalMC(promptJpsi);
+ //die->AddSignalMC(promptJpsiRad);
+ //die->AddSignalMC(promptJpsiNonRad);
+ die->AddSignalMC(directJpsi);
+ // die->AddSignalMC(gammaConversion);
+ break;
+ case kLegEff:
+ die->AddSignalMC(directJpsi);
+ die->AddSignalMC(inclusiveJpsi);
+ die->AddSignalMC(electrons);
+ break;
+ default: return;
}
- TFile f(etaMap.Data());
- if (!f.IsOpen()) return;
- TList *keys=f.GetListOfKeys();
- for (Int_t i=0; i<keys->GetEntries(); ++i){
- TString kName=keys->At(i)->GetName();
- TPRegexp reg(kName);
- if (reg.MatchB(list)){
- printf(" Using Eta Correction Function: %s\n",kName.Data());
- AliDielectronPID::SetEtaCorrFunction((TF1*)f.Get(kName.Data()));
- }
+}
+
+void SetEtaCorrection(AliDielectron *die) {
+
+ if (AliDielectronPID::GetCentroidCorrFunction()) return;
+
+ TF2 *fCntrdCorr=0x0;
+ TF1 *fWdthCorr=0x0;
+ /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv DATA vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
+ // either data or MC with tune on data option
+ if( !die->GetHasMC() || ((AliPIDResponse*)AliAnalysisManager::GetAnalysisManager()->GetTasks()->At(0))->IsTunedOnData()) {
+ // 2-dimensional eta correction for the centroid of electron sigmas
+ fCntrdCorr = new TF2("fCntrdCorr", "[0] + [1]*y + [2]*y*y + [3]*TMath::Power(y,3) + [4]*TMath::Power(y,4) + [5]*TMath::Power(y,5) + [6]*TMath::Power(y,6) + [7]*x",
+ // 0.0, 3000.0, -0.9, +0.9);
+ 0.0, 90.0, -0.9, +0.9);
+ // fCntrdCorr->SetParameters(0.723106, 0.23958, -6.31221, -0.687976, 15.912, 0.579609, -11.6901, -0.000354381); //Nacc dep.
+ fCntrdCorr->SetParameters(+0.149002, +0.214644 , -6.034930, -0.529588, +14.97902, +0.402640, -10.890027, +0.011248); //Cent dep.
+
+ // 1-dimensional eta correction for the width of electron sigmas
+ fWdthCorr = new TF1("fWdthCorr", "pol2", 0.0, 90.0);
+ // fWdthCorr->SetParameters(1.06108, 0.000217804,-5.80291e-08); //Nacc dep.
+ fWdthCorr->SetParameters(+1.290755, -0.005261, +0.000021); //Cent dep.
+
+ // apply corrections
+ // AliDielectronPID::SetCentroidCorrFunction(fCntrdCorr,AliDielectronVarManager::kNacc,AliDielectronVarManager::kEta);
+ // AliDielectronPID::SetWidthCorrFunction(fWdthCorr,AliDielectronVarManager::kNacc);
+ AliDielectronPID::SetCentroidCorrFunction(fCntrdCorr,AliDielectronVarManager::kCentrality,AliDielectronVarManager::kEta);
+ AliDielectronPID::SetWidthCorrFunction(fWdthCorr,AliDielectronVarManager::kCentrality);
+ printf(" DATA PID correction loaded!!!\n");
}
+ else {
+ /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv MONTE CARLO vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
+ // 2-dimensional eta correction for the centroid of electron sigmas
+ fCntrdCorr = new TF2("fCntrdCorr", "[0] + [1]*y + [2]*y*y + [3]*TMath::Power(y,3) + [4]*TMath::Power(y,4) + [5]*TMath::Power(y,5) + [6]*TMath::Power(y,6) + [7]*x",
+ 0.0, 3000.0, -0.9, +0.9);
+ fCntrdCorr->SetParameters(+0.378611, -0.070831, -3.076778, +0.121977, +8.576097, +0.113009, -5.001368, -0.000181);
+ // 1-dimensional eta correction for the width of electron sigmas
+ fWdthCorr = new TF1("fWdthCorr", "pol1", 0.0, 3000.0);
+ fWdthCorr->SetParameters(+0.881894, +0.000053);
+
+ // apply corrections
+ AliDielectronPID::SetCentroidCorrFunction(fCntrdCorr,AliDielectronVarManager::kNacc,AliDielectronVarManager::kEta);
+ AliDielectronPID::SetWidthCorrFunction(fWdthCorr,AliDielectronVarManager::kNacc);
+ // AliDielectronPID::SetCentroidCorrFunction(fCntrdCorr,AliDielectronVarManager::kCentrality,AliDielectronVarManager::kEta);
+ // AliDielectronPID::SetWidthCorrFunction(fWdthCorr,AliDielectronVarManager::kCentrality);
+ }
+
+
}
-TVectorD *GetRunNumbers() {
+TVectorD *GetRunNumbers2011() {
Double_t runLHC10h[] = { // all good runs based on RCT 29.Mai
139510, 139507, 139505, 139503, 139465, 139438, 139437, 139360, 139329, 139328, 139314, 139310, 139309, 139173, 139107, 139105, 139038, 139037, 139036, 139029, 139028, 138872, 138871, 138870, 138837, 138732, 138730, 138666, 138662, 138653, 138652, 138638, 138624, 138621, 138583, 138582, 138579, 138578, 138534, 138469, 138442, 138439, 138438, 138396, 138364, 138275, 138225, 138201, 138197, 138192, 138190, 137848, 137844, 137752, 137751, 137724, 137722, 137718, 137704, 137693, 137692, 137691, 137686, 137685, 137639, 137638, 137608, 137595, 137549, 137546, 137544, 137541, 137539, 137531, 137530, 137443, 137441, 137440, 137439, 137434, 137432, 137431, 137430, 137366, 137243, 137236, 137235, 137232, 137231, 137230, 137162, 137161, 137135
};
-
Double_t runLHC11h[] = { // all good runs based on RCT 29.Mai
- 170593, 170572, 170388, 170387, 170315, 170313, 170312, 170311, 170309, 170308, 170306, 170270, 170269, 170268, 170230, 170228, 170207, 170204, 170203, 170193, 170163, 170159, 170155, 170091, 170089, 170088, 170085, 170084, 170083, 170081, 170040, 170027, 169965, 169923, 169859, 169858, 169855, 169846, 169838, 169837, 169835, 169591, 169590, 169588, 169587, 169586, 169557, 169555, 169554, 169553, 169550, 169515, 169512, 169506, 169504, 169498, 169475, 169420, 169419, 169418, 169417, 169415, 169411, 169238, 169167, 169160, 169156, 169148, 169145, 169144, 169138, 169099, 169094, 169091, 169045, 169044, 169040, 169035, 168992, 168988, 168826, 168777, 168514, 168512, 168511, 168467, 168464, 168460, 168458, 168362, 168361, 168342, 168341, 168325, 168322, 168311, 168310, 168115, 168108, 168107, 168105, 168076, 168069, 167988, 167987, 167985, 167920, 167915
+ 167915, 167920, 167985, 167987, 167988, 168069, 168076, 168105, 168107, 168108, 168115, 168310, 168311, 168322, 168325, 168341, 168342, 168361, 168362, 168458, 168460, 168464, 168467, 168511, 168512, 168514, 168777, 168826, 168988, 168992, 169035, 169040, 169044, 169045, 169091, 169094, 169099, 169138, 169144, 169145, 169148, 169156, 169160, 169167, 169238, 169411, 169415, 169417, 169418, 169419, 169420, 169475, 169498, 169504, 169506, 169512, 169515, 169550, 169553, 169554, 169555, 169557, 169586, 169587, 169588, 169590, 169591, 169835, 169837, 169838, 169846, 169855, 169858, 169859, 169923, 169965, 170027, 170040, 170081, 170083, 170084, 170085, 170088, 170089, 170091, 170155, 170159, 170163, 170193, 170203, 170204, 170207, 170228, 170230, 170268, 170269, 170270, 170306, 170308, 170309, 170311, 170312, 170313, 170315, 170387, 170388, 170572, 170593,
+ 170593+1
};
-
- // selection via environement variable (works only for gsi trains)
-
-
+ /*
if(list.Contains("LHC10h") || list.Contains("LHC11a10")) {
- Int_t size = (int) (sizeof(runLHC10h)/sizeof(Double_t));
- TVectorD *vec = new TVectorD(size+1);
-
- (*vec)[size] = runLHC10h[0] + 1;
- for (int i = 0; i < size; i++) {
- (*vec)[i] = runLHC10h[size-1-i];
- }
- // vec->Print("");
- return vec;
- }
-
if( list.Contains("LHC11h") || list.Contains("LHC12a17") ) {
-
- Int_t size = (int) (sizeof(runLHC11h)/sizeof(Double_t));
- TVectorD *vec = new TVectorD(size+1);
-
- (*vec)[size] = runLHC11h[0] + 1;
- for (int i = 0; i < size; i++) {
- (*vec)[i] = runLHC11h[size-1-i];
- }
- // vec->Print("");
- return vec;
- }
-
- TVectorD *vec = new TVectorD(2);
- (*vec)[0] = 0;
- (*vec)[1] = 1;
+ */
+ Int_t size = (int) (sizeof(runLHC11h)/sizeof(Double_t));
+ TVectorD *vec = new TVectorD(size,runLHC11h);
+ //vec->Print("");
return vec;
-
}
TVectorD *GetDeltaPhiBins() {