]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/EMCALTasks/macros/AddTaskEMCALPi0Calibration.C
734b545da3361c7cf0a1a6293a2d952b3e61b831
[u/mrichter/AliRoot.git] / PWGGA / EMCALTasks / macros / AddTaskEMCALPi0Calibration.C
1 // $Id: AliAnalysisTaskEMCALPi0CalibSelection 56196 2012-05-03 20:53:20Z gconesab $
2
3 AliAnalysisTaskEMCALPi0CalibSelection * AddTaskEMCALPi0Calibration(TString outputFile = "", // AnalysisResults.root
4                                                                    TString trigger ="CEMC7",
5                                                                    Bool_t recalE = kFALSE, 
6                                                                    Bool_t recalT = kFALSE,
7                                                                    Bool_t rmBad  = kFALSE,
8                                                                    Bool_t nonlin = kTRUE,
9                                                                    Bool_t simu   = kFALSE)
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("AddTaskEMCALTriggerQA", "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("AddTaskEMCALPi0Calibration", "This task requires an input event handler");
25     return NULL;
26   }
27     
28   
29   // Create containers for input/output
30   AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
31   
32   AliAnalysisTaskEMCALPi0CalibSelection * pi0calib = new AliAnalysisTaskEMCALPi0CalibSelection ("EMCALPi0Calibration");
33   pi0calib->SelectCollisionCandidates(); 
34   //pi0calib->SetDebugLevel(10); 
35   //pi0calib->UseFilteredEventAsInput();
36   pi0calib->SetClusterMinEnergy(0.3);
37   pi0calib->SetClusterMaxEnergy(10.);
38   pi0calib->SetClusterLambda0Cuts(0.1,0.5);
39   pi0calib->SetAsymmetryCut(1.);
40   pi0calib->SetClusterMinNCells(1);
41   pi0calib->SetNCellsGroup(0);
42   pi0calib->SwitchOnSameSM();
43   pi0calib->SetPairDTimeCut(40);
44   pi0calib->SetClusterMinTime(560);
45   pi0calib->SetClusterMaxTime(610);
46
47   pi0calib->SetTriggerName(trigger);
48   
49   // Cluster recalculation, Reco Utils configuration
50   
51   pi0calib->SwitchOnClusterCorrection();
52
53   
54   AliEMCALRecoUtils * reco = pi0calib->GetEMCALRecoUtils();
55   
56   gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALTasks/macros/ConfigureEMCALRecoUtils.C");
57   
58   ConfigureEMCALRecoUtils(reco,
59                           simu,                             
60                           kTRUE, // exotic
61                           nonlin,
62                           recalE, 
63                           rmBad,
64                           recalT);   
65   
66   reco->SetNumberOfCellsFromEMCALBorder(1);
67
68   //reco->Print("");
69   
70   //cu->SwitchOnEMCALOADB();
71
72   
73   //---------------------
74   // Geometry alignment
75   //---------------------
76   
77   //pi0calib->SetGeometryName("EMCAL_COMPLETE12SMV1");
78   pi0calib->SetGeometryName("EMCAL_COMPLETEV1");
79
80   pi0calib->SwitchOffLoadOwnGeometryMatrices();
81   
82   
83   //---------------------
84   // Recalibration
85   //---------------------
86   
87   if(recalE)
88   {
89     reco->SwitchOnRecalibration();
90     TFile * f = new TFile("RecalibrationFactors.root","read");
91     for(Int_t ism = 0; ism < 12; ism++)
92     {
93       TH2F * h = (TH2F*)f->Get("EMCALRecalFactors_SM0");
94       reco->SetEMCALChannelRecalibrationFactors(0,h);
95     }
96   }
97   
98   pi0calib->PrintInfo();
99   
100   mgr->AddTask(pi0calib);
101   
102   if(outputFile.Length()==0) outputFile = AliAnalysisManager::GetCommonFileName(); 
103
104   AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
105   AliAnalysisDataContainer *coutput = mgr->CreateContainer(Form("Pi0Calibration_Trig%s",trigger.Data()), 
106                                                            TList::Class(), AliAnalysisManager::kOutputContainer,  
107                                                            outputFile.Data());
108   
109   AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer(Form("ParamsPi0Calibration_Trig%s",trigger.Data()), 
110                                                              TList::Class(), AliAnalysisManager::kOutputContainer, 
111                                                              "AnalysisParameters.root");
112   
113   mgr->AddTask(pi0calib);
114                                                              
115   mgr->ConnectInput  (pi0calib, 0, cinput1);
116   mgr->ConnectOutput (pi0calib, 1, coutput);
117   mgr->ConnectOutput (pi0calib, 2, cout_cuts);
118
119   return pi0calib;
120 }