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