#include <TChain.h>
#include <TH1D.h>
#include <AliCFContainer.h>
#include <AliVEvent.h>
#include <AliInputEventHandler.h>
#include <AliESDInputHandler.h>
#include <AliAnalysisManager.h>
#include <AliAODInputHandler.h>
#include <AliTriggerAnalysis.h>
#include "AliDielectron.h"
#include "AliDielectronHistos.h"
#include "AliDielectronCF.h"
#include "AliAnalysisTaskDielectronSE.h"
ClassImp(AliAnalysisTaskDielectronSE)
AliAnalysisTaskDielectronSE::AliAnalysisTaskDielectronSE() :
AliAnalysisTaskSE(),
fDielectron(0),
fSelectPhysics(kFALSE),
fTriggerMask(AliVEvent::kMB),
fTriggerOnV0AND(kFALSE),
fRejectPileup(kFALSE),
fTriggerAnalysis(0x0),
fEventFilter(0x0),
fEventStat(0x0)
{
}
AliAnalysisTaskDielectronSE::AliAnalysisTaskDielectronSE(const char *name) :
AliAnalysisTaskSE(name),
fDielectron(0),
fSelectPhysics(kFALSE),
fTriggerMask(AliVEvent::kMB),
fTriggerOnV0AND(kFALSE),
fRejectPileup(kFALSE),
fTriggerAnalysis(0x0),
fEventFilter(0x0),
fEventStat(0x0)
{
DefineInput(0,TChain::Class());
DefineOutput(1, THashList::Class());
DefineOutput(2, AliCFContainer::Class());
DefineOutput(3, TH1D::Class());
}
void AliAnalysisTaskDielectronSE::UserCreateOutputObjects()
{
if (!fDielectron){
AliError("No Dielectron framework object set !!!");
return;
}
fDielectron->Init();
if (fDielectron->GetHistogramList()){
PostData(1, const_cast<THashList*>(fDielectron->GetHistogramList()));
}
if (fDielectron->GetCFManagerPair()){
PostData(2, const_cast<AliCFContainer*>(fDielectron->GetCFManagerPair()->GetContainer()));
}
if (!fEventStat){
fEventStat=new TH1D("hEventStat","Event statistics",5,0,5);
fEventStat->GetXaxis()->SetBinLabel(1,"Before Phys. Sel.");
fEventStat->GetXaxis()->SetBinLabel(2,"After Phys. Sel.");
}
Int_t nbins=kNbinsEvent+2;
if (!fEventStat){
fEventStat=new TH1D("hEventStat","Event statistics",nbins,0,nbins);
fEventStat->GetXaxis()->SetBinLabel(1,"Before Phys. Sel.");
fEventStat->GetXaxis()->SetBinLabel(2,"After Phys. Sel.");
fEventStat->GetXaxis()->SetBinLabel(3,"Bin3 not used");
fEventStat->GetXaxis()->SetBinLabel(4,"Bin4 not used");
fEventStat->GetXaxis()->SetBinLabel(5,"Bin5 not used");
if(fTriggerOnV0AND) fEventStat->GetXaxis()->SetBinLabel(3,"V0and triggers");
if (fEventFilter) fEventStat->GetXaxis()->SetBinLabel(4,"After Event Filter");
if (fRejectPileup) fEventStat->GetXaxis()->SetBinLabel(5,"After Pileup rejection");
fEventStat->GetXaxis()->SetBinLabel((kNbinsEvent+1),Form("#splitline{1 candidate}{%s}",fDielectron->GetName()));
fEventStat->GetXaxis()->SetBinLabel((kNbinsEvent+2),Form("#splitline{With >1 candidate}{%s}",fDielectron->GetName()));
}
if (!fTriggerAnalysis) fTriggerAnalysis=new AliTriggerAnalysis;
fTriggerAnalysis->EnableHistograms();
fTriggerAnalysis->SetAnalyzeMC(AliDielectronMC::Instance()->HasMC());
PostData(3,fEventStat);
}
void AliAnalysisTaskDielectronSE::UserExec(Option_t *)
{
if (!fDielectron) return;
AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
Bool_t isESD=man->GetInputEventHandler()->IsA()==AliESDInputHandler::Class();
Bool_t isAOD=man->GetInputEventHandler()->IsA()==AliAODInputHandler::Class();
AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
if (!inputHandler) return;
if ( inputHandler->GetPIDResponse() ){
AliDielectronVarManager::SetPIDResponse( inputHandler->GetPIDResponse() );
} else {
AliFatal("This task needs the PID response attached to the input event handler!");
}
UInt_t isSelected = AliVEvent::kAny;
if( fSelectPhysics && inputHandler){
if((isESD && inputHandler->GetEventSelection()) || isAOD){
isSelected = inputHandler->IsEventSelected();
isSelected&=fTriggerMask;
}
}
fEventStat->Fill(kAllEvents);
if (isSelected==0) {
PostData(3,fEventStat);
return;
}
fEventStat->Fill(kSelectedEvents);
if(fTriggerOnV0AND){
if(isESD){if (!fTriggerAnalysis->IsOfflineTriggerFired(static_cast<AliESDEvent*>(InputEvent()), AliTriggerAnalysis::kV0AND))
return;}
if(isAOD){if(!((static_cast<AliAODEvent*>(InputEvent()))->GetVZEROData()->GetV0ADecision() == AliVVZERO::kV0BB &&
(static_cast<AliAODEvent*>(InputEvent()))->GetVZEROData()->GetV0CDecision() == AliVVZERO::kV0BB) )
return;}
}
fEventStat->Fill(kV0andEvents);
Double_t values[AliDielectronVarManager::kNMaxValues]={0};
Double_t valuesMC[AliDielectronVarManager::kNMaxValues]={0};
AliDielectronVarManager::Fill(InputEvent(),values);
Bool_t hasMC=AliDielectronMC::Instance()->HasMC();
if (hasMC) {
if (AliDielectronMC::Instance()->ConnectMCEvent())
AliDielectronVarManager::Fill(AliDielectronMC::Instance()->GetMCEvent(),valuesMC);
}
AliDielectronHistos *h=fDielectron->GetHistoManager();
if (h){
if (h->GetHistogramList()->FindObject("Event_noCuts"))
h->FillClass("Event_noCuts",AliDielectronVarManager::kNMaxValues,values);
if (hasMC && h->GetHistogramList()->FindObject("MCEvent_noCuts"))
h->FillClass("Event_noCuts",AliDielectronVarManager::kNMaxValues,valuesMC);
}
if (fEventFilter) {
if (!fEventFilter->IsSelected(InputEvent())) return;
}
fEventStat->Fill(kFilteredEvents);
if (fRejectPileup){
if (InputEvent()->IsPileupFromSPD(3,0.8,3.,2.,5.)) return;
}
fEventStat->Fill(kPileupEvents);
Double_t bz = InputEvent()->GetMagneticField();
AliKFParticle::SetField( bz );
AliDielectronPID::SetCorrVal((Double_t)InputEvent()->GetRunNumber());
fDielectron->Process(InputEvent());
Int_t ncandidates=fDielectron->GetPairArray(1)->GetEntriesFast();
if (ncandidates==1) fEventStat->Fill((kNbinsEvent));
else if (ncandidates>1) fEventStat->Fill((kNbinsEvent+1));
if (fDielectron->GetHistogramList()){
PostData(1, const_cast<THashList*>(fDielectron->GetHistogramList()));
}
if (fDielectron->GetCFManagerPair()){
PostData(2, const_cast<AliCFContainer*>(fDielectron->GetCFManagerPair()->GetContainer()));
}
PostData(3,fEventStat);
}
AliAnalysisTaskDielectronSE.cxx:1 AliAnalysisTaskDielectronSE.cxx:2 AliAnalysisTaskDielectronSE.cxx:3 AliAnalysisTaskDielectronSE.cxx:4 AliAnalysisTaskDielectronSE.cxx:5 AliAnalysisTaskDielectronSE.cxx:6 AliAnalysisTaskDielectronSE.cxx:7 AliAnalysisTaskDielectronSE.cxx:8 AliAnalysisTaskDielectronSE.cxx:9 AliAnalysisTaskDielectronSE.cxx:10 AliAnalysisTaskDielectronSE.cxx:11 AliAnalysisTaskDielectronSE.cxx:12 AliAnalysisTaskDielectronSE.cxx:13 AliAnalysisTaskDielectronSE.cxx:14 AliAnalysisTaskDielectronSE.cxx:15 AliAnalysisTaskDielectronSE.cxx:16 AliAnalysisTaskDielectronSE.cxx:17 AliAnalysisTaskDielectronSE.cxx:18 AliAnalysisTaskDielectronSE.cxx:19 AliAnalysisTaskDielectronSE.cxx:20 AliAnalysisTaskDielectronSE.cxx:21 AliAnalysisTaskDielectronSE.cxx:22 AliAnalysisTaskDielectronSE.cxx:23 AliAnalysisTaskDielectronSE.cxx:24 AliAnalysisTaskDielectronSE.cxx:25 AliAnalysisTaskDielectronSE.cxx:26 AliAnalysisTaskDielectronSE.cxx:27 AliAnalysisTaskDielectronSE.cxx:28 AliAnalysisTaskDielectronSE.cxx:29 AliAnalysisTaskDielectronSE.cxx:30 AliAnalysisTaskDielectronSE.cxx:31 AliAnalysisTaskDielectronSE.cxx:32 AliAnalysisTaskDielectronSE.cxx:33 AliAnalysisTaskDielectronSE.cxx:34 AliAnalysisTaskDielectronSE.cxx:35 AliAnalysisTaskDielectronSE.cxx:36 AliAnalysisTaskDielectronSE.cxx:37 AliAnalysisTaskDielectronSE.cxx:38 AliAnalysisTaskDielectronSE.cxx:39 AliAnalysisTaskDielectronSE.cxx:40 AliAnalysisTaskDielectronSE.cxx:41 AliAnalysisTaskDielectronSE.cxx:42 AliAnalysisTaskDielectronSE.cxx:43 AliAnalysisTaskDielectronSE.cxx:44 AliAnalysisTaskDielectronSE.cxx:45 AliAnalysisTaskDielectronSE.cxx:46 AliAnalysisTaskDielectronSE.cxx:47 AliAnalysisTaskDielectronSE.cxx:48 AliAnalysisTaskDielectronSE.cxx:49 AliAnalysisTaskDielectronSE.cxx:50 AliAnalysisTaskDielectronSE.cxx:51 AliAnalysisTaskDielectronSE.cxx:52 AliAnalysisTaskDielectronSE.cxx:53 AliAnalysisTaskDielectronSE.cxx:54 AliAnalysisTaskDielectronSE.cxx:55 AliAnalysisTaskDielectronSE.cxx:56 AliAnalysisTaskDielectronSE.cxx:57 AliAnalysisTaskDielectronSE.cxx:58 AliAnalysisTaskDielectronSE.cxx:59 AliAnalysisTaskDielectronSE.cxx:60 AliAnalysisTaskDielectronSE.cxx:61 AliAnalysisTaskDielectronSE.cxx:62 AliAnalysisTaskDielectronSE.cxx:63 AliAnalysisTaskDielectronSE.cxx:64 AliAnalysisTaskDielectronSE.cxx:65 AliAnalysisTaskDielectronSE.cxx:66 AliAnalysisTaskDielectronSE.cxx:67 AliAnalysisTaskDielectronSE.cxx:68 AliAnalysisTaskDielectronSE.cxx:69 AliAnalysisTaskDielectronSE.cxx:70 AliAnalysisTaskDielectronSE.cxx:71 AliAnalysisTaskDielectronSE.cxx:72 AliAnalysisTaskDielectronSE.cxx:73 AliAnalysisTaskDielectronSE.cxx:74 AliAnalysisTaskDielectronSE.cxx:75 AliAnalysisTaskDielectronSE.cxx:76 AliAnalysisTaskDielectronSE.cxx:77 AliAnalysisTaskDielectronSE.cxx:78 AliAnalysisTaskDielectronSE.cxx:79 AliAnalysisTaskDielectronSE.cxx:80 AliAnalysisTaskDielectronSE.cxx:81 AliAnalysisTaskDielectronSE.cxx:82 AliAnalysisTaskDielectronSE.cxx:83 AliAnalysisTaskDielectronSE.cxx:84 AliAnalysisTaskDielectronSE.cxx:85 AliAnalysisTaskDielectronSE.cxx:86 AliAnalysisTaskDielectronSE.cxx:87 AliAnalysisTaskDielectronSE.cxx:88 AliAnalysisTaskDielectronSE.cxx:89 AliAnalysisTaskDielectronSE.cxx:90 AliAnalysisTaskDielectronSE.cxx:91 AliAnalysisTaskDielectronSE.cxx:92 AliAnalysisTaskDielectronSE.cxx:93 AliAnalysisTaskDielectronSE.cxx:94 AliAnalysisTaskDielectronSE.cxx:95 AliAnalysisTaskDielectronSE.cxx:96 AliAnalysisTaskDielectronSE.cxx:97 AliAnalysisTaskDielectronSE.cxx:98 AliAnalysisTaskDielectronSE.cxx:99 AliAnalysisTaskDielectronSE.cxx:100 AliAnalysisTaskDielectronSE.cxx:101 AliAnalysisTaskDielectronSE.cxx:102 AliAnalysisTaskDielectronSE.cxx:103 AliAnalysisTaskDielectronSE.cxx:104 AliAnalysisTaskDielectronSE.cxx:105 AliAnalysisTaskDielectronSE.cxx:106 AliAnalysisTaskDielectronSE.cxx:107 AliAnalysisTaskDielectronSE.cxx:108 AliAnalysisTaskDielectronSE.cxx:109 AliAnalysisTaskDielectronSE.cxx:110 AliAnalysisTaskDielectronSE.cxx:111 AliAnalysisTaskDielectronSE.cxx:112 AliAnalysisTaskDielectronSE.cxx:113 AliAnalysisTaskDielectronSE.cxx:114 AliAnalysisTaskDielectronSE.cxx:115 AliAnalysisTaskDielectronSE.cxx:116 AliAnalysisTaskDielectronSE.cxx:117 AliAnalysisTaskDielectronSE.cxx:118 AliAnalysisTaskDielectronSE.cxx:119 AliAnalysisTaskDielectronSE.cxx:120 AliAnalysisTaskDielectronSE.cxx:121 AliAnalysisTaskDielectronSE.cxx:122 AliAnalysisTaskDielectronSE.cxx:123 AliAnalysisTaskDielectronSE.cxx:124 AliAnalysisTaskDielectronSE.cxx:125 AliAnalysisTaskDielectronSE.cxx:126 AliAnalysisTaskDielectronSE.cxx:127 AliAnalysisTaskDielectronSE.cxx:128 AliAnalysisTaskDielectronSE.cxx:129 AliAnalysisTaskDielectronSE.cxx:130 AliAnalysisTaskDielectronSE.cxx:131 AliAnalysisTaskDielectronSE.cxx:132 AliAnalysisTaskDielectronSE.cxx:133 AliAnalysisTaskDielectronSE.cxx:134 AliAnalysisTaskDielectronSE.cxx:135 AliAnalysisTaskDielectronSE.cxx:136 AliAnalysisTaskDielectronSE.cxx:137 AliAnalysisTaskDielectronSE.cxx:138 AliAnalysisTaskDielectronSE.cxx:139 AliAnalysisTaskDielectronSE.cxx:140 AliAnalysisTaskDielectronSE.cxx:141 AliAnalysisTaskDielectronSE.cxx:142 AliAnalysisTaskDielectronSE.cxx:143 AliAnalysisTaskDielectronSE.cxx:144 AliAnalysisTaskDielectronSE.cxx:145 AliAnalysisTaskDielectronSE.cxx:146 AliAnalysisTaskDielectronSE.cxx:147 AliAnalysisTaskDielectronSE.cxx:148 AliAnalysisTaskDielectronSE.cxx:149 AliAnalysisTaskDielectronSE.cxx:150 AliAnalysisTaskDielectronSE.cxx:151 AliAnalysisTaskDielectronSE.cxx:152 AliAnalysisTaskDielectronSE.cxx:153 AliAnalysisTaskDielectronSE.cxx:154 AliAnalysisTaskDielectronSE.cxx:155 AliAnalysisTaskDielectronSE.cxx:156 AliAnalysisTaskDielectronSE.cxx:157 AliAnalysisTaskDielectronSE.cxx:158 AliAnalysisTaskDielectronSE.cxx:159 AliAnalysisTaskDielectronSE.cxx:160 AliAnalysisTaskDielectronSE.cxx:161 AliAnalysisTaskDielectronSE.cxx:162 AliAnalysisTaskDielectronSE.cxx:163 AliAnalysisTaskDielectronSE.cxx:164 AliAnalysisTaskDielectronSE.cxx:165 AliAnalysisTaskDielectronSE.cxx:166 AliAnalysisTaskDielectronSE.cxx:167 AliAnalysisTaskDielectronSE.cxx:168 AliAnalysisTaskDielectronSE.cxx:169 AliAnalysisTaskDielectronSE.cxx:170 AliAnalysisTaskDielectronSE.cxx:171 AliAnalysisTaskDielectronSE.cxx:172 AliAnalysisTaskDielectronSE.cxx:173 AliAnalysisTaskDielectronSE.cxx:174 AliAnalysisTaskDielectronSE.cxx:175 AliAnalysisTaskDielectronSE.cxx:176 AliAnalysisTaskDielectronSE.cxx:177 AliAnalysisTaskDielectronSE.cxx:178 AliAnalysisTaskDielectronSE.cxx:179 AliAnalysisTaskDielectronSE.cxx:180 AliAnalysisTaskDielectronSE.cxx:181 AliAnalysisTaskDielectronSE.cxx:182 AliAnalysisTaskDielectronSE.cxx:183 AliAnalysisTaskDielectronSE.cxx:184 AliAnalysisTaskDielectronSE.cxx:185 AliAnalysisTaskDielectronSE.cxx:186 AliAnalysisTaskDielectronSE.cxx:187 AliAnalysisTaskDielectronSE.cxx:188 AliAnalysisTaskDielectronSE.cxx:189 AliAnalysisTaskDielectronSE.cxx:190 AliAnalysisTaskDielectronSE.cxx:191 AliAnalysisTaskDielectronSE.cxx:192 AliAnalysisTaskDielectronSE.cxx:193 AliAnalysisTaskDielectronSE.cxx:194 AliAnalysisTaskDielectronSE.cxx:195 AliAnalysisTaskDielectronSE.cxx:196 AliAnalysisTaskDielectronSE.cxx:197 AliAnalysisTaskDielectronSE.cxx:198 AliAnalysisTaskDielectronSE.cxx:199 AliAnalysisTaskDielectronSE.cxx:200 AliAnalysisTaskDielectronSE.cxx:201 AliAnalysisTaskDielectronSE.cxx:202 AliAnalysisTaskDielectronSE.cxx:203 AliAnalysisTaskDielectronSE.cxx:204 AliAnalysisTaskDielectronSE.cxx:205 AliAnalysisTaskDielectronSE.cxx:206 AliAnalysisTaskDielectronSE.cxx:207 AliAnalysisTaskDielectronSE.cxx:208 AliAnalysisTaskDielectronSE.cxx:209 AliAnalysisTaskDielectronSE.cxx:210 AliAnalysisTaskDielectronSE.cxx:211 AliAnalysisTaskDielectronSE.cxx:212 AliAnalysisTaskDielectronSE.cxx:213 AliAnalysisTaskDielectronSE.cxx:214 AliAnalysisTaskDielectronSE.cxx:215 AliAnalysisTaskDielectronSE.cxx:216 AliAnalysisTaskDielectronSE.cxx:217 AliAnalysisTaskDielectronSE.cxx:218 AliAnalysisTaskDielectronSE.cxx:219 AliAnalysisTaskDielectronSE.cxx:220 AliAnalysisTaskDielectronSE.cxx:221 AliAnalysisTaskDielectronSE.cxx:222 AliAnalysisTaskDielectronSE.cxx:223 AliAnalysisTaskDielectronSE.cxx:224 AliAnalysisTaskDielectronSE.cxx:225 AliAnalysisTaskDielectronSE.cxx:226 AliAnalysisTaskDielectronSE.cxx:227 AliAnalysisTaskDielectronSE.cxx:228 AliAnalysisTaskDielectronSE.cxx:229 AliAnalysisTaskDielectronSE.cxx:230 AliAnalysisTaskDielectronSE.cxx:231 AliAnalysisTaskDielectronSE.cxx:232 AliAnalysisTaskDielectronSE.cxx:233 AliAnalysisTaskDielectronSE.cxx:234 AliAnalysisTaskDielectronSE.cxx:235 AliAnalysisTaskDielectronSE.cxx:236 AliAnalysisTaskDielectronSE.cxx:237 AliAnalysisTaskDielectronSE.cxx:238 AliAnalysisTaskDielectronSE.cxx:239