]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/vertexingHF/AliAnalysisTaskSEVertexingHF.cxx
Possibility to create AOD+AODVertexingHF in the same train, starting from ESD (A...
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliAnalysisTaskSEVertexingHF.cxx
CommitLineData
699a38d6 1/**************************************************************************
2 * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
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 **************************************************************************/
15
16/////////////////////////////////////////////////////////////
17//
18// AliAnalysisTaskSE for the reconstruction of heavy flavor
19// decays, using the class AliAnalysisVertexingHF.
20//
21// Author: A.Dainese, andrea.dainese@lnl.infn.it
22/////////////////////////////////////////////////////////////
23
24#include <TROOT.h>
25#include <TSystem.h>
26#include <TClonesArray.h>
27
dcb444c9 28#include "AliVEvent.h"
699a38d6 29#include "AliAODEvent.h"
30#include "AliESDEvent.h"
31#include "AliAnalysisVertexingHF.h"
32#include "AliAnalysisTaskSE.h"
33#include "AliAnalysisTaskSEVertexingHF.h"
34
35ClassImp(AliAnalysisTaskSEVertexingHF)
36
37
38//________________________________________________________________________
39AliAnalysisTaskSEVertexingHF::AliAnalysisTaskSEVertexingHF():
40AliAnalysisTaskSE(),
41fVHF(0),
42fVerticesHFTClArr(0),
43fD0toKpiTClArr(0),
44fJPSItoEleTClArr(0),
45fCharm3ProngTClArr(0),
2ff20727 46fCharm4ProngTClArr(0),
dc963de9 47fDstarTClArr(0),
423fb9ae 48fLikeSign2ProngTClArr(0),
49fLikeSign3ProngTClArr(0)
699a38d6 50{
51 // Default constructor
52}
53
54//________________________________________________________________________
55AliAnalysisTaskSEVertexingHF::AliAnalysisTaskSEVertexingHF(const char *name):
56AliAnalysisTaskSE(name),
57fVHF(0),
58fVerticesHFTClArr(0),
59fD0toKpiTClArr(0),
60fJPSItoEleTClArr(0),
61fCharm3ProngTClArr(0),
2ff20727 62fCharm4ProngTClArr(0),
dc963de9 63fDstarTClArr(0),
423fb9ae 64fLikeSign2ProngTClArr(0),
65fLikeSign3ProngTClArr(0)
699a38d6 66{
67 // Default constructor
68}
69
70//________________________________________________________________________
71AliAnalysisTaskSEVertexingHF::~AliAnalysisTaskSEVertexingHF()
72{
73 // Destructor
74}
75
76//________________________________________________________________________
77void AliAnalysisTaskSEVertexingHF::Init()
78{
79 // Initialization
80 // Instanciates vHF and loads its parameters
81
82 if(fDebug > 1) printf("AnalysisTaskSEVertexingHF::Init() \n");
83
423fb9ae 84 if(gROOT->LoadMacro("ConfigVertexingHF.C")) {
85 printf("AnalysisTaskSEVertexingHF::Init() \n Using $ALICE_ROOT/PWG3/vertexingHF/ConfigVertexingHF.C\n");
86 gROOT->LoadMacro("$ALICE_ROOT/PWG3/vertexingHF/ConfigVertexingHF.C");
87 }
699a38d6 88
89 fVHF = (AliAnalysisVertexingHF*)gROOT->ProcessLine("ConfigVertexingHF()");
90 fVHF->PrintStatus();
91
92 return;
93}
94
95//________________________________________________________________________
96void AliAnalysisTaskSEVertexingHF::UserCreateOutputObjects()
97{
98 // Create the output container
99 //
100 if(fDebug > 1) printf("AnalysisTaskSEVertexingHF::UserCreateOutPutData() \n");
0392e556 101 // Support both the case when the AOD + deltaAOD are produced in an ESD
102 // analysis or if the deltaAOD is produced on an analysis on AOD's. (A.G. 27/04/09)
103 if (!AODEvent()) {
104 Fatal("UserCreateOutputObjects", "This task needs an AOD handler");
105 return;
106 }
107 TString filename = "AliAOD.VertexingHF.root";
108 if (!IsStandardAOD()) filename = "";
699a38d6 109 if(!fVHF) {
110 printf("AnalysisTaskSEVertexingHF::UserCreateOutPutData() \n ERROR! no fvHF!\n");
111 return;
112 }
113
114 fVerticesHFTClArr = new TClonesArray("AliAODVertex", 0);
115 fVerticesHFTClArr->SetName("VerticesHF");
0392e556 116 AddAODBranch("TClonesArray", &fVerticesHFTClArr, filename);
699a38d6 117
dc963de9 118 if(fVHF->GetD0toKpi()) {
699a38d6 119 fD0toKpiTClArr = new TClonesArray("AliAODRecoDecayHF2Prong", 0);
120 fD0toKpiTClArr->SetName("D0toKpi");
0392e556 121 AddAODBranch("TClonesArray", &fD0toKpiTClArr, filename);
699a38d6 122 }
123
124 if(fVHF->GetJPSItoEle()) {
125 fJPSItoEleTClArr = new TClonesArray("AliAODRecoDecayHF2Prong", 0);
126 fJPSItoEleTClArr->SetName("JPSItoEle");
0392e556 127 AddAODBranch("TClonesArray", &fJPSItoEleTClArr, filename);
699a38d6 128 }
129
130 if(fVHF->Get3Prong()) {
131 fCharm3ProngTClArr = new TClonesArray("AliAODRecoDecayHF3Prong", 0);
132 fCharm3ProngTClArr->SetName("Charm3Prong");
0392e556 133 AddAODBranch("TClonesArray", &fCharm3ProngTClArr, filename);
699a38d6 134 }
135
136 if(fVHF->Get4Prong()) {
137 fCharm4ProngTClArr = new TClonesArray("AliAODRecoDecayHF4Prong", 0);
138 fCharm4ProngTClArr->SetName("Charm4Prong");
0392e556 139 AddAODBranch("TClonesArray", &fCharm4ProngTClArr, filename);
699a38d6 140 }
141
2ff20727 142 if(fVHF->GetDstar()) {
143 fDstarTClArr = new TClonesArray("AliAODRecoCascadeHF", 0);
144 fDstarTClArr->SetName("Dstar");
0392e556 145 AddAODBranch("TClonesArray", &fDstarTClArr, filename);
2ff20727 146 }
147
dc963de9 148 if(fVHF->GetLikeSign()) {
423fb9ae 149 fLikeSign2ProngTClArr = new TClonesArray("AliAODRecoDecayHF2Prong", 0);
150 fLikeSign2ProngTClArr->SetName("LikeSign2Prong");
0392e556 151 AddAODBranch("TClonesArray", &fLikeSign2ProngTClArr, filename);
423fb9ae 152 }
153
154 if(fVHF->GetLikeSign() && fVHF->Get3Prong()) {
155 fLikeSign3ProngTClArr = new TClonesArray("AliAODRecoDecayHF3Prong", 0);
156 fLikeSign3ProngTClArr->SetName("LikeSign3Prong");
0392e556 157 AddAODBranch("TClonesArray", &fLikeSign3ProngTClArr, filename);
dc963de9 158 }
159
699a38d6 160 return;
161}
162
163//________________________________________________________________________
164void AliAnalysisTaskSEVertexingHF::UserExec(Option_t */*option*/)
165{
166 // Execute analysis for current event:
167 // heavy flavor vertexing
168
dcb444c9 169 AliVEvent *event = dynamic_cast<AliVEvent*> (InputEvent());
0392e556 170 // In case there is an AOD handler writing a standard AOD, use the AOD
171 // event in memory rather than the input (ESD) event. (A.G. 27/04/09)
172 if (AODEvent() && IsStandardAOD()) event = dynamic_cast<AliVEvent*> (AODEvent());
699a38d6 173
174 // heavy flavor vertexing
dcb444c9 175 fVHF->FindCandidates(event,
176 fVerticesHFTClArr,
177 fD0toKpiTClArr,
178 fJPSItoEleTClArr,
179 fCharm3ProngTClArr,
2ff20727 180 fCharm4ProngTClArr,
dc963de9 181 fDstarTClArr,
423fb9ae 182 fLikeSign2ProngTClArr,
183 fLikeSign3ProngTClArr);
699a38d6 184
185 return;
186}
187
188//________________________________________________________________________
189void AliAnalysisTaskSEVertexingHF::Terminate(Option_t */*option*/)
190{
191 // Terminate analysis
192 //
193 if(fDebug > 1) printf("AnalysisTaskSEVertexingHF: Terminate() \n");
194}