]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/CaloTasks/macros/AddTaskCaloFilter.C
coverity fix (Diego)
[u/mrichter/AliRoot.git] / PWGGA / CaloTasks / macros / AddTaskCaloFilter.C
1 AliAnalysisTaskCaloFilter * AddTaskCaloFilter(){
2
3   // Get the pointer to the existing analysis manager via the static access method.
4   //==============================================================================
5   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
6   if (!mgr) {
7     ::Error("AddTaskPi0", "No analysis manager to connect to.");
8     return NULL;
9   }  
10   
11   // Check the analysis type using the event handlers connected to the analysis manager.
12   //==============================================================================
13   if (!mgr->GetInputEventHandler()) {
14     ::Error("AddTaskEMCALClusterize", "This task requires an input event handler");
15     return NULL;
16   }
17   
18   AliAnalysisTaskCaloFilter * filter = new AliAnalysisTaskCaloFilter("CaloFilter");
19   filter->SelectCollisionCandidates(); 
20   filter->SetCaloFilter(AliAnalysisTaskCaloFilter::kBoth); //kPHOS or kBoth
21   filter->SwitchOnClusterCorrection();
22   //filter->SetDebugLevel(10);
23   AliEMCALRecoUtils * reco = filter->GetEMCALRecoUtils();
24   reco->SetParticleType(AliEMCALRecoUtils::kPhoton);
25   reco->SetW0(4.5);
26   
27   reco->SetPositionAlgorithm(AliEMCALRecoUtils::kPosTowerGlobal);
28   
29   TGeoHMatrix *matrix[4];
30   
31   double rotationMatrix[4][9] = {-0.014587, -0.999892, -0.002031, 0.999892, -0.014591,  0.001979, -0.002009, -0.002002,  0.999996,
32     -0.014587,  0.999892,  0.002031, 0.999892,  0.014591, -0.001979, -0.002009,  0.002002, -0.999996,
33     -0.345864, -0.938278, -0.003412, 0.938276, -0.345874,  0.003010, -0.004004, -0.002161,  0.999990,
34     -0.345861,  0.938280,  0.003412, 0.938276,  0.345874, -0.003010, -0.004004,  0.002161, -0.999990};
35   
36   double translationMatrix[4][3] = {0.351659,    447.576446,  176.269742,
37     1.062577,    446.893974, -173.728870,
38     -154.213287, 419.306156,  176.753692,
39     -153.018950, 418.623681, -173.243605};
40   for(int j=0; j<4; j++)
41   {
42     matrix[j] = new TGeoHMatrix();
43     matrix[j]->SetRotation(rotationMatrix[j]);
44     matrix[j]->SetTranslation(translationMatrix[j]);
45     matrix[j]->Print();
46     filter->SetEMCALGeometryMatrixInSM(matrix[j],j);
47   }
48   
49   filter->SwitchOnLoadOwnEMCALGeometryMatrices();
50   
51   reco->SetNonLinearityFunction(AliEMCALRecoUtils::kNoCorrection);
52   
53   //Time dependent corrections    
54   //Recover file from alien  /alice/cern.ch/user/g/gconesab/TimeDepCorrectionDB
55 //  reco->SwitchOnTimeDepCorrection();
56 //  char cmd[200] ;
57 //  sprintf(cmd, ".!tar xvfz CorrectionFiles.tgz") ;
58 //  gROOT->ProcessLine(cmd) ;
59   
60   //Recalibration factors
61   //Recover the file from alien  /alice/cern.ch/user/g/gconesab/RecalDB
62 //  reco->SwitchOnRecalibration();
63 //  TFile * f = new TFile("RecalibrationFactors.root","read");
64 //  TH2F * h0 = (TH2F*)f->Get("EMCALRecalFactors_SM0");
65 //  TH2F * h1 = (TH2F*)f->Get("EMCALRecalFactors_SM1");
66 //  TH2F * h2 = (TH2F*)f->Get("EMCALRecalFactors_SM2");
67 //  TH2F * h3 = (TH2F*)f->Get("EMCALRecalFactors_SM3");
68 //  
69 //  reco->SetEMCALChannelRecalibrationFactors(0,h0);
70 //  reco->SetEMCALChannelRecalibrationFactors(1,h1);
71 //  reco->SetEMCALChannelRecalibrationFactors(2,h2);
72 //  reco->SetEMCALChannelRecalibrationFactors(3,h3);
73 //  
74 //  //Bad channels
75 //  //Recover the file from alien  /alice/cern.ch/user/g/gconesab/BadChannelsDB
76 //  reco->SwitchOnBadChannelsRemoval();
77 //  reco->SwitchOnDistToBadChannelRecalculation();
78 //  TFile * fbad = new TFile("BadChannels.root","read");
79 //  TH2I * hbad0 = (TH2I*)fbad->Get("EMCALBadChannelMap_Mod0");
80 //  TH2I * hbad1 = (TH2I*)fbad->Get("EMCALBadChannelMap_Mod1");
81 //  TH2I * hbad2 = (TH2I*)fbad->Get("EMCALBadChannelMap_Mod2");
82 //  TH2I * hbad3 = (TH2I*)fbad->Get("EMCALBadChannelMap_Mod3");
83 //  reco->SetEMCALChannelStatusMap(0,hbad0);
84 //  reco->SetEMCALChannelStatusMap(1,hbad1);
85 //  reco->SetEMCALChannelStatusMap(2,hbad2);
86 //  reco->SetEMCALChannelStatusMap(3,hbad3);
87 //  
88   //reco->Print("");
89   filter->PrintInfo(); 
90   mgr->AddTask(filter);
91   
92
93   // Create containers for input/output
94   AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
95   AliAnalysisDataContainer *coutput1 = mgr->GetCommonOutputContainer();
96     
97   AliAnalysisDataContainer *coutntuple = mgr->CreateContainer("EventNtuple", TNtuple::Class(), 
98                                                               AliAnalysisManager::kOutputContainer, "eventselection.root");
99   
100   mgr->ConnectInput  (filter, 0, cinput1);
101   mgr->ConnectOutput (filter, 0, coutput1 );
102   mgr->ConnectOutput (filter, 1, coutntuple );
103   
104   return filter;
105
106 }