]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/CaloCalib/macros/anaEMCALCalib.C
Move some methods from EMCALcalibration task and CalorimterUtils class to AliEMCALRec...
[u/mrichter/AliRoot.git] / PWG4 / CaloCalib / macros / anaEMCALCalib.C
index f44f4c613d4bbae37aedb61a768cecdf5aeab301..0daa9e3b27b2e7189d01d337e2f61bf1e4e6d130 100644 (file)
@@ -27,9 +27,75 @@ Int_t kFile = 1; // Number of files
 char * kXML = "collection.xml";
 //---------------------------------------------------------------------------
 
-const TString kInputData = "AOD"; //ESD, AOD, MC
+const TString kInputData = "ESD"; //ESD, AOD, MC
 TString kTreeName = "esdTree";
-Bool_t copy = kFALSE;
+Bool_t copy = kTRUE;
+
+
+void SetRecoUtilsParams(AliEMCALRecoUtils* reco){
+
+    reco->SetParticleType(AliEMCALRecoUtils::kPhoton);
+    reco->SetW0(4.);
+
+    reco->SetPositionAlgorithm(AliEMCALRecoUtils::kPosTowerGlobal);
+    reco->SetMisalTransShift(0,1.134);   reco->SetMisalTransShift(1,8.2); reco->SetMisalTransShift(2,1.197);
+    reco->SetMisalTransShift(3,-3.093);  reco->SetMisalTransShift(5,6.82);reco->SetMisalTransShift(5,1.635);
+
+    //reco->SetPositionAlgorithm(AliEMCALRecoUtils::kPosTowerIndex);
+    //reco->SetMisalTransShift(0,1.08);   reco->SetMisalTransShift(1,8.35); reco->SetMisalTransShift(2,1.12);
+    //reco->SetMisalRotShift(3,-8.05);    reco->SetMisalRotShift(4,8.05);  
+    //reco->SetMisalTransShift(3,-0.42);  reco->SetMisalTransShift(5,1.55);
+
+    reco->SetNonLinearityFunction(AliEMCALRecoUtils::kPi0GammaGamma);
+    reco->SetNonLinearityParam(0,1.04);     reco->SetNonLinearityParam(1,-0.1445);
+    reco->SetNonLinearityParam(2,1.046);    
+
+    reco->SetNonLinearityFunction(AliEMCALRecoUtils::kPi0GammaConversion);
+    reco->SetNonLinearityParam(0,1.033);     reco->SetNonLinearityParam(1,0.0566186);
+    reco->SetNonLinearityParam(2,0.982133);    
+
+
+     reco->SetNonLinearityFunction(AliEMCALRecoUtils::kPi0MC);
+     reco->SetNonLinearityParam(0,1.001);     reco->SetNonLinearityParam(1,-0.01264);
+     reco->SetNonLinearityParam(2,-0.03632);    
+     reco->SetNonLinearityParam(3,0.1798);     reco->SetNonLinearityParam(4,-0.522);
+
+     reco->SwitchOnRecalibration();
+     TFile * f = new TFile("RecalibrationFactors.root","read");
+     TH2F * h0 = (TH2F*)f->Get("EMCALRecalFactors_SM0")->Clone();
+     TH2F * h1 = (TH2F*)f->Get("EMCALRecalFactors_SM1")->Clone();
+     TH2F * h2 = (TH2F*)f->Get("EMCALRecalFactors_SM2")->Clone();
+     TH2F * h3 = (TH2F*)f->Get("EMCALRecalFactors_SM3")->Clone();
+
+     reco->SetEMCALChannelRecalibrationFactors(0,h0);
+     reco->SetEMCALChannelRecalibrationFactors(1,h1);
+     reco->SetEMCALChannelRecalibrationFactors(2,h2);
+     reco->SetEMCALChannelRecalibrationFactors(3,h3);
+
+    reco->SwitchOnBadChannelsRemoval();
+    // SM0
+    reco->SetEMCALChannelStatus(0,3,13);  reco->SetEMCALChannelStatus(0,44,1); reco->SetEMCALChannelStatus(0,3,13); 
+    reco->SetEMCALChannelStatus(0,20,7);  reco->SetEMCALChannelStatus(0,38,2);   
+    // SM1
+    reco->SetEMCALChannelStatus(1,4,7);   reco->SetEMCALChannelStatus(1,4,13);  reco->SetEMCALChannelStatus(1,9,20); 
+    reco->SetEMCALChannelStatus(1,14,15); reco->SetEMCALChannelStatus(1,23,16); reco->SetEMCALChannelStatus(1,32,23); 
+    reco->SetEMCALChannelStatus(1,37,5);  reco->SetEMCALChannelStatus(1,40,1);  reco->SetEMCALChannelStatus(1,40,2);
+    reco->SetEMCALChannelStatus(1,40,5);  reco->SetEMCALChannelStatus(1,41,0);  reco->SetEMCALChannelStatus(1,41,1);
+    reco->SetEMCALChannelStatus(1,41,2);  reco->SetEMCALChannelStatus(1,41,4);
+    // SM2        
+    reco->SetEMCALChannelStatus(2,14,15); reco->SetEMCALChannelStatus(2,18,16); reco->SetEMCALChannelStatus(2,18,17); 
+    reco->SetEMCALChannelStatus(2,18,18); reco->SetEMCALChannelStatus(2,18,20); reco->SetEMCALChannelStatus(2,18,21); 
+    reco->SetEMCALChannelStatus(2,18,23); reco->SetEMCALChannelStatus(2,19,16); reco->SetEMCALChannelStatus(2,19,17); 
+    reco->SetEMCALChannelStatus(2,19,19); reco->SetEMCALChannelStatus(2,19,20); reco->SetEMCALChannelStatus(2,19,21); 
+    reco->SetEMCALChannelStatus(2,19,22);
+    //SM3
+    reco->SetEMCALChannelStatus(3,4,7);
+
+    reco->SetNumberOfCellsFromEMCALBorder(1);
+
+    //reco->Print("");
+
+}
 
 void anaEMCALCalib(Int_t mode=mLocal)
 {
@@ -46,7 +112,7 @@ void anaEMCALCalib(Int_t mode=mLocal)
   //gSystem->Unload("libPWG4CaloCalib.so");
   //Try to set the new library
   //gSystem->Load("./PWG4CaloCalib/libPWG4CaloCalib.so");
-  gSystem->ListLibraries();
+  //gSystem->ListLibraries();
 
   //-------------------------------------------------------------------------------------------------
   //Create chain from ESD and from cross sections files, look below for options.
@@ -109,98 +175,66 @@ void anaEMCALCalib(Int_t mode=mLocal)
 
       gROOT->LoadMacro("AddTaskPhysicsSelection.C");
       AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();
-      if(!copy){
-       gROOT->LoadMacro("AddTaskESDFilter.C");
-       AliAnalysisTaskESDfilter *esdfilter = AddTaskESDFilter(kFALSE);
-      }
+//       if(!copy){
+//     gROOT->LoadMacro("AddTaskESDFilter.C");
+//     AliAnalysisTaskESDfilter *esdfilter = AddTaskESDFilter(kFALSE);
+//       }
     }
     
