]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/PHOS/AliHLTPHOSESDCaloClusterWriterComponent.cxx
Update of ITS tracking check task and related macros
[u/mrichter/AliRoot.git] / HLT / PHOS / AliHLTPHOSESDCaloClusterWriterComponent.cxx
CommitLineData
87434909 1
2/**************************************************************************
3 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * *
5 * Authors: Oystein Djuvsland <oysteind@ift.uib.no> *
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#include <iostream>
18
19#include "AliHLTPHOSESDCaloClusterWriterComponent.h"
20#include "AliESDCaloCluster.h"
21#include "TTree.h"
22#include "TClonesArray.h"
23#include "TFile.h"
24
25/** @file AliHLTPHOSESDCaloClusterWriterComponent.cxx
26 @author Oystein Djuvsland
27 @date
28 @brief An ESD calo cluster writer component for PHOS HLT
29*/
30
31// see header file for class documentation
32// or
33// refer to README to build package
34// or
35// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
36
37#if __GNUC__>= 3
38using namespace std;
39#endif
40
41AliHLTPHOSESDCaloClusterWriterComponent gAliHLTPHOSESDCaloClusterWriterComponent;
42
43AliHLTPHOSESDCaloClusterWriterComponent::AliHLTPHOSESDCaloClusterWriterComponent():
44 AliHLTPHOSProcessor(),
45 fOutfile(0),
46 fOutfileName(0),
47 fWriteModulo(1000),
48 fESDCaloClusterTreePtr(0),
49 fESDCaloClustersPtr(0)
50{
51 //See headerfile for documentation
52}
53
54AliHLTPHOSESDCaloClusterWriterComponent::~AliHLTPHOSESDCaloClusterWriterComponent()
55{
56 //See headerfile for documentation
57
58 if(fESDCaloClustersPtr)
59 {
60 fESDCaloClustersPtr->Write();
61 delete fESDCaloClustersPtr;
62 fESDCaloClustersPtr = 0;
63 }
64 if (fOutfile)
65 {
66 fOutfile->Close();
67 delete fOutfile;
68 fOutfile = 0;
69 }
70}
71
72
73int
74AliHLTPHOSESDCaloClusterWriterComponent::Deinit()
75{
76 //See headerfile for documentation
77
78 if(fESDCaloClustersPtr)
79 {
80 fESDCaloClustersPtr->Write();
81 delete fESDCaloClustersPtr;
82 fESDCaloClustersPtr = 0;
83 }
84 if (fOutfile)
85 {
86 fOutfile->Close();
87 delete fOutfile;
88 fOutfile = 0;
89 }
90 return 0;
91}
92
93const Char_t*
94AliHLTPHOSESDCaloClusterWriterComponent::GetComponentID()
95{
96 //See headerfile for documentation
97
98 return "PhosEsdCaloClusterWriter";
99}
100
101void
102AliHLTPHOSESDCaloClusterWriterComponent::GetInputDataTypes( vector<AliHLTComponentDataType>& list)
103{
104 //See headerfile for documentation
105 list.clear();
106 list.push_back(AliHLTPHOSDefinitions::fgkESDCaloClusterDataType);
107
108}
109
110AliHLTComponentDataType
111AliHLTPHOSESDCaloClusterWriterComponent::GetOutputDataType()
112{
113 //See headerfile for documentation
114 return kAliHLTAnyDataType;
115}
116
117void
118AliHLTPHOSESDCaloClusterWriterComponent::GetOutputDataSize(unsigned long& constBase, double& inputMultiplier )
119
120{
121 //See headerfile for documentation
122
123 constBase = 30;
124 inputMultiplier = 2;
125}
126
127Int_t
128AliHLTPHOSESDCaloClusterWriterComponent::DoEvent( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& /*trigData*/ )
129{
130 // see header file for class documentation
131
132 const TObject* iter = 0;
133 // const AliHLTComponentBlockData* iter = 0;
134
135 //UInt_t specification = 0;
136 // iter = GetFirstInputObject(AliHLTPHOSDefinitions::fgkESDCaloClusterDataType);
137 //cout << iter << endl;
138 for(iter = GetFirstInputObject(AliHLTPHOSDefinitions::fgkESDCaloClusterDataType); iter != NULL; iter = GetNextInputObject())
139 {
140
141
142 //fESDCaloClustersPtr->AddAll(reinterpret_cast<const TClonesArray*>(iter));
143 fESDCaloClustersPtr = reinterpret_cast<TClonesArray*>(const_cast<TObject*>(iter)->Clone());
144
145 }
146
147
148
149 // iter = GetFirstInputBlock(AliHLTPHOSDefinitions::fgkESDCaloClusterDataType);
150
151// if(iter)
152// {
153// specification = specification|iter->fSpecification;
154// cout << (reinterpret_cast<TClonesArray*>(iter->fPtr))->GetEntries() << endl;
155// // fESDCaloClustersPtr->AddAll(reinterpret_cast<TClonesArray*>(iter->fPtr));
156// while((iter = GetNextInputBlock()))
157// {
158// // fESDCaloClustersPtr->AddAll(reinterpret_cast<TClonesArray*>(iter->fPtr));
159// }
160
161// }
162// HLTError("Number of clusters: %d", fESDCaloClustersPtr->GetEntries());
163 fESDCaloClusterTreePtr->Fill();
164
165 fPhosEventCount++;
166
167 if(fPhosEventCount % fWriteModulo == 0)
168 {
169 WriteTree();
170 }
171
172 //fESDCaloClustersPtr->Delete();
173
174 return 0;
175}
176
177int
178AliHLTPHOSESDCaloClusterWriterComponent::WriteTree()
179{
180
181 // See headerfile for documentation
182 char tmpFilename[128];
183 sprintf(tmpFilename, "%s_%d.root", fOutfileName, fPhosEventCount/fWriteModulo);
184
185 fOutfile = TFile::Open(tmpFilename, "RECREATE");
186 if(fOutfile == 0)
187 {
188 HLTError("Could not open file %s for writing", tmpFilename);
189 return -1;
190 }
191 fESDCaloClusterTreePtr->Write();
192 fOutfile->Close();
193 fESDCaloClusterTreePtr->Reset();
194 return 0;
195}
196
197int
198AliHLTPHOSESDCaloClusterWriterComponent::DoInit(int argc, const char** argv )
199{
200 //See headerfile for documentation
201 fOutfileName = new char[128];
202 char tmpFilename[128];
203 ScanArgumentsModule(argc, argv);
204 for (int i = 0; i < argc; i++)
205 {
206 if(!strcmp("-filename", argv[i]))
207 {
208 sprintf(fOutfileName, "/tmp/%s", argv[i+1]);
209 sprintf(tmpFilename, "%s_0.root", fOutfileName);
210 }
211 if(!strcmp("-writemodulo", argv[i]))
212 {
213 fWriteModulo = atoi(argv[i+1]);
214 }
215 }
216 // fESDCaloClustersPtr = new TClonesArray(AliESDCaloCluster::Class(), 0);
217 fESDCaloClusterTreePtr = new TTree("caloClusterTree", "Tree containing AliESDCaloClusters reconstructed in HLT");
218 fESDCaloClusterTreePtr->Branch("CaloClusters", &fESDCaloClustersPtr);
219
220 //fESDCaloClusterTreePtr->SetBranchAddress("CaloClusters", &fESDCaloClustersPtr);
221
222 return 0;
223}
224
225AliHLTComponent*
226AliHLTPHOSESDCaloClusterWriterComponent::Spawn()
227{
228 //See headerfile for documentation
229
230 return new AliHLTPHOSESDCaloClusterWriterComponent();
231}
232