AliAnalysisTaskSEDvsMultiplicity *AddTaskDvsMultiplicity(Int_t system=0,
Bool_t readMC=kFALSE,
Int_t MCOption=0,
- Int_t pdgMeson="411",
+ Int_t pdgMeson=411,
TString finDirname="Loose",
TString filename="",
TString finAnObjname="AnalysisCuts",
- TString estimatorFilename="")
+ TString estimatorFilename="",
+ Double_t refMult=9.26,
+ Bool_t subtractDau=kFALSE,
+ Bool_t NchWeight=kFALSE,
+ Int_t recoEstimator = AliAnalysisTaskSEDvsMultiplicity::kNtrk10,
+ Int_t MCEstimator = AliAnalysisTaskSEDvsMultiplicity::kEta10,
+ Bool_t isPPbData=kFALSE)
{
- //
- // Test macro for the AliAnalysisTaskSE for D+ candidates
-
- //Invariant mass histogram and
- // association with MC truth (using MC info in AOD)
- // R. Bala, bala@to.infn.it
- // Get the pointer to the existing analysis manager via the static access method.
- //==============================================================================
+ //
+ // Test macro for the AliAnalysisTaskSE for D+ candidates
+ //Invariant mass histogram and
+ // association with MC truth (using MC info in AOD)
+ // R. Bala, bala@to.infn.it
+ // Get the pointer to the existing analysis manager via the static access method.
+ //==============================================================================
+
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (!mgr) {
::Error("AddTaskDvsMultiplicity", "No analysis manager to connect to.");
}
-
+
Bool_t stdcuts=kFALSE;
- TFile* filecuts,fileEstimator;
+ TFile* filecuts;
if( filename.EqualTo("") ) {
stdcuts=kTRUE;
} else {
- filecuts=TFile::Open(filename.Data());
- if(!filecuts ||(filecuts&& !filecuts->IsOpen())){
- AliFatal("Input file not found : check your cut object");
- }
+ filecuts=TFile::Open(filename.Data());
+ if(!filecuts ||(filecuts&& !filecuts->IsOpen())){
+ AliFatal("Input file not found : check your cut object");
+ }
}
-
-
-
-
- //Analysis Task
-
- AliRDHFCuts *analysiscuts=0x0;
+ //Analysis Task
+ AliRDHFCuts *analysiscuts=0x0;
- TString Name;
- if(pdgMeson=411){
+ TString Name="";
+ if(pdgMeson==411){
if(stdcuts) {
analysiscuts = new AliRDHFCutsDplustoKpipi();
if (system == 0) analysiscuts->SetStandardCutsPP2010();
}
else analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(finAnObjname);
Name="Dplus";
- }else if(pdgMeson=421){
-
+ }else if(pdgMeson==421){
if(stdcuts) {
analysiscuts = new AliRDHFCutsD0toKpi();
if (system == 0) analysiscuts->SetStandardCutsPP2010();
else analysiscuts->SetStandardCutsPbPb2011();
}
else analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get(finAnObjname);
- Name="D0";
- }else if(pdgMeson=413){
-if(stdcuts) {
+ Name="D0";
+ }else if(pdgMeson==413){
+ if(stdcuts) {
analysiscuts = new AliRDHFCutsDStartoKpipi();
if (system == 0) analysiscuts->SetStandardCutsPP2010();
else analysiscuts->SetStandardCutsPbPb2011();
}
else analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get(finAnObjname);
-Name="DStar";
- }
+ Name="DStar";
+ }
-
- AliAnalysisTaskSEDvsMultiplicity *dMultTask = new AliAnalysisTaskSEDvsMultiplicity("dMultAnalysis",pdgMeson,analysiscuts);
- dMultTask->SetReadMC(readMC);
-
+ AliAnalysisTaskSEDvsMultiplicity *dMultTask = new AliAnalysisTaskSEDvsMultiplicity("dMultAnalysis",pdgMeson,analysiscuts);
+ dMultTask->SetReadMC(readMC);
dMultTask->SetDebugLevel(0);
-
dMultTask->SetUseBit(kTRUE);
-
dMultTask->SetDoImpactParameterHistos(kFALSE);
+ dMultTask->SetSubtractTrackletsFromDaughters(subtractDau);
+ dMultTask->SetMultiplicityEstimator(recoEstimator);
+ dMultTask->SetMCPrimariesEstimator(MCEstimator);
+ dMultTask->SetMCOption(MCOption);
+ if(isPPbData) dMultTask->SetIsPPbData();
- if( filename.EqualTo("") ) {
- printf("Estimator file not provided, multiplcity corrected histograms will not be filled\n");
- }else{
- const Char_t* periodNames[4] = {"LHC10b", "LHC10c", "LHC10d", "LHC10e"};
- TProfile* multEstimatorAvg[4];
- TFile* fileEstimator=TFile::Open(estimatorFilename.Data());
- if(!fileEstimator) {
- AliFatal("File with multiplicity estimator not found\n");
- return;
- }
- for(Int_t ip=0; ip<4; ip++) {
- multEstimatorAvg[ip] = (TProfile*)(fileEstimator->Get(Form("SPDmult10_%s",periodNames[ip]))->Clone(Form("SPDmult10_%s_clone",periodNames[ip])));
-
+ if(NchWeight){
+ TH1F *hNchPrimaries = (TH1F*)filecuts->Get("hGenPrimaryParticlesInelGt0");
+ if(hNchPrimaries) {
+ dMultTask->UseMCNchWeight(true);
+ dMultTask->SetHistoNchWeight(hNchPrimaries);
+ } else {
+ AliFatal("Histogram for multiplicity weights not found");
+ return 0x0;
+ }
+ }
- }
- SetMultiplVsZProfileLHC10b(multEstimatorAvg[0]);
- SetMultiplVsZProfileLHC10c(multEstimatorAvg[1]);
- SetMultiplVsZProfileLHC10d(multEstimatorAvg[2]);
- SetMultiplVsZProfileLHC10e(multEstimatorAvg[3]);
+ if(pdgMeson==421) {
+ dMultTask->SetMassLimits(1.5648,2.1648);
+ dMultTask->SetNMassBins(200);
+ }else if(pdgMeson==411)dMultTask->SetMassLimits(pdgMeson,0.2);
+
+ if(estimatorFilename.EqualTo("") ) {
+ printf("Estimator file not provided, multiplcity corrected histograms will not be filled\n");
+ } else{
+ const Char_t* periodNames[4] = {"LHC10b", "LHC10c", "LHC10d", "LHC10e"};
+ TProfile* multEstimatorAvg[4];
+ TFile* fileEstimator=TFile::Open(estimatorFilename.Data());
+ if(!fileEstimator) {
+ AliFatal("File with multiplicity estimator not found\n");
+ return;
+ }
+ for(Int_t ip=0; ip<4; ip++) {
+ multEstimatorAvg[ip] = (TProfile*)(fileEstimator->Get(Form("SPDmult10_%s",periodNames[ip]))->Clone(Form("SPDmult10_%s_clone",periodNames[ip])));
+ }
+ dMultTask->SetMultiplVsZProfileLHC10b(multEstimatorAvg[0]);
+ dMultTask->SetMultiplVsZProfileLHC10c(multEstimatorAvg[1]);
+ dMultTask->SetMultiplVsZProfileLHC10d(multEstimatorAvg[2]);
+ dMultTask->SetMultiplVsZProfileLHC10e(multEstimatorAvg[3]);
+ dMultTask->SetReferenceMultiplcity(refMult);
}
mgr->AddTask(dMultTask);
// Create containers for input/output
-
+
TString inname = "cinput";
TString outname = "coutput";
TString cutsname = "coutputCuts";
TString normname = "coutputNorm";
-
+ TString profname = "coutputProf";
+
+ inname += Name.Data();
+ outname += Name.Data();
+ cutsname += Name.Data();
+ normname += Name.Data();
+ profname += Name.Data();
inname += finDirname.Data();
outname += finDirname.Data();
cutsname += finDirname.Data();
normname += finDirname.Data();
-
-
-
+ profname += finDirname.Data();
+ AliAnalysisDataContainer *cinput = mgr->CreateContainer(inname,TChain::Class(),AliAnalysisManager::kInputContainer);
-TString contname=Form("cinput%s",Name.Data());
- AliAnalysisDataContainer *cinput = mgr->CreateContainer(contname.Data(),TChain::Class(),
- AliAnalysisManager::kInputContainer);
TString outputfile = AliAnalysisManager::GetCommonFileName();
- outputfile += ":PWG3_D2H_DMult";
-
- contname=Form("coutputCuts%s",Name.Data());
- AliAnalysisDataContainer *coutputCuts = mgr->CreateContainer(contname.Data(),TList::Class(),
- AliAnalysisManager::kOutputContainer,
- outputfile.Data());
-
- contname=Form("coutput%s",Name.Data());
- AliAnalysisDataContainer *coutput = mgr->CreateContainer(contname.Data(),TList::Class(),
- AliAnalysisManager::kOutputContainer,
- outputfile.Data());
- contname=Form("coutputNorm%s",Name.Data());
-AliAnalysisDataContainer *coutputNorm = mgr->CreateContainer(contname.Data(),TList::Class(),
- AliAnalysisManager::kOutputContainer,
- outputfile.Data());
-
+ outputfile += ":PWG3_D2H_DMult_";
+ outputfile += Name.Data();
+ outputfile += finDirname.Data();
+
+ AliAnalysisDataContainer *coutputCuts = mgr->CreateContainer(cutsname,TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
+ AliAnalysisDataContainer *coutput = mgr->CreateContainer(outname,TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
+ AliAnalysisDataContainer *coutputNorm = mgr->CreateContainer(normname,TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
+ AliAnalysisDataContainer *coutputProf = mgr->CreateContainer(profname,TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
mgr->ConnectInput(dMultTask,0,mgr->GetCommonInputContainer());
mgr->ConnectOutput(dMultTask,2,coutputCuts);
mgr->ConnectOutput(dMultTask,3,coutputNorm);
-
+
+ mgr->ConnectOutput(dMultTask,4,coutputProf);
+
return dMultTask;
}