]>
Commit | Line | Data |
---|---|---|
f7336fa3 | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, 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 | $Log$ | |
a3c76cdc | 18 | Revision 1.6 2000/11/01 14:53:20 cblume |
19 | Merge with TRD-develop | |
20 | ||
793ff80c | 21 | |
22 | Revision 1.1.4.5 2000/10/15 23:40:01 cblume | |
23 | Remove AliTRDconst | |
24 | ||
25 | Revision 1.1.4.4 2000/10/06 16:49:46 cblume | |
26 | Made Getters const | |
27 | ||
28 | Revision 1.1.4.3 2000/10/04 16:34:58 cblume | |
29 | Replace include files by forward declarations | |
30 | ||
31 | Revision 1.1.4.2 2000/09/22 14:49:49 cblume | |
32 | Adapted to tracking code | |
33 | ||
34 | Revision 1.5 2000/10/02 21:28:19 fca | |
35 | Removal of useless dependecies via forward declarations | |
36 | ||
37 | Revision 1.4 2000/06/09 11:10:07 cblume | |
38 | Compiler warnings and coding conventions, next round | |
39 | ||
40 | Revision 1.3 2000/06/08 18:32:58 cblume | |
41 | Make code compliant to coding conventions | |
42 | ||
43 | Revision 1.2 2000/05/08 16:17:27 cblume | |
44 | Merge TRD-develop | |
45 | ||
46 | Revision 1.1.4.1 2000/05/08 15:08:03 cblume | |
47 | Remove the class AliTRDcluster | |
48 | ||
94de3818 | 49 | Revision 1.4 2000/06/09 11:10:07 cblume |
50 | Compiler warnings and coding conventions, next round | |
51 | ||
dd9a6ee3 | 52 | Revision 1.3 2000/06/08 18:32:58 cblume |
53 | Make code compliant to coding conventions | |
54 | ||
8230f242 | 55 | Revision 1.2 2000/05/08 16:17:27 cblume |
56 | Merge TRD-develop | |
57 | ||
6f1e466d | 58 | Revision 1.1.4.1 2000/05/08 15:08:03 cblume |
59 | Remove the class AliTRDcluster | |
60 | ||
61 | Revision 1.1 2000/02/28 18:57:58 cblume | |
62 | Add new TRD classes | |
63 | ||
f7336fa3 | 64 | */ |
65 | ||
66 | /////////////////////////////////////////////////////////////////////////////// | |
67 | // // | |
68 | // TRD cluster finder base class // | |
69 | // // | |
70 | /////////////////////////////////////////////////////////////////////////////// | |
71 | ||
94de3818 | 72 | #include <TROOT.h> |
73 | #include <TTree.h> | |
793ff80c | 74 | #include <TFile.h> |
f7336fa3 | 75 | |
94de3818 | 76 | #include "AliRun.h" |
f7336fa3 | 77 | #include "AliTRD.h" |
78 | #include "AliTRDclusterizer.h" | |
793ff80c | 79 | #include "AliTRDrecPoint.h" |
80 | #include "AliTRDgeometry.h" | |
f7336fa3 | 81 | |
82 | ClassImp(AliTRDclusterizer) | |
83 | ||
84 | //_____________________________________________________________________________ | |
85 | AliTRDclusterizer::AliTRDclusterizer():TNamed() | |
86 | { | |
87 | // | |
88 | // AliTRDclusterizer default constructor | |
89 | // | |
90 | ||
91 | fInputFile = NULL; | |
92 | fEvent = 0; | |
93 | ||
94 | } | |
95 | ||
96 | //_____________________________________________________________________________ | |
97 | AliTRDclusterizer::AliTRDclusterizer(const Text_t* name, const Text_t* title) | |
98 | :TNamed(name, title) | |
99 | { | |
100 | // | |
101 | // AliTRDclusterizer default constructor | |
102 | // | |
103 | ||
104 | fInputFile = NULL; | |
105 | fEvent = 0; | |
106 | ||
107 | Init(); | |
108 | ||
109 | } | |
110 | ||
8230f242 | 111 | //_____________________________________________________________________________ |
dd9a6ee3 | 112 | AliTRDclusterizer::AliTRDclusterizer(const AliTRDclusterizer &c) |
8230f242 | 113 | { |
114 | // | |
115 | // AliTRDclusterizer copy constructor | |
116 | // | |
117 | ||
dd9a6ee3 | 118 | ((AliTRDclusterizer &) c).Copy(*this); |
8230f242 | 119 | |
120 | } | |
121 | ||
f7336fa3 | 122 | //_____________________________________________________________________________ |
123 | AliTRDclusterizer::~AliTRDclusterizer() | |
124 | { | |
8230f242 | 125 | // |
126 | // AliTRDclusterizer destructor | |
127 | // | |
f7336fa3 | 128 | |
129 | if (fInputFile) { | |
130 | fInputFile->Close(); | |
131 | delete fInputFile; | |
132 | } | |
133 | ||
134 | } | |
135 | ||
8230f242 | 136 | //_____________________________________________________________________________ |
dd9a6ee3 | 137 | AliTRDclusterizer &AliTRDclusterizer::operator=(const AliTRDclusterizer &c) |
138 | { | |
139 | // | |
140 | // Assignment operator | |
141 | // | |
142 | ||
143 | if (this != &c) ((AliTRDclusterizer &) c).Copy(*this); | |
144 | return *this; | |
145 | ||
146 | } | |
147 | ||
148 | //_____________________________________________________________________________ | |
149 | void AliTRDclusterizer::Copy(TObject &c) | |
8230f242 | 150 | { |
151 | // | |
152 | // Copy function | |
153 | // | |
154 | ||
dd9a6ee3 | 155 | ((AliTRDclusterizer &) c).fInputFile = NULL; |
156 | ((AliTRDclusterizer &) c).fEvent = 0; | |
8230f242 | 157 | |
158 | } | |
159 | ||
f7336fa3 | 160 | //_____________________________________________________________________________ |
161 | void AliTRDclusterizer::Init() | |
162 | { | |
163 | // | |
164 | // Initializes the cluster finder | |
165 | // | |
166 | ||
167 | } | |
168 | ||
169 | //_____________________________________________________________________________ | |
170 | Bool_t AliTRDclusterizer::Open(const Char_t *name, Int_t nEvent) | |
171 | { | |
172 | // | |
173 | // Opens a ROOT-file with TRD-hits and reads in the digits-tree | |
174 | // | |
175 | ||
176 | // Connect the AliRoot file containing Geometry, Kine, and Hits | |
177 | fInputFile = (TFile*) gROOT->GetListOfFiles()->FindObject(name); | |
178 | if (!fInputFile) { | |
179 | printf("AliTRDclusterizer::Open -- "); | |
180 | printf("Open the ALIROOT-file %s.\n",name); | |
181 | fInputFile = new TFile(name,"UPDATE"); | |
182 | } | |
183 | else { | |
184 | printf("AliTRDclusterizer::Open -- "); | |
185 | printf("%s is already open.\n",name); | |
186 | } | |
187 | ||
188 | // Get AliRun object from file or create it if not on file | |
a3c76cdc | 189 | if (!(gAlice)) { |
190 | gAlice = (AliRun *) fInputFile->Get("gAlice"); | |
191 | if (!(gAlice)) { | |
f7336fa3 | 192 | printf("AliTRDclusterizer::Open -- "); |
193 | printf("Could not find AliRun object.\n"); | |
194 | return kFALSE; | |
195 | } | |
a3c76cdc | 196 | } |
f7336fa3 | 197 | |
198 | fEvent = nEvent; | |
199 | ||
200 | // Import the Trees for the event nEvent in the file | |
201 | Int_t nparticles = gAlice->GetEvent(fEvent); | |
202 | if (nparticles <= 0) { | |
203 | printf("AliTRDclusterizer::Open -- "); | |
204 | printf("No entries in the trees for event %d.\n",fEvent); | |
205 | return kFALSE; | |
206 | } | |
207 | ||
a3c76cdc | 208 | // Create a tree for the reconstructed points |
209 | TTree *recPointTree = new TTree("ClusterTree","Tree with clusters and rec. points"); | |
210 | TObjArray *ioArray = 0; | |
211 | recPointTree->Branch("TRDrecPoints","TObjArray",&ioArray,32000,0); | |
212 | // TObjArray *iopointer = 0; | |
213 | // recPointTree->Branch("Clusters","TObjArray",&iopointer,32000,0); | |
214 | ||
f7336fa3 | 215 | return kTRUE; |
216 | ||
217 | } | |
218 | ||
219 | //_____________________________________________________________________________ | |
793ff80c | 220 | Bool_t AliTRDclusterizer::WriteClusters(Int_t det) |
f7336fa3 | 221 | { |
222 | // | |
793ff80c | 223 | // Fills TRDrecPoints branch in TRDrecPoints## tree with rec. points |
224 | // found in detector = det. For det=-1 writes the tree. | |
225 | // For det=-2 recreates the tree. | |
a3c76cdc | 226 | // |
793ff80c | 227 | |
228 | Char_t treeName[14]; | |
229 | sprintf(treeName,"TRDrecPoints%d", fEvent); | |
230 | ||
231 | if (det == -2) { | |
232 | fInputFile->Delete(treeName); | |
233 | TTree *tree = new TTree(treeName,"Tree with TRD rec. points"); | |
234 | tree->Write(); | |
235 | return kTRUE; | |
236 | } | |
f7336fa3 | 237 | |
a3c76cdc | 238 | //TTree *tree = (TTree *) fInputFile->Get(treeName); |
239 | TTree *tree = (TTree *) fInputFile->Get("ClusterTree"); | |
240 | TBranch *branch = tree->GetBranch("TRDrecPoints"); | |
f7336fa3 | 241 | |
793ff80c | 242 | if(!branch) { |
243 | TObjArray *ioArray = 0; | |
244 | branch = tree->Branch("TRDrecPoints","TObjArray",&ioArray,32000,0); | |
245 | } | |
246 | ||
247 | if ((det >= 0) && (det < AliTRDgeometry::Ndet())) { | |
248 | ||
249 | AliTRD *TRD = (AliTRD*) gAlice->GetDetector("TRD"); | |
250 | Int_t nRecPoints = TRD->RecPoints()->GetEntriesFast(); | |
251 | TObjArray *fDetRecPoints = new TObjArray(400); | |
252 | ||
253 | for (Int_t i=0; i<nRecPoints; i++) { | |
254 | AliTRDrecPoint *p=(AliTRDrecPoint*)TRD->RecPoints()->UncheckedAt(i); | |
255 | if(det == p->GetDetector()) fDetRecPoints->AddLast(p); | |
256 | else printf("attempt to write a RecPoint with unexpected detector index"); | |
257 | } | |
258 | ||
259 | branch->SetAddress(&fDetRecPoints); | |
260 | tree->Fill(); | |
261 | return kTRUE; | |
262 | } | |
263 | ||
264 | if (det == -1) { | |
265 | ||
266 | printf("\rAliTRDclusterizer::WriteClusters -- "); | |
267 | printf("Writing the cluster tree %-18s for event %d.\n" | |
268 | ,tree->GetName(),fEvent); | |
269 | ||
270 | tree->Write(); | |
271 | return kTRUE; | |
272 | } | |
273 | ||
274 | printf("\rAliTRDclusterizer::WriteClusters -- "); | |
275 | printf("Unexpected detector index %d.\n", det); | |
276 | return kFALSE; | |
f7336fa3 | 277 | |
278 | } | |
793ff80c | 279 | |
280 | ||
281 |