1 /*************************************************************************
2 * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
18 ///////////////////////////////////////////////////////////////////////////
20 // Basic Analysis Task //
21 // for Dielectron Analysis //
23 ///////////////////////////////////////////////////////////////////////////
28 #include <AliCFContainer.h>
29 #include <AliVEvent.h>
30 #include <AliInputEventHandler.h>
31 #include <AliESDInputHandler.h>
32 #include <AliAnalysisManager.h>
33 #include <AliAODInputHandler.h>
35 #include "AliDielectron.h"
36 #include "AliDielectronHistos.h"
37 #include "AliDielectronCF.h"
38 #include "AliAnalysisTaskDielectronSE.h"
40 ClassImp(AliAnalysisTaskDielectronSE)
42 //_________________________________________________________________________________
43 AliAnalysisTaskDielectronSE::AliAnalysisTaskDielectronSE() :
46 fSelectPhysics(kFALSE),
47 fTriggerMask(AliVEvent::kMB),
55 //_________________________________________________________________________________
56 AliAnalysisTaskDielectronSE::AliAnalysisTaskDielectronSE(const char *name) :
57 AliAnalysisTaskSE(name),
59 fSelectPhysics(kFALSE),
60 fTriggerMask(AliVEvent::kMB),
66 DefineInput(0,TChain::Class());
67 DefineOutput(1, THashList::Class());
68 DefineOutput(2, AliCFContainer::Class());
69 DefineOutput(3, TH1D::Class());
72 //_________________________________________________________________________________
73 void AliAnalysisTaskDielectronSE::UserCreateOutputObjects()
76 // Initialise the framework objects
79 AliError("No Dielectron framework object set !!!");
83 if (fDielectron->GetHistogramList()){
84 PostData(1, const_cast<THashList*>(fDielectron->GetHistogramList()));
86 if (fDielectron->GetCFManagerPair()){
87 PostData(2, const_cast<AliCFContainer*>(fDielectron->GetCFManagerPair()->GetContainer()));
91 fEventStat=new TH1D("hEventStat","Event statistics",5,0,5);
92 fEventStat->GetXaxis()->SetBinLabel(1,"Before Phys. Sel.");
93 fEventStat->GetXaxis()->SetBinLabel(2,"After Phys. Sel.");
96 PostData(3,fEventStat);
100 //_________________________________________________________________________________
101 void AliAnalysisTaskDielectronSE::UserExec(Option_t *)
104 // Main loop. Called for every event
107 if (!fDielectron) return;
109 AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
110 AliESDInputHandler *esdHandler=0x0;
111 if ( (esdHandler=dynamic_cast<AliESDInputHandler*>(man->GetInputEventHandler())) && esdHandler->GetESDpid() ){
112 AliDielectronVarManager::SetESDpid(esdHandler->GetESDpid());
114 //load esd pid bethe bloch parameters depending on the existance of the MC handler
115 // yes: MC parameters
116 // no: data parameters
119 if (man->GetInputEventHandler()->IsA()==AliESDInputHandler::Class()){
120 if (!AliDielectronVarManager::GetESDpid()){
122 if (AliDielectronMC::Instance()->HasMC()) {
123 AliDielectronVarManager::InitESDpid();
125 AliDielectronVarManager::InitESDpid(1);
130 if (man->GetInputEventHandler()->IsA()==AliAODInputHandler::Class()){
131 if (!AliDielectronVarManager::GetAODpidUtil()){
132 if (AliDielectronMC::Instance()->HasMC()) {
133 AliDielectronVarManager::InitAODpidUtil();
135 AliDielectronVarManager::InitAODpidUtil(1);
140 // Was event selected ?
141 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
142 UInt_t isSelected = AliVEvent::kAny;
143 if( fSelectPhysics && inputHandler && inputHandler->GetEventSelection() ) {
144 isSelected = inputHandler->IsEventSelected();
145 isSelected&=fTriggerMask;
148 //Before physics selection
149 fEventStat->Fill(0.);
151 PostData(3,fEventStat);
154 //after physics selection
155 fEventStat->Fill(1.);
158 Double_t bz = InputEvent()->GetMagneticField();
159 AliKFParticle::SetField( bz );
161 fDielectron->Process(InputEvent());
163 if (fDielectron->GetHistogramList()){
164 PostData(1, const_cast<THashList*>(fDielectron->GetHistogramList()));
166 if (fDielectron->GetCFManagerPair()){
167 PostData(2, const_cast<AliCFContainer*>(fDielectron->GetCFManagerPair()->GetContainer()));
169 PostData(3,fEventStat);