]>
Commit | Line | Data |
---|---|---|
13985652 | 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 | /* $Id$ */ | |
48b32e42 | 17 | |
48b32e42 | 18 | #include "AliMUONDataInterface.h" |
e9bef706 | 19 | #include "AliMUONDigit.h" |
20 | #include "AliMUONGeometryTransformer.h" | |
554b38a6 | 21 | #include "AliMUONGlobalTrigger.h" |
30178c30 | 22 | #include "AliMUONHit.h" |
e9bef706 | 23 | #include "AliMUONLocalTrigger.h" |
30178c30 | 24 | #include "AliMUONRawCluster.h" |
554b38a6 | 25 | #include "AliMUONTrack.h" |
e9bef706 | 26 | #include "AliMUONTriggerCircuit.h" |
a202c2d2 | 27 | #include "AliMUONVClusterStore.h" |
e9bef706 | 28 | #include "AliMUONVDigitStore.h" |
a202c2d2 | 29 | #include "AliMUONVTrackStore.h" |
e9bef706 | 30 | #include "AliMUONVTriggerStore.h" |
a202c2d2 | 31 | #include "AliMUONVTriggerTrackStore.h" |
e9bef706 | 32 | |
33 | #include "AliLoader.h" | |
34 | #include "AliLog.h" | |
a202c2d2 | 35 | #include "AliLog.h" |
e9bef706 | 36 | #include "AliRunLoader.h" |
37 | ||
38 | #include <TError.h> | |
39 | #include <TParticle.h> | |
40 | #include <Riostream.h> | |
41 | #include <TFile.h> | |
a202c2d2 | 42 | #include <TList.h> |
e9bef706 | 43 | #include <TNtuple.h> |
44 | #include <TSystem.h> | |
6d149c9e | 45 | |
85fec35d | 46 | /// |
47 | /// \class AliMUONDataInterface | |
48 | /// | |
a202c2d2 | 49 | /// An easy to use interface to the MUON data data stored in |
50 | /// TreeS, TreeD, TreeR and TreeT. | |
51 | /// | |
52 | /// For MC related information (i.e. TreeH, TreeK, TreeTR), see | |
53 | /// AliMUONMCDataInterface. | |
54 | /// | |
85fec35d | 55 | /// |
56 | /// This interface in not necessarily the fastest way to fetch the data but | |
57 | /// it is the easiest. | |
85fec35d | 58 | /// |
a202c2d2 | 59 | /// \author Laurent Aphecetche, Subatech |
13985652 | 60 | |
61 | /// \cond CLASSIMP | |
62 | ClassImp(AliMUONDataInterface) | |
63 | /// \endcond | |
48b32e42 | 64 | |
e9bef706 | 65 | //AliLoader* fLoader; //!< Tree accessor |
66 | //AliMUONVDigitStore* fDigitStore; //!< current digit store (owner) | |
67 | //AliMUONVTriggerStore* fTriggerStore; //!< current trigger store (owner) | |
68 | //AliMUONVClusterStore* fClusterStore; //!< current cluster store (owner) | |
69 | //AliMUONVTrackStore* fTrackStore; //!< current track store (owner) | |
70 | //AliMUONVTriggerTrackStore* fTriggerTrackStore; //!< current trigger track store (owner) | |
71 | //Int_t fCurrentEvent; //!< Current event we've read in | |
72 | //Bool_t fIsValid; //!< whether we were initialized properly or not | |
73 | ||
74 | Int_t AliMUONDataInterface::fgInstanceCounter(0); | |
75 | ||
a202c2d2 | 76 | //______________________________________________________________________________ |
77 | AliMUONDataInterface::AliMUONDataInterface(const char* filename) | |
e9bef706 | 78 | : TObject(), |
79 | fLoader(0x0), | |
80 | fDigitStore(0x0), | |
81 | fTriggerStore(0x0), | |
82 | fClusterStore(0x0), | |
83 | fTrackStore(0x0), | |
84 | fTriggerTrackStore(0x0), | |
85 | fCurrentEvent(-1), | |
86 | fIsValid(kFALSE) | |
48b32e42 | 87 | { |
a202c2d2 | 88 | /// ctor |
89 | /// @param filename should be the full path to a valid galice.root file | |
90 | ||
e9bef706 | 91 | ++fgInstanceCounter; |
92 | ||
93 | Open(filename); | |
925e6570 | 94 | } |
48b32e42 | 95 | |
a202c2d2 | 96 | //______________________________________________________________________________ |
48b32e42 | 97 | AliMUONDataInterface::~AliMUONDataInterface() |
98 | { | |
a202c2d2 | 99 | /// dtor |
e9bef706 | 100 | if ( fLoader ) |
101 | { | |
102 | delete fLoader->GetRunLoader(); | |
103 | } | |
104 | --fgInstanceCounter; | |
a202c2d2 | 105 | } |
48b32e42 | 106 | |
a202c2d2 | 107 | //______________________________________________________________________________ |
108 | AliMUONVClusterStore* | |
e9bef706 | 109 | AliMUONDataInterface::ClusterStore(Int_t event) |
a202c2d2 | 110 | { |
e9bef706 | 111 | /// Return clusterStore for a given event. |
112 | /// Return 0x0 if event not found. | |
113 | /// Returned pointer should not be deleted | |
114 | ||
115 | if ( LoadEvent(event) ) return 0x0; | |
116 | ||
117 | fLoader->LoadRecPoints(); | |
118 | ||
119 | TTree* treeR = fLoader->TreeR(); | |
120 | ||
121 | if (!treeR) | |
122 | { | |
123 | AliError("Could not get treeR"); | |
124 | return 0x0; | |
125 | } | |
126 | ||
127 | if (!fClusterStore) | |
128 | { | |
129 | fClusterStore = AliMUONVClusterStore::Create(*treeR); | |
130 | } | |
131 | ||
132 | if ( fClusterStore ) | |
133 | { | |
134 | fClusterStore->Clear(); | |
135 | fClusterStore->Connect(*treeR); | |
136 | treeR->GetEvent(0); | |
137 | } | |
138 | ||
139 | fLoader->UnloadRecPoints(); | |
140 | ||
141 | return fClusterStore; | |
142 | } | |
3455463a | 143 | |
e9bef706 | 144 | //______________________________________________________________________________ |
145 | AliMUONVDigitStore* | |
146 | AliMUONDataInterface::DigitStore(Int_t event) | |
147 | { | |
148 | /// Return digitStore for a given event. | |
149 | /// Return 0x0 if event not found. | |
150 | /// Returned pointer should not be deleted | |
151 | ||
152 | if ( LoadEvent(event) ) return 0x0; | |
153 | ||
154 | fLoader->LoadDigits(); | |
155 | ||
156 | TTree* treeD = fLoader->TreeD(); | |
157 | ||
158 | if (!treeD) | |
159 | { | |
160 | AliError("Could not get treeD"); | |
161 | return 0x0; | |
162 | } | |
163 | ||
164 | if (!fDigitStore) | |
165 | { | |
166 | fDigitStore = AliMUONVDigitStore::Create(*treeD); | |
167 | } | |
168 | ||
169 | if ( fDigitStore ) | |
170 | { | |
171 | fDigitStore->Clear(); | |
172 | fDigitStore->Connect(*treeD); | |
173 | treeD->GetEvent(0); | |
174 | } | |
175 | ||
176 | fLoader->UnloadDigits(); | |
177 | ||
178 | return fDigitStore; | |
925e6570 | 179 | } |
48b32e42 | 180 | |
a202c2d2 | 181 | //______________________________________________________________________________ |
182 | void | |
e9bef706 | 183 | AliMUONDataInterface::DumpDigits(Int_t event, Bool_t sorted) |
48b32e42 | 184 | { |
e9bef706 | 185 | /// Dump the digits for a given event, sorted if so required |
186 | DigitStore(event); | |
187 | if ( fDigitStore ) | |
188 | { | |
189 | if ( sorted ) | |
190 | { | |
191 | DumpSorted(*fDigitStore); | |
192 | } | |
193 | else | |
194 | { | |
195 | fDigitStore->Print(); | |
196 | } | |
197 | } | |
925e6570 | 198 | } |
48b32e42 | 199 | |
a202c2d2 | 200 | //______________________________________________________________________________ |
e9bef706 | 201 | void |
202 | AliMUONDataInterface::DumpRecPoints(Int_t event, Bool_t sorted) | |
6d149c9e | 203 | { |
e9bef706 | 204 | /// Dump the recpoints for a given event, sorted if so required |
205 | ClusterStore(event); | |
206 | if ( fClusterStore ) | |
207 | { | |
208 | if ( sorted ) | |
209 | { | |
210 | DumpSorted(*fClusterStore); | |
211 | } | |
212 | else | |
213 | { | |
214 | fClusterStore->Print(); | |
215 | } | |
216 | } | |
6d149c9e | 217 | } |
218 | ||
e9bef706 | 219 | //_____________________________________________________________________________ |
220 | void | |
221 | AliMUONDataInterface::DumpSorted(const AliMUONVStore& store) const | |
6d149c9e | 222 | { |
e9bef706 | 223 | /// Dump the given store, in sorted order |
a202c2d2 | 224 | |
e9bef706 | 225 | TIter next(store.CreateIterator()); |
a202c2d2 | 226 | TObject* object; |
e9bef706 | 227 | TList list; |
228 | list.SetOwner(kFALSE); | |
a202c2d2 | 229 | |
e9bef706 | 230 | while ( ( object = next() ) ) |
a202c2d2 | 231 | { |
e9bef706 | 232 | list.Add(object); |
a202c2d2 | 233 | } |
234 | ||
e9bef706 | 235 | list.Sort(); |
236 | ||
237 | list.Print(); | |
a202c2d2 | 238 | } |
239 | ||
240 | //______________________________________________________________________________ | |
241 | void | |
e9bef706 | 242 | AliMUONDataInterface::DumpTracks(Int_t event, Bool_t sorted) |
a202c2d2 | 243 | { |
e9bef706 | 244 | /// Dump tracks for a given event, sorted if requested |
245 | ||
246 | TrackStore(event); | |
247 | ||
248 | if ( fTrackStore ) | |
a202c2d2 | 249 | { |
e9bef706 | 250 | if ( sorted ) |
251 | { | |
252 | DumpSorted(*fTrackStore); | |
253 | } | |
254 | else | |
255 | { | |
256 | fTrackStore->Print(); | |
257 | } | |
a202c2d2 | 258 | } |
e9bef706 | 259 | } |
260 | ||
261 | //______________________________________________________________________________ | |
262 | void | |
263 | AliMUONDataInterface::DumpTriggerTracks(Int_t event, Bool_t sorted) | |
264 | { | |
265 | /// Dump trigger tracks for a given event, sorted if requested | |
266 | ||
267 | TriggerTrackStore(event); | |
a202c2d2 | 268 | |
e9bef706 | 269 | if ( fTriggerTrackStore ) |
a202c2d2 | 270 | { |
e9bef706 | 271 | if ( sorted ) |
272 | { | |
273 | DumpSorted(*fTriggerTrackStore); | |
274 | } | |
275 | else | |
a202c2d2 | 276 | { |
e9bef706 | 277 | fTriggerTrackStore->Print(); |
a202c2d2 | 278 | } |
e9bef706 | 279 | } |
280 | } | |
6d149c9e | 281 | |
e9bef706 | 282 | //_____________________________________________________________________________ |
283 | void | |
284 | AliMUONDataInterface::DumpTrigger(Int_t event, const char* treeLetter) | |
285 | { | |
286 | /// Dump trigger for a given event from a given tree (if event>=0) | |
287 | /// or loop over all events and build a trigger ntuple if event<0 | |
288 | /// treeLetter can be R or D to tell from which tree to read the information | |
a202c2d2 | 289 | |
e9bef706 | 290 | if ( event < 0 ) |
291 | { | |
292 | NtupleTrigger(treeLetter); | |
a202c2d2 | 293 | } |
294 | else | |
295 | { | |
e9bef706 | 296 | TriggerStore(event,treeLetter); |
a202c2d2 | 297 | |
e9bef706 | 298 | if ( fTriggerStore ) |
299 | { | |
300 | fTriggerStore->Print(); | |
301 | } | |
302 | } | |
a202c2d2 | 303 | } |
6d149c9e | 304 | |
e9bef706 | 305 | //_____________________________________________________________________________ |
a202c2d2 | 306 | void |
e9bef706 | 307 | AliMUONDataInterface::NtupleTrigger(const char* treeLetter) |
48b32e42 | 308 | { |
e9bef706 | 309 | //// Loop over events to build trigger ntuples |
310 | /// | |
311 | ||
312 | TString sTreeLetter(treeLetter); | |
313 | sTreeLetter.ToUpper(); | |
314 | ||
315 | if ( sTreeLetter != "R" && sTreeLetter != "D" ) | |
316 | { | |
317 | AliError(Form("Cannot handle tree%s. Use D or R",treeLetter)); | |
318 | return; | |
319 | } | |
320 | ||
321 | // book ntuples | |
322 | TNtuple tupleGlo("TgtupleGlo","Global Trigger Ntuple", | |
323 | "ev:slpt:shpt:uplpt:uphpt:lplpt:lplpt"); | |
324 | TNtuple tupleLoc("TgtupleLoc","Local Trigger Ntuple", | |
325 | "ev:LoCircuit:LoStripX:LoDev:StripY:LoLpt:LoHpt:y11:y21:x11"); | |
326 | ||
327 | // initialize counters | |
328 | Int_t sLowpt=0; | |
329 | Int_t sHighpt=0; | |
330 | Int_t uSLowpt=0; | |
331 | Int_t uSHighpt=0; | |
332 | Int_t lSLowpt=0; | |
333 | Int_t lSHighpt=0; | |
334 | ||
335 | AliMUONGeometryTransformer transformer(kFALSE); | |
ef4cb4f1 | 336 | transformer.LoadGeometryData(Form("%s/geometry.root", |
e9bef706 | 337 | gSystem->DirName(fLoader->GetRunLoader()->GetFileName()))); |
338 | ||
339 | AliMUONTriggerCircuit triggerCircuit(&transformer); | |
340 | ||
341 | // select output file name from selected Tree | |
342 | Char_t fileNameOut[30]; | |
343 | if (sTreeLetter == "D") | |
344 | { | |
345 | AliInfo(Form("reading from Digits\n")); | |
346 | sprintf(fileNameOut,"TriggerCheckFromDigits.root"); | |
347 | } | |
348 | else if (sTreeLetter == "R") | |
349 | { | |
350 | AliInfo(Form("reading from RecPoints\n")); | |
351 | sprintf(fileNameOut,"TriggerCheckFromRP.root"); | |
352 | } | |
353 | ||
354 | // loop on events | |
355 | Int_t nevents = NumberOfEvents(); | |
356 | ||
357 | for (Int_t ievent=0; ievent<nevents; ++ievent) | |
358 | { | |
359 | if (ievent%100==0) AliInfo(Form("Processing event %d\n",ievent)); | |
360 | ||
361 | AliMUONVTriggerStore* triggerStore = TriggerStore(ievent); | |
362 | ||
363 | if (!triggerStore) | |
364 | { | |
365 | AliError(Form("Could not read %s from tree%s","Trigger",treeLetter)); | |
366 | return; | |
367 | } | |
368 | ||
369 | // get global trigger info | |
370 | AliMUONGlobalTrigger* gloTrg = triggerStore->Global(); | |
371 | sLowpt+=gloTrg->SingleLpt(); | |
372 | sHighpt+=gloTrg->SingleHpt(); | |
373 | uSLowpt+=gloTrg->PairUnlikeLpt(); | |
374 | uSHighpt+=gloTrg->PairUnlikeHpt(); | |
375 | lSLowpt+=gloTrg->PairLikeLpt(); | |
376 | lSHighpt+=gloTrg->PairLikeHpt(); | |
377 | ||
378 | // loop on local triggers | |
379 | TIter next(triggerStore->CreateIterator()); | |
380 | AliMUONLocalTrigger* locTrg(0x0); | |
381 | while ( ( locTrg = static_cast<AliMUONLocalTrigger*>(next()) ) ) | |
382 | { | |
383 | Bool_t xTrig=kFALSE; | |
384 | Bool_t yTrig=kFALSE; | |
385 | ||
386 | if ( locTrg->LoSdev()==1 && locTrg->LoDev()==0 && | |
387 | locTrg->LoStripX()==0) xTrig=kFALSE; // no trigger in X | |
388 | else xTrig=kTRUE; // trigger in X | |
389 | if (locTrg->LoTrigY()==1 && | |
390 | locTrg->LoStripY()==15 ) yTrig = kFALSE; // no trigger in Y | |
391 | else yTrig = kTRUE; // trigger in Y | |
392 | ||
393 | if (xTrig && yTrig) | |
394 | { // fill ntuple if trigger in X and Y | |
395 | tupleLoc.Fill(ievent,locTrg->LoCircuit(), | |
396 | locTrg->LoStripX(), | |
397 | locTrg->LoDev(), | |
398 | locTrg->LoStripY(), | |
399 | locTrg->LoLpt(), | |
400 | locTrg->LoHpt(), | |
401 | triggerCircuit.GetY11Pos(locTrg->LoCircuit(),locTrg->LoStripX()), | |
402 | triggerCircuit.GetY21Pos(locTrg->LoCircuit(),locTrg->LoStripX()+locTrg->LoDev()+1), | |
403 | triggerCircuit.GetX11Pos(locTrg->LoCircuit(),locTrg->LoStripY())); | |
404 | } | |
405 | tupleGlo.Fill(ievent,gloTrg->SingleLpt(),gloTrg->SingleHpt(), | |
406 | gloTrg->PairUnlikeLpt(),gloTrg->PairUnlikeHpt(), | |
407 | gloTrg->PairLikeLpt(),gloTrg->PairLikeHpt()); | |
408 | } // end of loop on local triggers | |
409 | } // end of loop on events | |
410 | ||
411 | // print info and store ntuples | |
412 | printf("\n"); | |
413 | printf("=============================================\n"); | |
414 | printf("================ SUMMARY ==================\n"); | |
415 | printf("\n"); | |
416 | printf("Total number of events processed %d \n",nevents); | |
417 | printf("\n"); | |
418 | printf(" Global Trigger output Low pt High pt\n"); | |
419 | printf(" number of Single :\t"); | |
420 | printf("%i\t%i\t",sLowpt,sHighpt); | |
421 | printf("\n"); | |
422 | printf(" number of UnlikeSign pair :\t"); | |
423 | printf("%i\t%i\t",uSLowpt,uSHighpt); | |
424 | printf("\n"); | |
425 | printf(" number of LikeSign pair :\t"); | |
426 | printf("%i\t%i\t",lSLowpt,lSHighpt); | |
427 | printf("\n"); | |
428 | printf("=============================================\n"); | |
429 | fflush(stdout); | |
430 | ||
431 | TFile myFile(fileNameOut, "RECREATE"); | |
432 | tupleGlo.Write(); | |
433 | tupleLoc.Write(); | |
434 | myFile.Close(); | |
925e6570 | 435 | } |
48b32e42 | 436 | |
a202c2d2 | 437 | //______________________________________________________________________________ |
438 | Bool_t | |
439 | AliMUONDataInterface::IsValid() const | |
440 | { | |
441 | /// Whether we were properly initialized from a valid galice.root file | |
e9bef706 | 442 | return fIsValid; |
a202c2d2 | 443 | } |
48b32e42 | 444 | |
e9bef706 | 445 | //_____________________________________________________________________________ |
a202c2d2 | 446 | Int_t |
e9bef706 | 447 | AliMUONDataInterface::LoadEvent(Int_t event) |
48b32e42 | 448 | { |
e9bef706 | 449 | /// Load event if different from the current one. |
450 | if ( event != fCurrentEvent ) | |
451 | { | |
452 | fCurrentEvent = event; | |
453 | AliDebug(1,Form("Loading event %d using runLoader %p",event,fLoader->GetRunLoader())); | |
454 | if ( event < NumberOfEvents() ) | |
455 | { | |
456 | return fLoader->GetRunLoader()->GetEvent(event); | |
457 | } | |
458 | else | |
459 | { | |
460 | return 1; | |
461 | } | |
462 | } | |
463 | return 0; | |
925e6570 | 464 | } |
48b32e42 | 465 | |
a202c2d2 | 466 | //______________________________________________________________________________ |
e9bef706 | 467 | Int_t |
468 | AliMUONDataInterface::NumberOfEvents() const | |
a202c2d2 | 469 | { |
e9bef706 | 470 | /// Number of events in the current galice.root file we're attached to |
471 | if (!IsValid()) return 0; | |
472 | return fLoader->GetRunLoader()->GetNumberOfEvents(); | |
a202c2d2 | 473 | } |
48b32e42 | 474 | |
e9bef706 | 475 | //_____________________________________________________________________________ |
a202c2d2 | 476 | void |
e9bef706 | 477 | AliMUONDataInterface::Open(const char* filename) |
48b32e42 | 478 | { |
e9bef706 | 479 | /// Connect to a given galice.root file |
480 | ||
481 | delete fDigitStore; | |
482 | fDigitStore=0x0; | |
483 | delete fTriggerStore; | |
484 | fTriggerStore=0x0; | |
485 | delete fClusterStore; | |
486 | fClusterStore=0x0; | |
487 | delete fTrackStore; | |
488 | fTrackStore=0x0; | |
489 | delete fTriggerTrackStore; | |
490 | fTriggerTrackStore=0x0; | |
491 | ||
492 | fCurrentEvent=-1; | |
493 | ||
494 | if ( fLoader ) | |
495 | { | |
496 | delete fLoader->GetRunLoader(); | |
497 | } | |
498 | ||
499 | fLoader = 0x0; | |
500 | ||
501 | fIsValid = kTRUE; | |
502 | ||
503 | TString foldername(Form("%s-%d",ClassName(),fgInstanceCounter)); | |
504 | ||
505 | while (AliRunLoader::GetRunLoader(foldername)) | |
506 | { | |
507 | delete AliRunLoader::GetRunLoader(foldername); | |
508 | } | |
509 | ||
510 | AliRunLoader* runLoader = AliRunLoader::Open(filename,foldername); | |
511 | if (!runLoader) | |
512 | { | |
513 | AliError(Form("Cannot open file %s",filename)); | |
514 | fIsValid = kFALSE; | |
515 | } | |
516 | fLoader = runLoader->GetDetectorLoader("MUON"); | |
517 | if (!fLoader) | |
518 | { | |
519 | AliError("Cannot get AliMUONLoader"); | |
520 | fIsValid = kFALSE; | |
521 | } | |
522 | ||
523 | if (!IsValid()) | |
524 | { | |
525 | AliError(Form("Could not access %s filename. Object is unuseable",filename)); | |
526 | } | |
925e6570 | 527 | } |
48b32e42 | 528 | |
a202c2d2 | 529 | //______________________________________________________________________________ |
530 | AliMUONVTrackStore* | |
e9bef706 | 531 | AliMUONDataInterface::TrackStore(Int_t event) |
48b32e42 | 532 | { |
e9bef706 | 533 | /// Return the trackStore for a given event. |
534 | /// Return 0x0 if event not found. | |
535 | /// Returned pointer should not be deleted | |
536 | ||
537 | if ( LoadEvent(event) ) return 0x0; | |
538 | ||
539 | fLoader->LoadTracks(); | |
540 | ||
541 | TTree* treeT = fLoader->TreeT(); | |
542 | ||
543 | if (!treeT) | |
544 | { | |
545 | AliError("Could not get treeT"); | |
546 | return 0x0; | |
547 | } | |
548 | ||
549 | if (!fTrackStore) | |
550 | { | |
551 | fTrackStore = AliMUONVTrackStore::Create(*treeT); | |
552 | } | |
553 | ||
554 | if ( fTrackStore ) | |
555 | { | |
556 | fTrackStore->Clear(); | |
557 | fTrackStore->Connect(*treeT); | |
558 | treeT->GetEvent(0); | |
559 | } | |
560 | ||
561 | fLoader->UnloadTracks(); | |
562 | ||
563 | return fTrackStore; | |
925e6570 | 564 | } |
48b32e42 | 565 | |
a202c2d2 | 566 | //______________________________________________________________________________ |
567 | AliMUONVTriggerTrackStore* | |
e9bef706 | 568 | AliMUONDataInterface::TriggerTrackStore(Int_t event) |
a202c2d2 | 569 | { |
e9bef706 | 570 | /// Return the triggerTrackStore for a given event. |
571 | /// Return 0x0 if event not found. | |
572 | /// Returned pointer should not be deleted | |
573 | ||
574 | if ( LoadEvent(event) ) return 0x0; | |
575 | ||
576 | fLoader->LoadTracks(); | |
577 | ||
578 | TTree* treeT = fLoader->TreeT(); | |
579 | ||
580 | if (!treeT) | |
581 | { | |
582 | AliError("Could not get treeT"); | |
583 | return 0x0; | |
584 | } | |
585 | ||
586 | if (!fTriggerTrackStore) | |
587 | { | |
588 | fTriggerTrackStore = AliMUONVTriggerTrackStore::Create(*treeT); | |
589 | } | |
590 | ||
591 | if ( fTriggerTrackStore ) | |
592 | { | |
593 | fTriggerTrackStore->Clear(); | |
594 | fTriggerTrackStore->Connect(*treeT); | |
595 | treeT->GetEvent(0); | |
596 | } | |
597 | ||
598 | fLoader->UnloadTracks(); | |
599 | ||
600 | return fTriggerTrackStore; | |
a202c2d2 | 601 | } |
48b32e42 | 602 | |
e9bef706 | 603 | //_____________________________________________________________________________ |
604 | AliMUONVTriggerStore* | |
605 | AliMUONDataInterface::TriggerStore(Int_t event, const char* treeLetter) | |
48b32e42 | 606 | { |
e9bef706 | 607 | /// Return the triggerStore for a given event. |
608 | /// Return 0x0 if event not found. | |
609 | /// Returned pointer should not be deleted | |
610 | /// treeLetter can be R or D to tell from which tree to read the information | |
611 | ||
612 | if ( LoadEvent(event) ) return 0x0; | |
613 | ||
614 | TTree* tree(0x0); | |
615 | ||
616 | TString stree(treeLetter); | |
617 | stree.ToUpper(); | |
618 | ||
619 | if ( stree == "D" ) | |
620 | { | |
621 | fLoader->LoadDigits(); | |
622 | tree = fLoader->TreeD(); | |
623 | } | |
624 | else if ( stree == "R" ) | |
625 | { | |
626 | fLoader->LoadRecPoints(); | |
627 | tree = fLoader->TreeR(); | |
628 | } | |
629 | ||
630 | if ( !tree ) | |
631 | { | |
632 | AliError(Form("Could not get tree%s",treeLetter)); | |
633 | return 0x0; | |
634 | } | |
635 | ||
636 | if (!fTriggerStore) | |
637 | { | |
638 | fTriggerStore = AliMUONVTriggerStore::Create(*tree); | |
639 | } | |
640 | ||
641 | if ( fTriggerStore ) | |
642 | { | |
643 | fTriggerStore->Clear(); | |
644 | fTriggerStore->Connect(*tree); | |
645 | tree->GetEvent(0); | |
646 | } | |
647 | ||
648 | if ( stree == "D" ) | |
649 | { | |
650 | fLoader->UnloadDigits(); | |
651 | } | |
652 | else if ( stree == "R" ) | |
653 | { | |
654 | fLoader->UnloadRecPoints(); | |
655 | } | |
656 | ||
657 | return fTriggerStore; | |
925e6570 | 658 | } |
48b32e42 | 659 | |
a202c2d2 | 660 | //______________________________________________________________________________ |
661 | //______________________________________________________________________________ | |
662 | //______________________________________________________________________________ | |
663 | //______________________________________________________________________________ | |
48b32e42 | 664 | |
a202c2d2 | 665 | void AliMUONDataInterface::Reset() |
48b32e42 | 666 | { |
a202c2d2 | 667 | /// \deprecated Method is going to be removed |
668 | ||
669 | AliFatal("Deprecated"); | |
925e6570 | 670 | } |
48b32e42 | 671 | |
a202c2d2 | 672 | Bool_t AliMUONDataInterface::UseCurrentRunLoader() |
554b38a6 | 673 | { |
a202c2d2 | 674 | /// \deprecated Method is going to be removed |
675 | ||
676 | AliFatal("Deprecated"); | |
677 | return kFALSE; | |
554b38a6 | 678 | } |
679 | ||
a202c2d2 | 680 | Int_t AliMUONDataInterface::NumberOfEvents(TString , TString ) |
48b32e42 | 681 | { |
a202c2d2 | 682 | /// \deprecated Method is going to be removed |
48b32e42 | 683 | |
a202c2d2 | 684 | AliFatal("Deprecated"); |
685 | return 0; | |
925e6570 | 686 | } |
48b32e42 | 687 | |
688 | ||
a202c2d2 | 689 | Int_t AliMUONDataInterface::NumberOfParticles(TString , TString , Int_t ) |
48b32e42 | 690 | { |
a202c2d2 | 691 | /// \deprecated Method is going to be removed |
48b32e42 | 692 | |
a202c2d2 | 693 | AliFatal("Deprecated"); |
694 | return 0; | |
925e6570 | 695 | } |
48b32e42 | 696 | |
697 | ||
698 | TParticle* AliMUONDataInterface::Particle( | |
a202c2d2 | 699 | TString , TString , Int_t , Int_t |
48b32e42 | 700 | ) |
701 | { | |
a202c2d2 | 702 | /// \deprecated Method is going to be removed |
703 | ||
704 | AliFatal("Deprecated"); | |
705 | return 0; | |
925e6570 | 706 | } |
48b32e42 | 707 | |
708 | ||
a202c2d2 | 709 | Int_t AliMUONDataInterface::NumberOfTracks(TString , TString , Int_t ) |
48b32e42 | 710 | { |
a202c2d2 | 711 | /// \deprecated Method is going to be removed |
48b32e42 | 712 | |
a202c2d2 | 713 | AliFatal("Deprecated"); |
714 | return 0; | |
925e6570 | 715 | } |
48b32e42 | 716 | |
717 | ||
718 | Int_t AliMUONDataInterface::NumberOfHits( | |
a202c2d2 | 719 | TString , TString , Int_t , Int_t |
48b32e42 | 720 | ) |
721 | { | |
a202c2d2 | 722 | /// \deprecated Method is going to be removed |
723 | ||
724 | AliFatal("Deprecated"); | |
725 | return 0; | |
925e6570 | 726 | } |
48b32e42 | 727 | |
728 | ||
729 | AliMUONHit* AliMUONDataInterface::Hit( | |
a202c2d2 | 730 | TString , TString , Int_t , |
731 | Int_t , Int_t | |
48b32e42 | 732 | ) |
733 | { | |
a202c2d2 | 734 | /// \deprecated Method is going to be removed |
735 | ||
736 | AliFatal("Deprecated"); | |
737 | return 0; | |
925e6570 | 738 | } |
48b32e42 | 739 | |
740 | ||
741 | Int_t AliMUONDataInterface::NumberOfSDigits( | |
a202c2d2 | 742 | TString , TString , Int_t , |
743 | Int_t , Int_t | |
48b32e42 | 744 | ) |
745 | { | |
a202c2d2 | 746 | /// \deprecated Method is going to be removed |
747 | ||
748 | AliFatal("Deprecated"); | |
749 | return 0; | |
925e6570 | 750 | } |
48b32e42 | 751 | |
752 | ||
753 | AliMUONDigit* AliMUONDataInterface::SDigit( | |
a202c2d2 | 754 | TString , TString , Int_t , |
755 | Int_t , Int_t , Int_t | |
48b32e42 | 756 | ) |
757 | { | |
a202c2d2 | 758 | /// \deprecated Method is going to be removed |
759 | ||
760 | AliFatal("Deprecated"); | |
761 | return 0; | |
925e6570 | 762 | } |
48b32e42 | 763 | |
764 | ||
765 | Int_t AliMUONDataInterface::NumberOfDigits( | |
a202c2d2 | 766 | TString , TString , Int_t , |
767 | Int_t , Int_t | |
48b32e42 | 768 | ) |
769 | { | |
a202c2d2 | 770 | /// \deprecated Method is going to be removed |
771 | ||
772 | AliFatal("Deprecated"); | |
773 | return 0; | |
925e6570 | 774 | } |
48b32e42 | 775 | |
776 | ||
777 | AliMUONDigit* AliMUONDataInterface::Digit( | |
a202c2d2 | 778 | TString , TString , Int_t , |
779 | Int_t , Int_t , Int_t | |
48b32e42 | 780 | ) |
781 | { | |
a202c2d2 | 782 | /// \deprecated Method is going to be removed |
783 | ||
784 | AliFatal("Deprecated"); | |
785 | return 0; | |
925e6570 | 786 | } |
48b32e42 | 787 | |
788 | ||
789 | Int_t AliMUONDataInterface::NumberOfRawClusters( | |
a202c2d2 | 790 | TString , TString , Int_t , Int_t |
48b32e42 | 791 | ) |
792 | { | |
a202c2d2 | 793 | /// \deprecated Method is going to be removed |
794 | ||
795 | AliFatal("Deprecated"); | |
796 | return 0; | |
925e6570 | 797 | } |
48b32e42 | 798 | |
799 | ||
800 | AliMUONRawCluster* AliMUONDataInterface::RawCluster( | |
a202c2d2 | 801 | TString , TString , Int_t , |
802 | Int_t , Int_t | |
48b32e42 | 803 | ) |
804 | { | |
a202c2d2 | 805 | /// \deprecated Method is going to be removed |
806 | ||
807 | AliFatal("Deprecated"); | |
808 | return 0; | |
925e6570 | 809 | } |
48b32e42 | 810 | |
811 | ||
a202c2d2 | 812 | Int_t AliMUONDataInterface::NumberOfLocalTriggers(TString , TString , Int_t ) |
48b32e42 | 813 | { |
a202c2d2 | 814 | /// \deprecated Method is going to be removed |
815 | ||
816 | AliFatal("Deprecated"); | |
817 | return 0; | |
925e6570 | 818 | } |
48b32e42 | 819 | |
820 | ||
821 | AliMUONLocalTrigger* AliMUONDataInterface::LocalTrigger( | |
a202c2d2 | 822 | TString , TString , Int_t , Int_t |
48b32e42 | 823 | ) |
824 | { | |
a202c2d2 | 825 | /// \deprecated Method is going to be removed |
826 | ||
827 | AliFatal("Deprecated"); | |
828 | return 0; | |
925e6570 | 829 | } |
48b32e42 | 830 | |
a202c2d2 | 831 | Bool_t AliMUONDataInterface::SetFile(TString , TString ) |
48b32e42 | 832 | { |
a202c2d2 | 833 | /// \deprecated Method is going to be removed |
48b32e42 | 834 | |
a202c2d2 | 835 | AliFatal("Deprecated"); |
836 | return 0; | |
925e6570 | 837 | } |
48b32e42 | 838 | |
839 | ||
a202c2d2 | 840 | Bool_t AliMUONDataInterface::GetEvent(Int_t ) |
48b32e42 | 841 | { |
a202c2d2 | 842 | /// \deprecated Method is going to be removed |
48b32e42 | 843 | |
a202c2d2 | 844 | AliFatal("Deprecated"); |
845 | return 0; | |
925e6570 | 846 | } |
48b32e42 | 847 | |
48b32e42 | 848 | Int_t AliMUONDataInterface::NumberOfParticles() |
849 | { | |
a202c2d2 | 850 | /// \deprecated Method is going to be removed |
851 | ||
852 | AliFatal("Deprecated"); | |
853 | return 0; | |
925e6570 | 854 | } |
48b32e42 | 855 | |
856 | ||
a202c2d2 | 857 | TParticle* AliMUONDataInterface::Particle(Int_t ) |
48b32e42 | 858 | { |
a202c2d2 | 859 | /// \deprecated Method is going to be removed |
860 | ||
861 | AliFatal("Deprecated"); | |
862 | return 0; | |
925e6570 | 863 | } |
48b32e42 | 864 | |
865 | ||
866 | Int_t AliMUONDataInterface::NumberOfTracks() | |
867 | { | |
a202c2d2 | 868 | /// \deprecated Method is going to be removed |
869 | ||
870 | AliFatal("Deprecated"); | |
871 | return 0; | |
925e6570 | 872 | } |
48b32e42 | 873 | |
874 | ||
a202c2d2 | 875 | Int_t AliMUONDataInterface::NumberOfHits(Int_t ) |
48b32e42 | 876 | { |
a202c2d2 | 877 | /// \deprecated Method is going to be removed |
878 | ||
879 | AliFatal("Deprecated"); | |
880 | return 0; | |
925e6570 | 881 | } |
48b32e42 | 882 | |
883 | ||
a202c2d2 | 884 | AliMUONHit* |
885 | AliMUONDataInterface::Hit(Int_t , Int_t ) | |
48b32e42 | 886 | { |
a202c2d2 | 887 | /// \deprecated Method is going to be removed |
888 | ||
889 | AliFatal("Deprecated"); | |
890 | return 0; | |
925e6570 | 891 | } |
48b32e42 | 892 | |
893 | ||
a202c2d2 | 894 | Int_t AliMUONDataInterface::NumberOfSDigits(Int_t , Int_t ) |
48b32e42 | 895 | { |
a202c2d2 | 896 | /// \deprecated Method is going to be removed |
897 | ||
898 | AliFatal("Deprecated"); | |
899 | return 0; | |
925e6570 | 900 | } |
48b32e42 | 901 | |
902 | ||
a202c2d2 | 903 | AliMUONDigit* AliMUONDataInterface::SDigit(Int_t , Int_t , Int_t ) |
48b32e42 | 904 | { |
a202c2d2 | 905 | /// \deprecated Method is going to be removed |
906 | ||
907 | AliFatal("Deprecated"); | |
908 | return 0; | |
909 | ||
925e6570 | 910 | } |
48b32e42 | 911 | |
912 | ||
a202c2d2 | 913 | Int_t AliMUONDataInterface::NumberOfDigits(Int_t , Int_t ) |
48b32e42 | 914 | { |
a202c2d2 | 915 | /// \deprecated Method is going to be removed |
916 | ||
917 | AliFatal("Deprecated"); | |
918 | return 0; | |
919 | ||
925e6570 | 920 | } |
48b32e42 | 921 | |
922 | ||
a202c2d2 | 923 | AliMUONDigit* AliMUONDataInterface::Digit(Int_t , Int_t , Int_t ) |
48b32e42 | 924 | { |
a202c2d2 | 925 | /// \deprecated Method is going to be removed |
926 | ||
927 | AliFatal("Deprecated"); | |
928 | return 0; | |
925e6570 | 929 | } |
48b32e42 | 930 | |
931 | ||
a202c2d2 | 932 | Int_t AliMUONDataInterface::NumberOfRawClusters(Int_t ) |
48b32e42 | 933 | { |
a202c2d2 | 934 | /// \deprecated Method is going to be removed |
935 | ||
936 | AliFatal("Deprecated"); | |
937 | return 0; | |
925e6570 | 938 | } |
48b32e42 | 939 | |
940 | ||
a202c2d2 | 941 | AliMUONRawCluster* AliMUONDataInterface::RawCluster(Int_t , Int_t ) |
48b32e42 | 942 | { |
a202c2d2 | 943 | /// \deprecated Method is going to be removed |
944 | ||
945 | AliFatal("Deprecated"); | |
946 | return 0; | |
925e6570 | 947 | } |
48b32e42 | 948 | |
949 | ||
950 | Int_t AliMUONDataInterface::NumberOfLocalTriggers() | |
951 | { | |
a202c2d2 | 952 | /// \deprecated Method is going to be removed |
953 | ||
954 | AliFatal("Deprecated"); | |
955 | return 0; | |
925e6570 | 956 | } |
48b32e42 | 957 | |
958 | ||
a202c2d2 | 959 | AliMUONLocalTrigger* AliMUONDataInterface::LocalTrigger(Int_t ) |
48b32e42 | 960 | { |
a202c2d2 | 961 | /// \deprecated Method is going to be removed |
962 | ||
963 | AliFatal("Deprecated"); | |
964 | return 0; | |
925e6570 | 965 | } |
554b38a6 | 966 | |
967 | Int_t AliMUONDataInterface::NumberOfGlobalTriggers() | |
968 | { | |
a202c2d2 | 969 | /// \deprecated Method is going to be removed |
970 | ||
971 | AliFatal("Deprecated"); | |
972 | return 0; | |
554b38a6 | 973 | } |
974 | ||
a202c2d2 | 975 | AliMUONGlobalTrigger* AliMUONDataInterface::GlobalTrigger(Int_t ) |
554b38a6 | 976 | { |
a202c2d2 | 977 | /// \deprecated Method is going to be removed |
978 | ||
979 | AliFatal("Deprecated"); | |
980 | return 0; | |
554b38a6 | 981 | } |
982 | ||
983 | Int_t AliMUONDataInterface::NumberOfRecTracks() | |
984 | { | |
a202c2d2 | 985 | /// \deprecated Method is going to be removed |
986 | ||
987 | AliFatal("Deprecated"); | |
988 | return 0; | |
554b38a6 | 989 | } |
990 | ||
a202c2d2 | 991 | AliMUONTrack* AliMUONDataInterface::RecTrack(Int_t ) |
554b38a6 | 992 | { |
a202c2d2 | 993 | /// \deprecated Method is going to be removed |
994 | ||
995 | AliFatal("Deprecated"); | |
996 | return 0; | |
554b38a6 | 997 | } |