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)
{
//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.
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);