AliAnalysisTask* AddTaskFilteredTree(TString outputFile="")
{
gSystem->Load("libANALYSIS");
gSystem->Load("libANALYSISalice");
gSystem->Load("libTENDER");
gSystem->Load("libCORRFW");
gSystem->Load("libPWGUDbase");
gSystem->Load("libTPCcalib");
gSystem->Load("libPWGPP");
gSystem->Load("libPWGLFspectra");
gRandom->SetSeed(0);
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (!mgr) {
Error("AddTaskFilteredTree", "No analysis manager found.");
return 0;
}
// Switch off all AliInfo (too much output!!!)
AliLog::SetGlobalLogLevel(AliLog::kError);
mgr->SetDebugLevel(0);
//
// Create physics trigger selection class
//
//AliPhysicsSelection *physTrigSel = new AliPhysicsSelection();
//
// Create event cuts
//
Float_t zvWindow = 30. ;
AliFilteredTreeEventCuts *evtCuts = new AliFilteredTreeEventCuts("AliFilteredTreeEventCuts","Event cuts");
evtCuts->SetZvRange(-zvWindow,zvWindow);
evtCuts->SetMeanXYZv(0.0,0.0,0.0);
evtCuts->SetSigmaMeanXYZv(1.0,1.0,10.0);
evtCuts->SetTriggerRequired(kFALSE);
//evtCuts->SetTriggerRequired(kTRUE);
//
// Create geom. acceptance cuts
//
Float_t etaWindow = 1.0 ;
Float_t ptMin = 0.15 ;
AliFilteredTreeAcceptanceCuts *accCuts = new AliFilteredTreeAcceptanceCuts("AliFilteredTreeAcceptanceCuts","Geom. acceptance cuts");
accCuts->SetEtaRange(-etaWindow,etaWindow);
accCuts->SetPtRange(ptMin,1.e10);
accCuts->SetMaxDCAr(3.0);
accCuts->SetMaxDCAz(30.0);
//
// Create standard esd track cuts
//
AliESDtrackCuts* esdTrackCuts = CreateCuts();
if (!esdTrackCuts) {
printf("ERROR: esdTrackCuts could not be created\n");
return;
} else {
esdTrackCuts->SetHistogramsOn(kTRUE);
}
Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
//
// Create task
//
AliAnalysisTaskFilteredTree *task = new AliAnalysisTaskFilteredTree("AliAnalysisTaskFilteredTree");
//task->SetUseMCInfo(hasMC);
//task->SetLowPtTrackDownscaligF(1.e4);
//task->SetLowPtV0DownscaligF(1.e2);
task->SetLowPtTrackDownscaligF(1.e5);
task->SetLowPtV0DownscaligF(2.e3);
task->SetProcessAll(kTRUE);
task->SetProcessCosmics(kTRUE);
//task->SetProcessAll(kFALSE);
//task->SetFillTrees(kFALSE); // only histograms are filled
// trigger
//task->SelectCollisionCandidates(AliVEvent::kMB);
//
// set analysis options from the Helper here !!!
//
// AlidNdPtHelper::OutputObject outputObject = AlidNdPtHelper::kCutAnalysisPbPb;
// AlidNdPtHelper::ParticleMode particleMode = AlidNdPtHelper::kAllPart ;
//AlidNdPtHelper::AnalysisMode analysisMode = AlidNdPtHelper::kTPCITS;
task->SetEventCuts(evtCuts);
task->SetAcceptanceCuts(accCuts);
task->SetTrackCuts(esdTrackCuts);
task->SetAnalysisMode(AliAnalysisTaskFilteredTree::kTPCITSAnalysisMode);
task->SetCentralityEstimator("V0M");
// Add task
mgr->AddTask(task);
// Create containers for input
AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
mgr->ConnectInput(task, 0, cinput);
if (outputFile.IsNull())
outputFile=Form("%s", AliAnalysisManager::GetCommonFileName());
AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("filtered1", TTree::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
mgr->ConnectOutput(task, 1, coutput1);
AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("filtered2", TTree::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
mgr->ConnectOutput(task, 2, coutput2);
AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("filtered3", TTree::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
mgr->ConnectOutput(task, 3, coutput3);
AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("filtered4", TTree::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
mgr->ConnectOutput(task, 4, coutput4);
AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("filtered5", TTree::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
mgr->ConnectOutput(task, 5, coutput5);
AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("filtered6", TTree::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
mgr->ConnectOutput(task, 6, coutput6);
// store histograms in the separate file
TString outputFileHisto = "PtResHistograms.root";
AliAnalysisDataContainer *coutput7 = mgr->CreateContainer("histo7", TList::Class(), AliAnalysisManager::kOutputContainer, outputFileHisto.Data());
mgr->ConnectOutput(task, 7, coutput7);
return task;
}
AliESDtrackCuts* CreateCuts(Bool_t fieldOn = kTRUE, Bool_t hists = kTRUE)
{
AliESDtrackCuts* esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts");
if(!esdTrackCuts) return 0;
if (hists)
esdTrackCuts->DefineHistograms(1);
Double_t cov1, cov2, cov3, cov4, cov5;
Double_t nSigma;
Double_t maxDCAtoVertex, maxDCAtoVertexXY, maxDCAtoVertexZ;
Double_t minNClustersTPC;
Double_t maxChi2PerClusterTPC;
Double_t minPt, maxPt;
//
// TPC
//
esdTrackCuts->SetRequireTPCRefit(kTRUE);
esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
//
// ITS
//
//esdTrackCuts->SetRequireITSRefit(kTRUE);
//esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
//
TString tag = "TPC+ITS refit and KinkRejection required - for cut studies";
// cuts for data without field
if (!fieldOn)
{
cov5 = 1e10;
tag += " without field";
}
Printf("Created track cuts for: %s", tag.Data());
return esdTrackCuts;
}
AddTaskFilteredTree.C:100 AddTaskFilteredTree.C:101 AddTaskFilteredTree.C:102 AddTaskFilteredTree.C:103 AddTaskFilteredTree.C:104 AddTaskFilteredTree.C:105 AddTaskFilteredTree.C:106 AddTaskFilteredTree.C:107 AddTaskFilteredTree.C:108 AddTaskFilteredTree.C:109 AddTaskFilteredTree.C:110 AddTaskFilteredTree.C:111 AddTaskFilteredTree.C:112 AddTaskFilteredTree.C:113 AddTaskFilteredTree.C:114 AddTaskFilteredTree.C:115 AddTaskFilteredTree.C:116 AddTaskFilteredTree.C:117 AddTaskFilteredTree.C:118 AddTaskFilteredTree.C:119 AddTaskFilteredTree.C:120 AddTaskFilteredTree.C:121 AddTaskFilteredTree.C:122 AddTaskFilteredTree.C:123 AddTaskFilteredTree.C:124 AddTaskFilteredTree.C:125 AddTaskFilteredTree.C:126 AddTaskFilteredTree.C:127 AddTaskFilteredTree.C:128 AddTaskFilteredTree.C:129 AddTaskFilteredTree.C:130 AddTaskFilteredTree.C:131 AddTaskFilteredTree.C:132 AddTaskFilteredTree.C:133 AddTaskFilteredTree.C:134 AddTaskFilteredTree.C:135 AddTaskFilteredTree.C:136 AddTaskFilteredTree.C:137 AddTaskFilteredTree.C:138 AddTaskFilteredTree.C:139 AddTaskFilteredTree.C:140 AddTaskFilteredTree.C:141 AddTaskFilteredTree.C:142 AddTaskFilteredTree.C:143 AddTaskFilteredTree.C:144 AddTaskFilteredTree.C:145 AddTaskFilteredTree.C:146 AddTaskFilteredTree.C:147 AddTaskFilteredTree.C:148 AddTaskFilteredTree.C:149 AddTaskFilteredTree.C:150 AddTaskFilteredTree.C:151 AddTaskFilteredTree.C:152 AddTaskFilteredTree.C:153 AddTaskFilteredTree.C:154 AddTaskFilteredTree.C:155 AddTaskFilteredTree.C:156 AddTaskFilteredTree.C:157 AddTaskFilteredTree.C:158 AddTaskFilteredTree.C:159 AddTaskFilteredTree.C:160 AddTaskFilteredTree.C:161 AddTaskFilteredTree.C:162 AddTaskFilteredTree.C:163 AddTaskFilteredTree.C:164 AddTaskFilteredTree.C:165 AddTaskFilteredTree.C:166 AddTaskFilteredTree.C:167 AddTaskFilteredTree.C:168 AddTaskFilteredTree.C:169 AddTaskFilteredTree.C:170 AddTaskFilteredTree.C:171 AddTaskFilteredTree.C:172 AddTaskFilteredTree.C:173 AddTaskFilteredTree.C:174 AddTaskFilteredTree.C:175