]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/CaloTasks/macros/AddTaskCaloFilter.C
load properly the library in case of par files, update macro with possibility to...
[u/mrichter/AliRoot.git] / PWGGA / CaloTasks / macros / AddTaskCaloFilter.C
1 AliAnalysisTaskCaloFilter * AddTaskCaloFilter(const Bool_t  bias      = kTRUE, 
2                                               const Float_t minE      = 6, 
3                                               const Float_t minN      = 2, 
4                                               const Float_t vz        = 10.,
5                                               const Int_t   opt       = AliAnalysisTaskCaloFilter::kEMCAL, //kPHOS, kEMCAL or kBoth
6                                               const Bool_t  correct   = kFALSE,
7                                               const Bool_t  fillTrack = kTRUE,
8                                               const Bool_t  fillAOD   = kTRUE)
9 {
10
11   // Get the pointer to the existing analysis manager via the static access method.
12   //==============================================================================
13   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
14   if (!mgr) 
15   {
16     ::Error("AddTaskCaloFilter", "No analysis manager to connect to.");
17     return NULL;
18   }  
19   
20   // Check the analysis type using the event handlers connected to the analysis manager.
21   //==============================================================================
22   if (!mgr->GetInputEventHandler()) 
23   {
24     ::Error("AddTaskCaloFilter", "This task requires an input event handler");
25     return NULL;
26   }
27   
28   AliAnalysisTaskCaloFilter * filter = new AliAnalysisTaskCaloFilter("CaloFilter");
29   
30   filter->SetCaloFilter(opt); //kPHOS, kEMCAL or kBoth
31   
32   filter->SetVzCut(vz);
33   
34   if(bias) // select events with significant signal in EMCAL
35   {
36     filter->SetEnergyCut(minE);
37     filter->SetNcellsCut(minN);
38     
39     filter->SelectCollisionCandidates(AliVEvent::kAny) ;
40     
41     printf("--- Select events with 1 cluster with at least %2.2f GeV and N = %d ---\n",minE,minN);
42   }
43   else // Do not bias the signal in EMCAL, select MB events 
44   {
45     filter->SetEnergyCut(0);
46     filter->SetNcellsCut(0);    
47
48     filter->SelectCollisionCandidates(AliVEvent::kAnyINT | AliVEvent::kCentral | AliVEvent::kSemiCentral ) ;
49     
50     printf("--- Select Min Bias events ---\n");
51   }
52
53   if(correct)   filter->SwitchOnClusterCorrection();
54   else          filter->SwitchOffClusterCorrection();  
55   
56   if(fillTrack) filter->SwitchOnFillTracks();
57   else          filter->SwitchOffFillTracks();
58   
59   if(fillAOD)   filter->SwitchOnFillAODFile();
60   else          filter->SwitchOffFillAODFile();
61     
62   filter->PrintInfo();
63   
64   mgr->AddTask(filter);
65   
66   // Create containers for input/output
67   AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
68   AliAnalysisDataContainer *coutput1 = mgr->GetCommonOutputContainer();
69     
70   mgr->ConnectInput  (filter, 0, cinput1);
71   mgr->ConnectOutput (filter, 0, coutput1 );
72   
73   return filter;
74
75 }