+    // Create containers for input/output
+    AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
+    if(copy) {
 
-   
-    AliAnalysisTaskEMCALPi0CalibSelection * pi0calib = new AliAnalysisTaskEMCALPi0CalibSelection ("EMCALPi0Calibration");
-    //pi0calib->SetDebugLevel(10); 
-    pi0calib->CopyAOD(copy);
-    pi0calib->SetClusterMinEnergy(0.5);
-    pi0calib->SetClusterMaxEnergy(15.);
-    //pi0calib->SetAsymmetryCut(0.7);
-    pi0calib->SetClusterMinNCells(0);
-    pi0calib->SetNCellsGroup(0);
-    pi0calib->SwitchOnBadChannelsRemoval();
-    pi0calib->SwitchOffSameSM();
-    pi0calib->SwitchOnOldAODs();
-    pi0calib->SetNumberOfCellsFromEMCALBorder(1);
-    AliEMCALRecoUtils * reco = pi0calib->GetEMCALRecoUtils();
-
-    reco->SetParticleType(AliEMCALRecoUtils::kPhoton);
-    reco->SetW0(4.);
-
-    reco->SetPositionAlgorithm(AliEMCALRecoUtils::kPosTowerGlobal);
-    reco->SetMisalTransShift(0,1.134);   reco->SetMisalTransShift(1,8.2); reco->SetMisalTransShift(2,1.197);
-    reco->SetMisalTransShift(3,-3.093);  reco->SetMisalTransShift(5,6.82);reco->SetMisalTransShift(5,1.635);
-
-    //reco->SetPositionAlgorithm(AliEMCALRecoUtils::kPosTowerIndex);
-    //reco->SetMisalTransShift(0,1.08);   reco->SetMisalTransShift(1,8.35); reco->SetMisalTransShift(2,1.12);
-    //reco->SetMisalRotShift(3,-8.05);    reco->SetMisalRotShift(4,8.05);  
-    //reco->SetMisalTransShift(3,-0.42);  reco->SetMisalTransShift(5,1.55);
-
-    reco->SetNonLinearityFunction(AliEMCALRecoUtils::kPi0GammaGamma);
-    reco->SetNonLinearityParam(0,1.04);     reco->SetNonLinearityParam(1,-0.1445);
-    reco->SetNonLinearityParam(2,1.046);    
+      AliAnalysisDataContainer *coutput1 = mgr->GetCommonOutputContainer();
 
-//     reco->SetNonLinearityFunction(AliEMCALRecoUtils::kPi0GammaConversion);
-//     reco->SetNonLinearityParam(0,1.033);     reco->SetNonLinearityParam(1,0.0566186);
-//     reco->SetNonLinearityParam(2,0.982133);    
+      AliAnalysisTaskCaloFilter * filter = new AliAnalysisTaskCaloFilter("EMCALFilter");
+      //filter->SelectCollisionCandidates(); 
+      filter->SetCaloFilter(AliAnalysisTaskCaloFilter::kEMCAL);
+      filter->SwitchOnClusterCorrection();
 
+      AliEMCALRecoUtils * reco = filter->GetEMCALRecoUtils();
+      SetRecoUtilsParams(reco);
+      reco->Print("");
 
-//      reco->SetNonLinearityFunction(AliEMCALRecoUtils::kPi0MC);
-//      reco->SetNonLinearityParam(0,1.001);     reco->SetNonLinearityParam(1,-0.01264);
-//      reco->SetNonLinearityParam(2,-0.03632);    
-//      reco->SetNonLinearityParam(3,0.1798);     reco->SetNonLinearityParam(4,-0.522);
+      mgr->AddTask(filter);
 
-     reco->SwitchOnRecalibration();
-     TFile * f = new TFile("RecalibrationFactors.root","read");
-     TH2F * h0 = (TH2F*)f->Get("EMCALRecalFactors_SM0")->Clone();
-     TH2F * h1 = (TH2F*)f->Get("EMCALRecalFactors_SM1")->Clone();
-     TH2F * h2 = (TH2F*)f->Get("EMCALRecalFactors_SM2")->Clone();
-     TH2F * h3 = (TH2F*)f->Get("EMCALRecalFactors_SM3")->Clone();
-
-     reco->SetEMCALChannelRecalibrationFactors(0,h0);
-     reco->SetEMCALChannelRecalibrationFactors(1,h1);
-     reco->SetEMCALChannelRecalibrationFactors(2,h2);
-     reco->SetEMCALChannelRecalibrationFactors(3,h3);
-     reco->Print("");
+   
+    //AliAnalysisDataContainer *cout_cuts2 = mgr->CreateContainer("Cuts", TList::Class(), 
+    //                                        AliAnalysisManager::kOutputContainer, "pi0calib.root");
+    
+    mgr->ConnectInput  (filter,  0, cinput1);
+    mgr->ConnectOutput (filter, 0, coutput1 );
+    //mgr->ConnectOutput (filter, 2, cout_cuts2);
 
-    // SM0
-    pi0calib->SetEMCALChannelStatus(0,3,13);  pi0calib->SetEMCALChannelStatus(0,44,1); pi0calib->SetEMCALChannelStatus(0,3,13); 
-    pi0calib->SetEMCALChannelStatus(0,20,7);  pi0calib->SetEMCALChannelStatus(0,38,2);   
-    // SM1
-    pi0calib->SetEMCALChannelStatus(1,4,7);   pi0calib->SetEMCALChannelStatus(1,4,13);  pi0calib->SetEMCALChannelStatus(1,9,20); 
-    pi0calib->SetEMCALChannelStatus(1,14,15); pi0calib->SetEMCALChannelStatus(1,23,16); pi0calib->SetEMCALChannelStatus(1,32,23); 
-    pi0calib->SetEMCALChannelStatus(1,37,5);  pi0calib->SetEMCALChannelStatus(1,40,1);  pi0calib->SetEMCALChannelStatus(1,40,2);
-    pi0calib->SetEMCALChannelStatus(1,40,5);  pi0calib->SetEMCALChannelStatus(1,41,0);  pi0calib->SetEMCALChannelStatus(1,41,1);
-    pi0calib->SetEMCALChannelStatus(1,41,2);  pi0calib->SetEMCALChannelStatus(1,41,4);
-    // SM2        
-    pi0calib->SetEMCALChannelStatus(2,14,15); pi0calib->SetEMCALChannelStatus(2,18,16); pi0calib->SetEMCALChannelStatus(2,18,17); 
-    pi0calib->SetEMCALChannelStatus(2,18,18); pi0calib->SetEMCALChannelStatus(2,18,20); pi0calib->SetEMCALChannelStatus(2,18,21); 
-    pi0calib->SetEMCALChannelStatus(2,18,23); pi0calib->SetEMCALChannelStatus(2,19,16); pi0calib->SetEMCALChannelStatus(2,19,17); 
-    pi0calib->SetEMCALChannelStatus(2,19,19); pi0calib->SetEMCALChannelStatus(2,19,20); pi0calib->SetEMCALChannelStatus(2,19,21); 
-    pi0calib->SetEMCALChannelStatus(2,19,22);
-    //SM3
-    pi0calib->SetEMCALChannelStatus(3,4,7);
 
-    mgr->AddTask(pi0calib);
+    }
+     AliAnalysisTaskEMCALPi0CalibSelection * pi0calib = new AliAnalysisTaskEMCALPi0CalibSelection ("EMCALPi0Calibration");
+     //pi0calib->SelectCollisionCandidates(); 
+//     //pi0calib->SetDebugLevel(10); 
+     if(copy)
+       pi0calib->UseFilteredEventAsInput();
+     pi0calib->SetClusterMinEnergy(0.5);
+     pi0calib->SetClusterMaxEnergy(15.);
+     //pi0calib->SetAsymmetryCut(0.7);
+     pi0calib->SetClusterMinNCells(0);
+     pi0calib->SetNCellsGroup(0);
+     pi0calib->SwitchOnSameSM();
+     pi0calib->SwitchOffClusterCorrection();
+     //pi0calib->SwitchOnOldAODs();
+//     AliEMCALRecoUtils * reco = pi0calib->GetEMCALRecoUtils();
+//     SetRecoUtilsParams(reco);
+//     reco->Print("");
+
+     mgr->AddTask(pi0calib);
     
-    // Create containers for input/output
-    AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
-    if(copy) AliAnalysisDataContainer *coutput1 = mgr->GetCommonOutputContainer();
+
     AliAnalysisDataContainer *coutput2 = 
-      mgr->CreateContainer("pi0calib", TList::Class(), AliAnalysisManager::kOutputContainer, "pi0calib.root");
+    mgr->CreateContainer("pi0calib", TList::Class(), AliAnalysisManager::kOutputContainer, "pi0calib.root");
     
     AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer("Cuts", TList::Class(), 
-                                                              AliAnalysisManager::kOutputContainer, "pi0calib.root");
+                                                      AliAnalysisManager::kOutputContainer, "pi0calib.root");
     
     mgr->ConnectInput  (pi0calib,     0, cinput1);
-    if(copy) mgr->ConnectOutput (pi0calib, 0, coutput1 );
     mgr->ConnectOutput (pi0calib, 1, coutput2 );
     mgr->ConnectOutput (pi0calib, 2, cout_cuts);