Adding comment lines to class description needed for Root documentation,
[u/mrichter/AliRoot.git] / MUON / AliMUONDataInterface.cxx
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
63 ClassImp(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
75 Int_t AliMUONDataInterface::fgInstanceCounter(0);
76
77 //______________________________________________________________________________
78 AliMUONDataInterface::AliMUONDataInterface(const char* filename)
79 : TObject(), 
80 fLoader(0x0),
81 fDigitStore(0x0),
82 fTriggerStore(0x0),
83 fClusterStore(0x0),
84 fTrackStore(0x0),
85 fTriggerTrackStore(0x0),
86 fCurrentEvent(-1),
87 fIsValid(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 //______________________________________________________________________________
98 AliMUONDataInterface::~AliMUONDataInterface()
99 {
100   /// dtor
101   if ( fLoader ) 
102   {
103     delete fLoader->GetRunLoader();
104   }
105   --fgInstanceCounter;  
106 }
107
108 //______________________________________________________________________________
109 AliMUONVClusterStore*
110 AliMUONDataInterface::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 //______________________________________________________________________________
146 AliMUONVDigitStore*
147 AliMUONDataInterface::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 //______________________________________________________________________________
183 void
184 AliMUONDataInterface::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 //______________________________________________________________________________
202 void
203 AliMUONDataInterface::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 //_____________________________________________________________________________
221 void
222 AliMUONDataInterface::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 //______________________________________________________________________________
242 void
243 AliMUONDataInterface::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 //______________________________________________________________________________
263 void
264 AliMUONDataInterface::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 //_____________________________________________________________________________
284 void
285 AliMUONDataInterface::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 //_____________________________________________________________________________
307 void
308 AliMUONDataInterface::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 //______________________________________________________________________________
439 Bool_t
440 AliMUONDataInterface::IsValid() const
441 {
442   /// Whether we were properly initialized from a valid galice.root file
443   return fIsValid;
444 }
445
446 //_____________________________________________________________________________
447 Int_t
448 AliMUONDataInterface::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 //______________________________________________________________________________
468 Int_t
469 AliMUONDataInterface::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 //_____________________________________________________________________________
477 void
478 AliMUONDataInterface::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 //______________________________________________________________________________
531 AliMUONVTrackStore* 
532 AliMUONDataInterface::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 //______________________________________________________________________________
568 AliMUONVTriggerTrackStore* 
569 AliMUONDataInterface::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 //_____________________________________________________________________________
605 AliMUONVTriggerStore*
606 AliMUONDataInterface::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
666 void AliMUONDataInterface::Reset()
667 {
668 /// \deprecated Method is going to be removed
669
670   AliFatal("Deprecated");
671 }
672
673 Bool_t AliMUONDataInterface::UseCurrentRunLoader()
674 {
675 /// \deprecated Method is going to be removed
676
677   AliFatal("Deprecated");
678   return kFALSE;
679 }
680   
681 Int_t AliMUONDataInterface::NumberOfEvents(TString , TString )
682 {
683 /// \deprecated Method is going to be removed
684
685   AliFatal("Deprecated");
686   return 0;
687 }
688
689
690 Int_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
699 TParticle* 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
710 Int_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
719 Int_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
730 AliMUONHit* 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
742 Int_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
754 AliMUONDigit* 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
766 Int_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
778 AliMUONDigit* 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
790 Int_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
801 AliMUONRawCluster* 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
813 Int_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
822 AliMUONLocalTrigger* 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
832 Bool_t AliMUONDataInterface::SetFile(TString , TString )
833 {
834 /// \deprecated Method is going to be removed
835
836   AliFatal("Deprecated");
837   return 0;
838 }
839
840
841 Bool_t AliMUONDataInterface::GetEvent(Int_t )
842 {
843 /// \deprecated Method is going to be removed
844
845   AliFatal("Deprecated");
846   return 0;
847 }
848
849 Int_t AliMUONDataInterface::NumberOfParticles()
850 {
851 /// \deprecated Method is going to be removed
852
853   AliFatal("Deprecated");
854   return 0;
855 }
856
857
858 TParticle* AliMUONDataInterface::Particle(Int_t )
859 {
860 /// \deprecated Method is going to be removed
861
862   AliFatal("Deprecated");
863   return 0;
864 }
865
866
867 Int_t AliMUONDataInterface::NumberOfTracks()
868 {
869 /// \deprecated Method is going to be removed
870
871   AliFatal("Deprecated");
872   return 0;
873 }
874
875
876 Int_t AliMUONDataInterface::NumberOfHits(Int_t )
877 {
878 /// \deprecated Method is going to be removed
879
880   AliFatal("Deprecated");
881   return 0;
882 }
883
884
885 AliMUONHit* 
886 AliMUONDataInterface::Hit(Int_t , Int_t )
887 {
888 /// \deprecated Method is going to be removed
889
890   AliFatal("Deprecated");
891   return 0;
892 }
893
894
895 Int_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
904 AliMUONDigit* 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
914 Int_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
924 AliMUONDigit* 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
933 Int_t AliMUONDataInterface::NumberOfRawClusters(Int_t )
934 {
935 /// \deprecated Method is going to be removed
936
937   AliFatal("Deprecated");
938   return 0;
939 }
940
941
942 AliMUONRawCluster* 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
951 Int_t AliMUONDataInterface::NumberOfLocalTriggers()
952 {
953 /// \deprecated Method is going to be removed
954
955   AliFatal("Deprecated");
956   return 0;
957 }
958
959
960 AliMUONLocalTrigger* AliMUONDataInterface::LocalTrigger(Int_t )
961 {
962 /// \deprecated Method is going to be removed
963
964   AliFatal("Deprecated");
965   return 0;
966 }
967
968 Int_t AliMUONDataInterface::NumberOfGlobalTriggers()
969 {
970 /// \deprecated Method is going to be removed
971
972   AliFatal("Deprecated");
973   return 0;
974 }
975
976 AliMUONGlobalTrigger* AliMUONDataInterface::GlobalTrigger(Int_t )
977 {
978 /// \deprecated Method is going to be removed
979
980   AliFatal("Deprecated");
981   return 0;
982 }
983
984 Int_t AliMUONDataInterface::NumberOfRecTracks()
985 {
986 /// \deprecated Method is going to be removed
987
988   AliFatal("Deprecated");
989   return 0;
990 }
991
992 AliMUONTrack* AliMUONDataInterface::RecTrack(Int_t )
993 {
994 /// \deprecated Method is going to be removed
995
996   AliFatal("Deprecated");
997   return 0;
998 }