1 AliAnalysisTaskEMCALClusterize* AddTaskEMCALClusterize(
2 const Int_t bMC = kFALSE,
3 const TString name = "V1Unfold",
4 const TString trigger = "",
6 const TString pass = "pass3",
7 const Bool_t tm = kTRUE,
8 const Int_t minEcell = 50,
9 const Int_t minEseed = 100,
10 const Int_t maxDeltaT = 250,
11 const Int_t timeWindow = 1000,
12 const Int_t minEUnf = 15,
13 const Int_t minFrac = 1
16 // Get the pointer to the existing analysis manager via the static access method.
17 //==============================================================================
18 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
20 ::Error("AddTaskEMCALClusterize", "No analysis manager to connect to.");
24 // Check the analysis type using the event handlers connected to the analysis manager.
25 //==============================================================================
26 if (!mgr->GetInputEventHandler()) {
27 ::Error("AddTaskEMCALClusterize", "This task requires an input event handler");
31 AliAnalysisTaskEMCALClusterize* clusterize = new AliAnalysisTaskEMCALClusterize(Form("EMCALClusterize%s_Ecell%d_Eseed%d_DT%d_WT%d",
32 name.Data(),minEcell,minEseed,maxDeltaT,timeWindow));
34 clusterize->SetAODBranchName(Form("%s_Ecell%d_Eseed%d_DT%d_WT%d",
35 name.Data(),minEcell,minEseed,maxDeltaT,timeWindow));
37 printf("Created Branch Name: %s_Ecell%d_Eseed%d_DT%d_WT%d\n",name.Data(),minEcell,minEseed, maxDeltaT,timeWindow);
38 //clusterize->SetOCDBPath("local://$ALICE_ROOT/OCDB");
40 clusterize->SwitchOffFillAODCaloCells();
41 clusterize->SwitchOffFillAODHeader();
42 clusterize->FillAODFile(kFALSE); // fill aod.root with clusters?, not really needed for analysis.
44 if(tm) clusterize->SwitchOnTrackMatching();
45 else clusterize->SwitchOffTrackMatching();
47 // Settings for LHC11a
48 if(run > 140000 && run <= 146860) {
49 clusterize->SwitchOnLEDEventsRemoval() ;
50 printf("Clusterizer: Reject LED events\n");
52 else clusterize->SwitchOffLEDEventsRemoval() ;
54 printf(" ---- Clusterize RUN >%d< ---- \n",run);
56 if (run > 140000) clusterize->SetGeometryName("EMCAL_COMPLETEV1");
57 else if(run > 171000) clusterize->SetGeometryName("EMCAL_COMPLETE12SMV1");
58 else clusterize->SetGeometryName("EMCAL_FIRSTYEARV1");
60 AliEMCALRecParam * params = clusterize->GetRecParam();
64 //printf("**** InputHandler %s ***\n",(mgr->GetInputEventHandler())->ClassName());
65 TString sHandler((mgr->GetInputEventHandler())->ClassName());
66 if(sHandler.Contains("AOD")){
67 printf("AliAnalysisTaskEMCALClusterize - Open time cuts for AODs\n");
68 params->SetTimeCut(1e6);//Open this cut for AODs
69 params->SetTimeMin(-1); //Open this cut for AODs
70 params->SetTimeMax(1e6);//Open this cut for AODs
73 printf("AliAnalysisTaskEMCALClusterize - Set time cuts for ESDs\n");
74 if(maxDeltaT > 1) params->SetTimeCut(maxDeltaT*1.e-9);
75 else { params->SetTimeCut(250*1.e-9); printf("default maxDeltaT = 250 ns\n"); }// Same as in reco
78 params->SetTimeMin(-1*timeWindow*1.e-9);
79 params->SetTimeMax(timeWindow*1.e-9);
81 else{ // same as in reco
82 params->SetTimeMin(425*1.e-9);
83 params->SetTimeMax(825*1.e-9);
84 printf("default time window 425 ns < T < 825 ns\n");
88 params->SetClusteringThreshold(minEseed/1.e3);
89 params->SetMinECut (minEcell/1.e3);
92 if(name.Contains("V2")) params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerv2);
93 if(name.Contains("V1")) params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerv1);
94 if(name.Contains("NxN"))params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerNxN);
98 if(name.Contains("JustUnfold"))
99 clusterize->JustUnfold(kTRUE); // if TRUE, do just unfolding, do not recluster cells
101 clusterize->JustUnfold(kFALSE);
103 if (name.Contains("Unfold")){
105 clusterize->SwitchOnCellEnergySelection();
106 clusterize->SetCellCuts(minEUnf/1000.,minFrac/10000.);
107 printf("AliAnalysisTaskEMCALClusterize - Cuts: min E %f, frac %f\n",minEUnf/1000.,minFrac/10000.);
108 //clusterize->SwitchOffCellEnergySelection();
110 if(!name.Contains("Just"))
111 params->SetUnfold(kTRUE);
113 params->SetUnfold(kFALSE);
117 TGeoHMatrix* matrix[12];
118 AliEMCALRecoUtils * reco = clusterize->GetRecoUtils();
120 gROOT->LoadMacro("ConfigureEMCALRecoUtils.C"); // $ALICE_ROOT/PWGGA/EMCALTasks/macros
121 ConfigureEMCALRecoUtils(
125 "",//AODB path, default
132 clusterize->SetImportGeometryFromFile(kTRUE); // import geometry.root file
134 for (Int_t mod=0;mod<12;mod++)
136 //((TGeoHMatrix*) mobj->At(mod))->Print();
137 clusterize->SetGeometryMatrixInSM(matrix[mod],mod);
140 clusterize->SwitchOnLoadOwnGeometryMatrices();
143 printf("AliAnalysisTaskEMCALClusterize ---Data with kEMC7 Trigger and clusterizer %s\n",name.Data());
144 clusterize->SelectCollisionCandidates(AliVEvent::kEMC7);
146 else if (trigger=="INT7"){
147 printf("AliAnalysisTaskEMCALClusterize ---Data with kINT7 Trigger and clusterizer %s\n",name.Data());
148 clusterize->SelectCollisionCandidates(AliVEvent::kINT7);
150 else if(trigger=="EMC1"){
151 printf("AliAnalysisTaskEMCALClusterize ---Data with kEMC1 Trigger and clusterizer %s\n",name.Data());
152 clusterize->SelectCollisionCandidates(AliVEvent::kEMC1);
154 else if(trigger=="MB"){
155 printf("AliAnalysisTaskEMCALClusterize ---Data with kMB Trigger and clusterizer %s\n",name.Data());
156 clusterize->SelectCollisionCandidates(AliVEvent::kMB);
159 mgr->AddTask(clusterize);
161 // Create containers for input/output
162 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer() ;
163 AliAnalysisDataContainer *coutput1 = mgr->GetCommonOutputContainer() ;
165 mgr->ConnectInput (clusterize, 0, cinput1 );
166 mgr->ConnectOutput (clusterize, 0, coutput1 );