ROOT logo
#ifndef ALIMUONDIGITSTOREV1_H
#define ALIMUONDIGITSTOREV1_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice                               */

// $Id$

/// \ingroup base
/// \class AliMUONDigitStoreV1
/// \brief (Legacy) implementation of AliMUONVDigitStore
/// 
// Author Laurent Aphecetche

#ifndef ALIMUONVDIGITSTORE_H
#  include "AliMUONVDigitStore.h"
#endif

class TObjArray;
class TClonesArray;

class AliMUONDigitStoreV1 : public AliMUONVDigitStore
{
public:
  AliMUONDigitStoreV1();
  AliMUONDigitStoreV1(TRootIOCtor* dummy);
  AliMUONDigitStoreV1(const AliMUONDigitStoreV1& rhs);
  AliMUONDigitStoreV1& operator=(const AliMUONDigitStoreV1& rhs);  
  virtual ~AliMUONDigitStoreV1();
  
  virtual void Clear(Option_t* opt="");

  /// Whether the Connect(TTree&) method is implemented
  virtual Bool_t CanConnect() const { return kTRUE; }
  
  // Below are our specific methods
    
  virtual AliMUONVDigitStore* Create() const { return new AliMUONDigitStoreV1; }
  
  virtual Bool_t Connect(TTree& tree, Bool_t alone=kTRUE) const;

  virtual AliMUONVDigit* CreateDigit(Int_t detElemId, Int_t manuId,
                                     Int_t manuChannel, Int_t cathode) const;
  
  using AliMUONVDigitStore::Add;
  
  virtual AliMUONVDigit* Add(const AliMUONVDigit& digit, EReplacePolicy replace=kDeny);

  virtual TIterator* CreateIterator() const;
  
  virtual TIterator* CreateTrackerIterator() const;
  
  virtual TIterator* CreateTriggerIterator() const;

  virtual TIterator* CreateIterator(Int_t firstDetElemId, 
                                    Int_t lastDetElemId,
                                    Int_t cathode=2) const;
    
  using AliMUONVDigitStore::FindObject;
  
  virtual AliMUONVDigit* FindObject(Int_t detElemId, Int_t manuId, 
                                    Int_t manuChannel, Int_t cathode) const;

  using AliMUONVDigitStore::GetSize;
  
  virtual Int_t GetSize() const;
  
  virtual AliMUONVDigit* Remove(AliMUONVDigit& digit);

  Bool_t HasMCInformation() const;
  
private:

  TObject** ChamberDigitsPtr(Int_t chamberId) const;
  
  TClonesArray* ChamberDigits(Int_t chamberId);
  const TClonesArray* ChamberDigits(Int_t chamberId) const;
  
  AliMUONVDigit* Find(const AliMUONVDigit& digit, Int_t& index) const;
  
  AliMUONVDigit* FindIndex(Int_t detElemId, Int_t manuId, 
                           Int_t manuChannel, Int_t cathode, Int_t& index) const;
  
private:
  TObjArray* fDigits; ///< array of tclonesarray
  TClonesArray* fChamberDigits; ///< array of digits for one chamber
  
  ClassDef(AliMUONDigitStoreV1,1) // (Legacy) Implementation of AliMUONVDigitStore
};

#endif
 AliMUONDigitStoreV1.h:1
 AliMUONDigitStoreV1.h:2
 AliMUONDigitStoreV1.h:3
 AliMUONDigitStoreV1.h:4
 AliMUONDigitStoreV1.h:5
 AliMUONDigitStoreV1.h:6
 AliMUONDigitStoreV1.h:7
 AliMUONDigitStoreV1.h:8
 AliMUONDigitStoreV1.h:9
 AliMUONDigitStoreV1.h:10
 AliMUONDigitStoreV1.h:11
 AliMUONDigitStoreV1.h:12
 AliMUONDigitStoreV1.h:13
 AliMUONDigitStoreV1.h:14
 AliMUONDigitStoreV1.h:15
 AliMUONDigitStoreV1.h:16
 AliMUONDigitStoreV1.h:17
 AliMUONDigitStoreV1.h:18
 AliMUONDigitStoreV1.h:19
 AliMUONDigitStoreV1.h:20
 AliMUONDigitStoreV1.h:21
 AliMUONDigitStoreV1.h:22
 AliMUONDigitStoreV1.h:23
 AliMUONDigitStoreV1.h:24
 AliMUONDigitStoreV1.h:25
 AliMUONDigitStoreV1.h:26
 AliMUONDigitStoreV1.h:27
 AliMUONDigitStoreV1.h:28
 AliMUONDigitStoreV1.h:29
 AliMUONDigitStoreV1.h:30
 AliMUONDigitStoreV1.h:31
 AliMUONDigitStoreV1.h:32
 AliMUONDigitStoreV1.h:33
 AliMUONDigitStoreV1.h:34
 AliMUONDigitStoreV1.h:35
 AliMUONDigitStoreV1.h:36
 AliMUONDigitStoreV1.h:37
 AliMUONDigitStoreV1.h:38
 AliMUONDigitStoreV1.h:39
 AliMUONDigitStoreV1.h:40
 AliMUONDigitStoreV1.h:41
 AliMUONDigitStoreV1.h:42
 AliMUONDigitStoreV1.h:43
 AliMUONDigitStoreV1.h:44
 AliMUONDigitStoreV1.h:45
 AliMUONDigitStoreV1.h:46
 AliMUONDigitStoreV1.h:47
 AliMUONDigitStoreV1.h:48
 AliMUONDigitStoreV1.h:49
 AliMUONDigitStoreV1.h:50
 AliMUONDigitStoreV1.h:51
 AliMUONDigitStoreV1.h:52
 AliMUONDigitStoreV1.h:53
 AliMUONDigitStoreV1.h:54
 AliMUONDigitStoreV1.h:55
 AliMUONDigitStoreV1.h:56
 AliMUONDigitStoreV1.h:57
 AliMUONDigitStoreV1.h:58
 AliMUONDigitStoreV1.h:59
 AliMUONDigitStoreV1.h:60
 AliMUONDigitStoreV1.h:61
 AliMUONDigitStoreV1.h:62
 AliMUONDigitStoreV1.h:63
 AliMUONDigitStoreV1.h:64
 AliMUONDigitStoreV1.h:65
 AliMUONDigitStoreV1.h:66
 AliMUONDigitStoreV1.h:67
 AliMUONDigitStoreV1.h:68
 AliMUONDigitStoreV1.h:69
 AliMUONDigitStoreV1.h:70
 AliMUONDigitStoreV1.h:71
 AliMUONDigitStoreV1.h:72
 AliMUONDigitStoreV1.h:73
 AliMUONDigitStoreV1.h:74
 AliMUONDigitStoreV1.h:75
 AliMUONDigitStoreV1.h:76
 AliMUONDigitStoreV1.h:77
 AliMUONDigitStoreV1.h:78
 AliMUONDigitStoreV1.h:79
 AliMUONDigitStoreV1.h:80
 AliMUONDigitStoreV1.h:81
 AliMUONDigitStoreV1.h:82
 AliMUONDigitStoreV1.h:83
 AliMUONDigitStoreV1.h:84
 AliMUONDigitStoreV1.h:85
 AliMUONDigitStoreV1.h:86
 AliMUONDigitStoreV1.h:87
 AliMUONDigitStoreV1.h:88
 AliMUONDigitStoreV1.h:89
 AliMUONDigitStoreV1.h:90
 AliMUONDigitStoreV1.h:91