#include "AliVZEROEPSelectionTask.h"
#include <TList.h>
#include <TProfile.h>
#include <TFile.h>
#include <TString.h>
#include <TDirectory.h>
#include "AliLog.h"
#include "AliVEvent.h"
#include "AliAnalysisManager.h"
#include "AliOADBContainer.h"
#include "AliEventplane.h"
#include "AliCentrality.h"
ClassImp(AliVZEROEPSelectionTask)
AliVZEROEPSelectionTask::AliVZEROEPSelectionTask():
AliAnalysisTaskSE(),
fRunNumber(-1),
fUserParams(kFALSE),
fUseVZEROCentrality(kFALSE),
fVZEROEPContainer(0)
{
AliInfo("VZERO Event Plane Selection enabled.");
for(Int_t i = 0; i < 11; ++i) fX2In[i] = fY2In[i] = fX2Y2In[i] = fCos8PsiIn[i] = NULL;
}
AliVZEROEPSelectionTask::AliVZEROEPSelectionTask(const char *name):
AliAnalysisTaskSE(name),
fRunNumber(-1),
fUserParams(kFALSE),
fUseVZEROCentrality(kFALSE),
fVZEROEPContainer(0)
{
AliInfo("Event Plane Selection enabled.");
for(Int_t i = 0; i < 11; ++i) fX2In[i] = fY2In[i] = fX2Y2In[i] = fCos8PsiIn[i] = NULL;
}
AliVZEROEPSelectionTask::~AliVZEROEPSelectionTask()
{
if (fUserParams) {
for(Int_t i = 0; i < 11; ++i) {
delete fX2In[i];
fX2In[i] = NULL;
delete fY2In[i];
fY2In[i] = NULL;
delete fX2Y2In[i];
fX2Y2In[i] = NULL;
delete fCos8PsiIn[i];
fCos8PsiIn[i] = NULL;
}
}
if (fVZEROEPContainer){
delete fVZEROEPContainer;
fVZEROEPContainer = NULL;
}
}
void AliVZEROEPSelectionTask::UserCreateOutputObjects()
{
if(!fUserParams) {
TString oadbFileName = Form("%s/COMMON/EVENTPLANE/data/vzero.root", AliAnalysisManager::GetOADBPath());
TFile *fOADB = TFile::Open(oadbFileName);
if(!fOADB->IsOpen()) AliFatal(Form("Cannot open OADB file %s", oadbFileName.Data()));
AliInfo("Using Standard OADB");
AliOADBContainer *cont = (AliOADBContainer*)fOADB->Get("vzeroEP");
if (!cont) AliFatal("Cannot fetch OADB container for VZERO EP selection");
fVZEROEPContainer = new AliOADBContainer(*cont);
fOADB->Close();
delete fOADB;
}
}
void AliVZEROEPSelectionTask::UserExec(Option_t *)
{
AliVEvent* event = InputEvent();
if (!(fRunNumber == event->GetRunNumber())) {
fRunNumber = event->GetRunNumber();
SetParamsFromOADB();
}
AliCentrality *centrality = event->GetCentrality();
Float_t percentile = (fUseVZEROCentrality) ? centrality->GetCentralityPercentile("V0M") : centrality->GetCentralityPercentile("CL1");
AliEventplane *esdEP = event->GetEventplane();
if(esdEP) SetEventplaneParams(esdEP,percentile);
}
void AliVZEROEPSelectionTask::Terminate(Option_t *)
{
}
void AliVZEROEPSelectionTask::SetEventplaneParams(AliEventplane *esdEP,Float_t percentile)
{
if(!esdEP)
AliFatal("No event plane received");
if (percentile < 0 || percentile > 100) {
for(Int_t ring = 0; ring < 11; ++ring) esdEP->SetVZEROEPParams(ring,0.,0.,1.,1.,0.,0.,0.);
return;
}
for(Int_t ring = 0; ring < 11; ++ring) {
Int_t ibin = fX2In[ring]->FindBin(percentile);
if (fX2In[ring]->GetBinEntries(ibin) == 0) {
esdEP->SetVZEROEPParams(ring,0.,0.,1.,1.,0.,0.,0.);
continue;
}
Double_t meanX2 = fX2In[ring]->GetBinContent(ibin);
Double_t meanY2 = fY2In[ring]->GetBinContent(ibin);
Double_t sigmaX2 = fX2In[ring]->GetBinError(ibin);
Double_t sigmaY2 = fY2In[ring]->GetBinError(ibin);
Double_t rho = (fX2Y2In[ring]->GetBinContent(ibin)-meanX2*meanY2)/sigmaX2/sigmaY2;
Double_t b = rho*sigmaX2*sigmaY2*
TMath::Sqrt(2.*(sigmaX2*sigmaX2+sigmaY2*sigmaY2-2.*sigmaX2*sigmaY2*TMath::Sqrt(1.-rho*rho))/
((sigmaX2*sigmaX2-sigmaY2*sigmaY2)*(sigmaX2*sigmaX2-sigmaY2*sigmaY2)+
4.*sigmaX2*sigmaX2*sigmaY2*sigmaY2*rho*rho));
Double_t aPlus = TMath::Sqrt(2.*sigmaX2*sigmaX2-b*b);
Double_t aMinus= TMath::Sqrt(2.*sigmaY2*sigmaY2-b*b);
Double_t lambdaPlus = b/aPlus;
Double_t lambdaMinus = b/aMinus;
Double_t cos8Psi = fCos8PsiIn[ring]->GetBinContent(ibin);
esdEP->SetVZEROEPParams(ring,meanX2,meanY2,aPlus,aMinus,lambdaPlus,lambdaMinus,cos8Psi);
}
}
void AliVZEROEPSelectionTask::SetParamsFromOADB()
{
if(!fUserParams) {
TList *list = (TList*)fVZEROEPContainer->GetObject(fRunNumber, "Default");
if (!list) AliFatal(Form("Cannot find VZERO OADB list for run %d", fRunNumber));
SetHistograms(list);
}
else
AliInfo("Using custom VZERO event-plane params");
}
void AliVZEROEPSelectionTask::SetUserParams(const char* inFileName, const char* listName)
{
fUserParams = kTRUE;
TFile f(inFileName);
TList* list = (TList*)f.Get(listName);
if (!list) AliFatal(Form("Cannot find list %s in file %s", listName, inFileName));
SetHistograms(list);
f.Close();
}
void AliVZEROEPSelectionTask::SetHistograms(TList *list)
{
for(Int_t i = 0; i < 11; ++i) {
if (fX2In[i]) delete fX2In[i];
fX2In[i] = (TProfile*)list->FindObject(Form("fX2_%d",i))->Clone(Form("fX2In_%d",i));
fX2In[i]->SetDirectory(0);
if (fY2In[i]) delete fY2In[i];
fY2In[i] = (TProfile*)list->FindObject(Form("fY2_%d",i))->Clone(Form("fY2In_%d",i));
fY2In[i]->SetDirectory(0);
if (fX2Y2In[i]) delete fX2Y2In[i];
fX2Y2In[i] = (TProfile*)list->FindObject(Form("fX2Y2_%d",i))->Clone(Form("fX2Y2In_%d",i));
fX2Y2In[i]->SetDirectory(0);
if (fCos8PsiIn[i]) delete fCos8PsiIn[i];
fCos8PsiIn[i] = (TProfile*)list->FindObject(Form("fCos8Psi_%d",i))->Clone(Form("fCos8PsiIn_%d",i));
fCos8PsiIn[i]->SetDirectory(0);
}
}
AliVZEROEPSelectionTask.cxx:1 AliVZEROEPSelectionTask.cxx:2 AliVZEROEPSelectionTask.cxx:3 AliVZEROEPSelectionTask.cxx:4 AliVZEROEPSelectionTask.cxx:5 AliVZEROEPSelectionTask.cxx:6 AliVZEROEPSelectionTask.cxx:7 AliVZEROEPSelectionTask.cxx:8 AliVZEROEPSelectionTask.cxx:9 AliVZEROEPSelectionTask.cxx:10 AliVZEROEPSelectionTask.cxx:11 AliVZEROEPSelectionTask.cxx:12 AliVZEROEPSelectionTask.cxx:13 AliVZEROEPSelectionTask.cxx:14 AliVZEROEPSelectionTask.cxx:15 AliVZEROEPSelectionTask.cxx:16 AliVZEROEPSelectionTask.cxx:17 AliVZEROEPSelectionTask.cxx:18 AliVZEROEPSelectionTask.cxx:19 AliVZEROEPSelectionTask.cxx:20 AliVZEROEPSelectionTask.cxx:21 AliVZEROEPSelectionTask.cxx:22 AliVZEROEPSelectionTask.cxx:23 AliVZEROEPSelectionTask.cxx:24 AliVZEROEPSelectionTask.cxx:25 AliVZEROEPSelectionTask.cxx:26 AliVZEROEPSelectionTask.cxx:27 AliVZEROEPSelectionTask.cxx:28 AliVZEROEPSelectionTask.cxx:29 AliVZEROEPSelectionTask.cxx:30 AliVZEROEPSelectionTask.cxx:31 AliVZEROEPSelectionTask.cxx:32 AliVZEROEPSelectionTask.cxx:33 AliVZEROEPSelectionTask.cxx:34 AliVZEROEPSelectionTask.cxx:35 AliVZEROEPSelectionTask.cxx:36 AliVZEROEPSelectionTask.cxx:37 AliVZEROEPSelectionTask.cxx:38 AliVZEROEPSelectionTask.cxx:39 AliVZEROEPSelectionTask.cxx:40 AliVZEROEPSelectionTask.cxx:41 AliVZEROEPSelectionTask.cxx:42 AliVZEROEPSelectionTask.cxx:43 AliVZEROEPSelectionTask.cxx:44 AliVZEROEPSelectionTask.cxx:45 AliVZEROEPSelectionTask.cxx:46 AliVZEROEPSelectionTask.cxx:47 AliVZEROEPSelectionTask.cxx:48 AliVZEROEPSelectionTask.cxx:49 AliVZEROEPSelectionTask.cxx:50 AliVZEROEPSelectionTask.cxx:51 AliVZEROEPSelectionTask.cxx:52 AliVZEROEPSelectionTask.cxx:53 AliVZEROEPSelectionTask.cxx:54 AliVZEROEPSelectionTask.cxx:55 AliVZEROEPSelectionTask.cxx:56 AliVZEROEPSelectionTask.cxx:57 AliVZEROEPSelectionTask.cxx:58 AliVZEROEPSelectionTask.cxx:59 AliVZEROEPSelectionTask.cxx:60 AliVZEROEPSelectionTask.cxx:61 AliVZEROEPSelectionTask.cxx:62 AliVZEROEPSelectionTask.cxx:63 AliVZEROEPSelectionTask.cxx:64 AliVZEROEPSelectionTask.cxx:65 AliVZEROEPSelectionTask.cxx:66 AliVZEROEPSelectionTask.cxx:67 AliVZEROEPSelectionTask.cxx:68 AliVZEROEPSelectionTask.cxx:69 AliVZEROEPSelectionTask.cxx:70 AliVZEROEPSelectionTask.cxx:71 AliVZEROEPSelectionTask.cxx:72 AliVZEROEPSelectionTask.cxx:73 AliVZEROEPSelectionTask.cxx:74 AliVZEROEPSelectionTask.cxx:75 AliVZEROEPSelectionTask.cxx:76 AliVZEROEPSelectionTask.cxx:77 AliVZEROEPSelectionTask.cxx:78 AliVZEROEPSelectionTask.cxx:79 AliVZEROEPSelectionTask.cxx:80 AliVZEROEPSelectionTask.cxx:81 AliVZEROEPSelectionTask.cxx:82 AliVZEROEPSelectionTask.cxx:83 AliVZEROEPSelectionTask.cxx:84 AliVZEROEPSelectionTask.cxx:85 AliVZEROEPSelectionTask.cxx:86 AliVZEROEPSelectionTask.cxx:87 AliVZEROEPSelectionTask.cxx:88 AliVZEROEPSelectionTask.cxx:89 AliVZEROEPSelectionTask.cxx:90 AliVZEROEPSelectionTask.cxx:91 AliVZEROEPSelectionTask.cxx:92 AliVZEROEPSelectionTask.cxx:93 AliVZEROEPSelectionTask.cxx:94 AliVZEROEPSelectionTask.cxx:95 AliVZEROEPSelectionTask.cxx:96 AliVZEROEPSelectionTask.cxx:97 AliVZEROEPSelectionTask.cxx:98 AliVZEROEPSelectionTask.cxx:99 AliVZEROEPSelectionTask.cxx:100 AliVZEROEPSelectionTask.cxx:101 AliVZEROEPSelectionTask.cxx:102 AliVZEROEPSelectionTask.cxx:103 AliVZEROEPSelectionTask.cxx:104 AliVZEROEPSelectionTask.cxx:105 AliVZEROEPSelectionTask.cxx:106 AliVZEROEPSelectionTask.cxx:107 AliVZEROEPSelectionTask.cxx:108 AliVZEROEPSelectionTask.cxx:109 AliVZEROEPSelectionTask.cxx:110 AliVZEROEPSelectionTask.cxx:111 AliVZEROEPSelectionTask.cxx:112 AliVZEROEPSelectionTask.cxx:113 AliVZEROEPSelectionTask.cxx:114 AliVZEROEPSelectionTask.cxx:115 AliVZEROEPSelectionTask.cxx:116 AliVZEROEPSelectionTask.cxx:117 AliVZEROEPSelectionTask.cxx:118 AliVZEROEPSelectionTask.cxx:119 AliVZEROEPSelectionTask.cxx:120 AliVZEROEPSelectionTask.cxx:121 AliVZEROEPSelectionTask.cxx:122 AliVZEROEPSelectionTask.cxx:123 AliVZEROEPSelectionTask.cxx:124 AliVZEROEPSelectionTask.cxx:125 AliVZEROEPSelectionTask.cxx:126 AliVZEROEPSelectionTask.cxx:127 AliVZEROEPSelectionTask.cxx:128 AliVZEROEPSelectionTask.cxx:129 AliVZEROEPSelectionTask.cxx:130 AliVZEROEPSelectionTask.cxx:131 AliVZEROEPSelectionTask.cxx:132 AliVZEROEPSelectionTask.cxx:133 AliVZEROEPSelectionTask.cxx:134 AliVZEROEPSelectionTask.cxx:135 AliVZEROEPSelectionTask.cxx:136 AliVZEROEPSelectionTask.cxx:137 AliVZEROEPSelectionTask.cxx:138 AliVZEROEPSelectionTask.cxx:139 AliVZEROEPSelectionTask.cxx:140 AliVZEROEPSelectionTask.cxx:141 AliVZEROEPSelectionTask.cxx:142 AliVZEROEPSelectionTask.cxx:143 AliVZEROEPSelectionTask.cxx:144 AliVZEROEPSelectionTask.cxx:145 AliVZEROEPSelectionTask.cxx:146 AliVZEROEPSelectionTask.cxx:147 AliVZEROEPSelectionTask.cxx:148 AliVZEROEPSelectionTask.cxx:149 AliVZEROEPSelectionTask.cxx:150 AliVZEROEPSelectionTask.cxx:151 AliVZEROEPSelectionTask.cxx:152 AliVZEROEPSelectionTask.cxx:153 AliVZEROEPSelectionTask.cxx:154 AliVZEROEPSelectionTask.cxx:155 AliVZEROEPSelectionTask.cxx:156 AliVZEROEPSelectionTask.cxx:157 AliVZEROEPSelectionTask.cxx:158 AliVZEROEPSelectionTask.cxx:159 AliVZEROEPSelectionTask.cxx:160 AliVZEROEPSelectionTask.cxx:161 AliVZEROEPSelectionTask.cxx:162 AliVZEROEPSelectionTask.cxx:163 AliVZEROEPSelectionTask.cxx:164 AliVZEROEPSelectionTask.cxx:165 AliVZEROEPSelectionTask.cxx:166 AliVZEROEPSelectionTask.cxx:167 AliVZEROEPSelectionTask.cxx:168 AliVZEROEPSelectionTask.cxx:169 AliVZEROEPSelectionTask.cxx:170 AliVZEROEPSelectionTask.cxx:171 AliVZEROEPSelectionTask.cxx:172 AliVZEROEPSelectionTask.cxx:173 AliVZEROEPSelectionTask.cxx:174 AliVZEROEPSelectionTask.cxx:175 AliVZEROEPSelectionTask.cxx:176 AliVZEROEPSelectionTask.cxx:177 AliVZEROEPSelectionTask.cxx:178 AliVZEROEPSelectionTask.cxx:179 AliVZEROEPSelectionTask.cxx:180 AliVZEROEPSelectionTask.cxx:181 AliVZEROEPSelectionTask.cxx:182 AliVZEROEPSelectionTask.cxx:183 AliVZEROEPSelectionTask.cxx:184 AliVZEROEPSelectionTask.cxx:185 AliVZEROEPSelectionTask.cxx:186 AliVZEROEPSelectionTask.cxx:187 AliVZEROEPSelectionTask.cxx:188 AliVZEROEPSelectionTask.cxx:189 AliVZEROEPSelectionTask.cxx:190 AliVZEROEPSelectionTask.cxx:191 AliVZEROEPSelectionTask.cxx:192 AliVZEROEPSelectionTask.cxx:193 AliVZEROEPSelectionTask.cxx:194 AliVZEROEPSelectionTask.cxx:195 AliVZEROEPSelectionTask.cxx:196 AliVZEROEPSelectionTask.cxx:197 AliVZEROEPSelectionTask.cxx:198 AliVZEROEPSelectionTask.cxx:199 AliVZEROEPSelectionTask.cxx:200 AliVZEROEPSelectionTask.cxx:201 AliVZEROEPSelectionTask.cxx:202 AliVZEROEPSelectionTask.cxx:203 AliVZEROEPSelectionTask.cxx:204 AliVZEROEPSelectionTask.cxx:205 AliVZEROEPSelectionTask.cxx:206 AliVZEROEPSelectionTask.cxx:207 AliVZEROEPSelectionTask.cxx:208 AliVZEROEPSelectionTask.cxx:209 AliVZEROEPSelectionTask.cxx:210 AliVZEROEPSelectionTask.cxx:211 AliVZEROEPSelectionTask.cxx:212 AliVZEROEPSelectionTask.cxx:213 AliVZEROEPSelectionTask.cxx:214 AliVZEROEPSelectionTask.cxx:215 AliVZEROEPSelectionTask.cxx:216 AliVZEROEPSelectionTask.cxx:217 AliVZEROEPSelectionTask.cxx:218 AliVZEROEPSelectionTask.cxx:219 AliVZEROEPSelectionTask.cxx:220 AliVZEROEPSelectionTask.cxx:221 AliVZEROEPSelectionTask.cxx:222 AliVZEROEPSelectionTask.cxx:223 AliVZEROEPSelectionTask.cxx:224 AliVZEROEPSelectionTask.cxx:225