+++ /dev/null
-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;
-}