]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/EMCAL/macros/AddTaskEmcalTriggerMaker.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWG / EMCAL / macros / AddTaskEmcalTriggerMaker.C
1 // $Id$
2
3 AliEmcalTriggerMaker* AddTaskEmcalTriggerMaker(
4   const char *triggersOutName     = "EmcalTriggers",
5   const char *triggerSetupOutName = "EmcalTriggerSetup",
6   const char *cellsName           = 0,
7   const char *triggersName        = 0,
8   const char *taskName            = "AliEmcalTriggerMaker",
9   int jetLowA                     = 0,
10   int jetLowB                     = 0,
11   int jetLowC                     = 0,
12   int jetHighA                    = 0,
13   int jetHighB                    = 0,
14   int jetHighC                    = 0,
15   bool useOldBitConfig            = kFALSE,
16   bool doQA                       = kFALSE
17 )
18 {  
19   // Get the pointer to the existing analysis manager via the static access method.
20   //==============================================================================
21   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
22   if (!mgr)
23   {
24     ::Error("AddTaskEmcalTriggerMaker", "No analysis manager to connect to.");
25     return NULL;
26   }  
27   
28   // Check the analysis type using the event handlers connected to the analysis manager.
29   //==============================================================================
30   AliVEventHandler *evhand = mgr->GetInputEventHandler();
31   if (!evhand) {
32     ::Error("AddTaskEmcalTriggerMaker", "This task requires an input event handler");
33     return NULL;
34   }
35
36   TString strTriggersName(triggersName);
37   TString strCellsName(cellsName);
38
39   if(strTriggersName.IsNull()) {
40     if (evhand->InheritsFrom("AliESDInputHandler")) {
41       strTriggersName = "EMCALTrigger";
42       ::Info("AddTaskEmcalTriggerMaker", Form( "ESD analysis, triggersName = \"%s\"", strTriggersName.Data() ));
43     }
44     else {
45       strTriggersName = "emcalTrigger";
46       ::Info("AddTaskEmcalTriggerMaker", Form( "AOD analysis, triggersName = \"%s\"", strTriggersName.Data() ));
47     }
48   }
49
50   if(strCellsName.IsNull()) {
51     if (evhand->InheritsFrom("AliESDInputHandler")) {
52       strCellsName = "EMCALCells";
53       ::Info("AddTaskEmcalTriggerMaker", Form( "ESD analysis, cellsName = \"%s\"", strCellsName.Data() ));
54     }
55     else {
56       strCellsName = "emcalCells";
57       ::Info("AddTaskEmcalTriggerMaker", Form( "AOD analysis, cellsName = \"%s\"", strCellsName.Data() ));
58     }
59   }
60
61   char *v0Name;
62   v0Name = new char[100];
63   if (evhand->InheritsFrom("AliESDInputHandler")) {
64     strcpy(v0Name,"AliESDVZERO");
65     ::Info("AddTaskEmcalTriggerMaker", Form( "ESD analysis, v0Name = \"%s\"", v0Name ));
66   }
67   else {
68     strcpy(v0Name,"AliAODVZERO");
69     ::Info("AddTaskEmcalTriggerMaker", Form( "AOD analysis, v0Name = \"%s\"", v0Name ));
70   }
71  
72    //-------------------------------------------------------
73   // Init the task and do settings
74   //-------------------------------------------------------
75
76   AliEmcalTriggerMaker *eTask = new AliEmcalTriggerMaker(taskName, doQA);
77   eTask->SetCaloTriggersName(strTriggersName.Data());
78   eTask->SetCaloTriggersOutName(triggersOutName);
79   eTask->SetCaloTriggerSetupOutName(triggerSetupOutName);
80   eTask->SetCaloCellsName(strCellsName.Data());
81   eTask->SetV0InName(v0Name);
82   eTask->SetTriggerThresholdJetLow( jetLowA, jetLowB, jetLowC );
83   eTask->SetTriggerThresholdJetHigh( jetHighA, jetHighB, jetHighC );
84   if (useOldBitConfig)
85     eTask->SetUseTriggerBitConfig(AliEmcalTriggerMaker::kOldConfig);
86
87   //-------------------------------------------------------
88   // Final settings, pass to manager and set the containers
89   //-------------------------------------------------------
90   mgr->AddTask(eTask);
91   
92   // Create containers for input/output
93   AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
94   mgr->ConnectInput  (eTask, 0,  cinput1 );
95
96   if(doQA){
97     TString commonoutput = mgr->GetCommonFileName();
98     commonoutput += ":TriggerQA";
99     mgr->ConnectOutput(eTask, 1, mgr->CreateContainer("TriggerQA", TList::Class(), AliAnalysisManager::kOutputContainer, commonoutput.Data()));
100   }
101   return eTask;
102 }