--- /dev/null
+AliAnalysisTaskMultPbTracks ** AddTaskMultPbPbTracksAllCentrality(TString outfilename, AliESDtrackCuts * esdTrackCuts = 0, AliAnalysisMultPbCentralitySelector * centr, Int_t ncentr, Float_t * minCentr, Float_t *maxCentr)
+{
+ // TODO: add some parameters to set the centrality for this task, and maybe the name of the task
+ // TODO: shall I use the same file and different dirs for the different centralities?
+
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+ if (!mgr) {
+ ::Error("AddTaskPhysicsSelection", "No analysis manager to connect to.");
+ return NULL;
+ }
+
+ // Check the analysis type using the event handlers connected to the analysis manager.
+ //==============================================================================
+ if (!mgr->GetInputEventHandler()) {
+ ::Error("AddTaskPhysicsSelection", "This task requires an input event handler");
+ return NULL;
+ }
+ TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
+
+ if (inputDataType != "ESD") {
+ Printf("ERROR! This task can only run on ESDs!");
+ }
+
+ // Configure analysis
+ //===========================================================================
+
+
+ cout << "Booking " << ncentr << " Tasks" << endl;
+ AliAnalysisTaskMultPbTracks ** tasks = new AliAnalysisTaskMultPbTracks*[ncentr];
+
+ for(Int_t icentr = 0; icentr < ncentr; icentr++){
+
+ tasks[icentr] = new AliAnalysisTaskMultPbTracks(Form("TaskMultPbTracks_%d",icentr));
+ mgr->AddTask(tasks[icentr]);
+
+ // Set Cuts
+ if (!esdTrackCuts)
+ {
+ printf("ERROR: esdTrackCuts could not be created\n");
+ return;
+ }
+ tasks[icentr]->SetTrackCuts(esdTrackCuts);
+
+ // set centrality
+ AliAnalysisMultPbCentralitySelector * centrBin = (AliAnalysisMultPbCentralitySelector*) centr->Clone();
+ centrBin->SetMultRange(minCentr[icentr],maxCentr[icentr]);
+ tasks[icentr]->SetCentralitySelector(centrBin);
+
+ // TODO:
+ // IO into folders in a file?
+
+ // Set I/O
+ TString outfilenameCentr = outfilename;
+ outfilenameCentr.ReplaceAll(".root",Form("_%2.2d.root",icentr));
+ AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer();
+ AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(Form("cmultPbTracksOutHM_%d",icentr),
+ AliAnalysisMultPbTrackHistoManager::Class(),
+ AliAnalysisManager::kOutputContainer,
+ outfilenameCentr.Data());
+ AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(Form("cmultPbTracksOutCT_%d",icentr),
+ AliESDtrackCuts::Class(),
+ AliAnalysisManager::kOutputContainer,
+ outfilenameCentr.Data());
+ AliAnalysisDataContainer *coutput3 = mgr->CreateContainer(Form("cmultPbTracksOutCM_%d",icentr),
+ AliAnalysisMultPbCentralitySelector::Class(),
+ AliAnalysisManager::kOutputContainer,
+ outfilenameCentr.Data());
+
+ mgr->ConnectInput(tasks[icentr], 0, mgr->GetCommonInputContainer());
+ mgr->ConnectOutput(tasks[icentr],1,coutput1);
+ mgr->ConnectOutput(tasks[icentr],2,coutput2);
+ mgr->ConnectOutput(tasks[icentr],3,coutput3);
+
+ }
+ return tasks;
+}
ClassImp(AliAnalysisTaskTriggerStudy)
//const char * AliAnalysisTaskTriggerStudy::kVDNames[] = {"C0SM1","C0SM2","C0VBA","C0VBC","C0OM2"};
-const char * AliAnalysisTaskTriggerStudy::kVDNames[] = {"C0SM1","C0SM2","C0VBA","C0VBC"};//,"C0OM2"};
+const char * AliAnalysisTaskTriggerStudy::kVDNames[] = {"V0AND","V0OR","NTRACKS"};//,"C0OM2"};
AliAnalysisTaskTriggerStudy::AliAnalysisTaskTriggerStudy()
: AliAnalysisTaskSE("TaskTriggerStudy"),
GetHistoSPD1 ("All", "All events before any selection")->Fill(outerLayerSPD);
GetHistoV0M ("All", "All events before any selection")->Fill(multV0);
+ // V0 triggers
+ Bool_t c0v0A = fTriggerAnalysis->IsOfflineTriggerFired(fESD, AliTriggerAnalysis::kV0A);
+ Bool_t c0v0C = fTriggerAnalysis->IsOfflineTriggerFired(fESD, AliTriggerAnalysis::kV0C);
+ Bool_t v0AHW = (fTriggerAnalysis->V0Trigger(fESD, AliTriggerAnalysis::kASide, kTRUE) == AliTriggerAnalysis::kV0BB);// should replay hw trigger
+ Bool_t v0CHW = (fTriggerAnalysis->V0Trigger(fESD, AliTriggerAnalysis::kCSide, kTRUE) == AliTriggerAnalysis::kV0BB);// should replay hw trigger
+
+ Bool_t v0ABG = fTriggerAnalysis->IsOfflineTriggerFired(fESD, AliTriggerAnalysis::kV0ABG);
+ Bool_t v0CBG = fTriggerAnalysis->IsOfflineTriggerFired(fESD, AliTriggerAnalysis::kV0CBG);
+ Bool_t v0BG = v0ABG || v0CBG;
+
+ // At least one track in eta < 0.8 with pt > 0.5
+ static AliESDtrackCuts * cuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010();
+ cuts->SetPtRange(0.5,10000);
+ cuts->SetEtaRange(-0.8, 0.8);
+ Bool_t atLeast1Track = cuts->CountAcceptedTracks(fESD) > 0;
+
+ Bool_t vdArray[kNVDEntries];
+ vdArray[kVDV0AND] = c0v0A && c0v0C;
+ vdArray[kVDV0OR] = c0v0A || c0v0C;
+ vdArray[kVDNTRACKS] = atLeast1Track;
+
+ FillTriggerOverlaps("All", "All Events",vdArray);
+
// Physics selection
Bool_t isSelected = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB);
Bool_t c0sm4 = nFastOrOffline >= 4;
Bool_t c0sm5 = nFastOrOffline >= 5;
- // V0 triggers
- Bool_t c0v0A = fTriggerAnalysis->IsOfflineTriggerFired(fESD, AliTriggerAnalysis::kV0A);
- Bool_t c0v0C = fTriggerAnalysis->IsOfflineTriggerFired(fESD, AliTriggerAnalysis::kV0C);
- Bool_t v0AHW = (fTriggerAnalysis->V0Trigger(fESD, AliTriggerAnalysis::kASide, kTRUE) == AliTriggerAnalysis::kV0BB);// should replay hw trigger
- Bool_t v0CHW = (fTriggerAnalysis->V0Trigger(fESD, AliTriggerAnalysis::kCSide, kTRUE) == AliTriggerAnalysis::kV0BB);// should replay hw trigger
-
- Bool_t v0ABG = fTriggerAnalysis->IsOfflineTriggerFired(fESD, AliTriggerAnalysis::kV0ABG);
- Bool_t v0CBG = fTriggerAnalysis->IsOfflineTriggerFired(fESD, AliTriggerAnalysis::kV0CBG);
- Bool_t v0BG = v0ABG || v0CBG;
-
// TOF triggers
// FIXME: move to triggeranalysis?
Bool_t cMBAC = c0v0A && c0v0C;
- Bool_t vdArray[kNVDEntries];
- vdArray[kVDC0MBS1] = c0sm1;
- vdArray[kVDC0MBS2] = c0sm2;
- vdArray[kVDC0VBA] = c0v0A;
- vdArray[kVDC0VBC] = c0v0C;
- //vdArray[kVDC0OM2] = c0OM2;
+
+
// Plots requested by Jurgen on 18/11/2010 + later updates (including plots for the note)
// FIXME: will skip everything else
enum {kC0MBS1,kC0MBS2,kC0MBS3,kC0MBS4,kC0MBS5,kC0VBA,kC0VBC,kC0OM2,kCO0M3};
// enum for triggers to be included in the venn-like histogram
// enum {kVDC0MBS1,kVDC0MBS2,kVDC0VBA,kVDC0VBC,kVDC0OM2,kNVDEntries};
- enum {kVDC0MBS1,kVDC0MBS2,kVDC0VBA,kVDC0VBC,kNVDEntries};
+ // enum {kVDC0MBS1,kVDC0MBS2,kVDC0VBA,kVDC0VBC,kNVDEntries};
+ enum {kVDV0AND,kVDV0OR,kVDNTRACKS,kNVDEntries};// Venn diagram for Federico, 7 teV
public: