ROOT logo
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: The ALICE Off-line Project.                                    *
* Contributors are mentioned in the code where appropriate.              *
*                                                                        *
* Permission to use, copy, modify and distribute this software and its   *
* documentation strictly for non-commercial purposes is hereby granted   *
* without fee, provided that the above copyright notice appears in all   *
* copies and that both the copyright notice and this permission notice   *
* appear in the supporting documentation. The authors make no claims     *
* about the suitability of this software for any purpose. It is          *
* provided "as is" without express or implied warranty.                  *
**************************************************************************/

// $Id$

#include "AliMUONDigitStoreV1.h"

//-----------------------------------------------------------------------------
/// \class AliMUONDigitStoreV1
///
/// (Legacy) Implementation of AliMUONVDigitStore. 
/// Called legacy as the internal structure corresponds to what we
/// used to write as MUON.(S)Digits.root files, before the switch 
/// to data stores.
///
// \author Laurent Aphecetche, Subatech
//-----------------------------------------------------------------------------

#include "AliLog.h"
#include "AliMUONDigit.h"
#include "AliMUONDigitStoreV1Iterator.h"
#include "AliMUONTOTCAStoreIterator.h"
#include "AliMUONTreeManager.h"
#include "AliMpConstants.h"
#include "AliMpDEManager.h"
#include "AliMpDEManager.h"
#include "AliMpStationType.h"
#include <Riostream.h>
#include <TClonesArray.h>
#include <TObjArray.h>
#include <TTree.h>

/// \cond CLASSIMP
ClassImp(AliMUONDigitStoreV1)
/// \endcond

namespace
{
  TString BaseName(const TString& name)
  {
    if ( name == "TreeS" ) return "MUONSDigit";
    if ( name == "TreeD" ) return "MUONDigit";
    return "";
  }
}

//_____________________________________________________________________________
AliMUONDigitStoreV1::AliMUONDigitStoreV1(TRootIOCtor* /*dummy*/)
: AliMUONVDigitStore(), 
fDigits(0x0),
fChamberDigits(0x0)
{
  /// ctor
}

//_____________________________________________________________________________
AliMUONDigitStoreV1::AliMUONDigitStoreV1()
: AliMUONVDigitStore(), 
fDigits(new TObjArray(AliMpConstants::NofChambers())),
fChamberDigits(0x0)
{
  /// ctor
  fDigits->SetOwner(kTRUE);
  for ( Int_t i = 0; i < fDigits->GetSize(); ++i )
  {
    TClonesArray* tca = new TClonesArray("AliMUONDigit",100);
    tca->SetOwner(kTRUE);
    fDigits->AddAt(tca,i);
  }
  Clear();
  AliDebug(1,"");
}

//_____________________________________________________________________________
AliMUONDigitStoreV1::AliMUONDigitStoreV1(const AliMUONDigitStoreV1&)
: AliMUONVDigitStore(), 
fDigits(0x0),
fChamberDigits(0x0)
{
  /// copy ctor
  AliError("Please implement me");
}

//_____________________________________________________________________________
AliMUONDigitStoreV1& 
AliMUONDigitStoreV1::operator=(const AliMUONDigitStoreV1&)
{
  /// assignement operator
  AliError("Please implement me");
  return *this;
}

//_____________________________________________________________________________
AliMUONDigitStoreV1::~AliMUONDigitStoreV1()
{
  /// dtor
  delete fDigits;
}


//_____________________________________________________________________________
void 
AliMUONDigitStoreV1::Clear(Option_t* /*opt*/)
{
  /// Clear the tclonesarray, but keep the tobjarray's size constant.

  for ( Int_t i = 0; i <= fDigits->GetLast(); ++i ) 
  {
    ChamberDigits(i)->Clear("C");
  }  
}

//_____________________________________________________________________________
AliMUONVDigit* 
AliMUONDigitStoreV1::Add(const AliMUONVDigit& vdigit, EReplacePolicy replace)
{
  /// Try to add a digit to the store. Return whether the try was successfull
  /// or not.
  /// 
  /// If the digit is already there, the action taken depends on "replace"
  /// kAllow -> replacement will occur (i.e. return kTRUE)
  /// kDeny -> replacement will *not* occur (and returned value is kFALSE)
  /// kMerge -> both digits will be merged into one (return kTRUE)
  ///
  
  const AliMUONDigit* digit = dynamic_cast<const AliMUONDigit*>(&vdigit);
  
  if (!digit)
  {
    AliError(Form("Digit is not of the expected type (%s vs AliMUONdigit)",
                  vdigit.ClassName()));
    return 0x0;
  }
  
  Int_t index(-1);
  
  if ( replace != kIgnore ) 
  {
    AliMUONVDigit* alreadyThere = Find(*digit,index);
  
    if ( alreadyThere ) 
    {
      if ( replace == kDeny ) 
      {
        return 0x0;
      }
      if ( replace == kMerge ) 
      {
        alreadyThere->MergeWith(*digit);
        return alreadyThere;
      }
    }
  }
  
  Int_t detElemId = digit->DetElemId();
  Int_t iChamber = AliMpDEManager::GetChamberId(detElemId);
  TClonesArray* array = ChamberDigits(iChamber);
  if ( index < 0 )
  {
    index = array->GetLast()+1;
  }
  return (new((*array)[index]) AliMUONDigit(*digit));
}

//_____________________________________________________________________________
Bool_t
AliMUONDigitStoreV1::Connect(TTree& tree, Bool_t alone) const
{
  /// Connect this to the tree.
  
  AliMUONTreeManager tman;
  Bool_t ok(kTRUE);
  
  TString baseName(BaseName(tree.GetName()));
                     
  // Search for branch MUON(S)Digits1 to know if we need to set branch addresses
  // or to make them.
  TBranch* branch = tree.GetBranch(Form("%ss%d",baseName.Data(),1));
  
  Bool_t isMaking = (branch==0);
  
  if ( isMaking ) 
  {
    for ( Int_t i = 0; i < AliMpConstants::NofChambers(); ++i ) 
    {
      TString branchName(Form("%ss%d",baseName.Data(),i+1));
      ok = ok && tman.MakeBranch(tree,ClassName(),"TClonesArray",
                                 branchName.Data(),ChamberDigitsPtr(i));
    }
  }
  else
  {
    if ( alone && baseName != "MUONSDigit" ) 
    {
      // TreeS only has digits, so there's not need to play the branch status
      // game
      tman.UpdateBranchStatuses(tree,baseName.Data());
    }
    for ( Int_t i = 0; i < AliMpConstants::NofChambers(); ++i ) 
    {
      TString branchName(Form("%ss%d",baseName.Data(),i+1));
      ok = ok && tman.SetAddress(tree,branchName.Data(),ChamberDigitsPtr(i));
    }
  }
  
  return ok;
}

//_____________________________________________________________________________
TObject**
AliMUONDigitStoreV1::ChamberDigitsPtr(Int_t chamberId) const
{
  /// Get the address of the TClonesArray storing digits for chamberId.

  TObject* object = fDigits->At(chamberId);

  if (!object)
  {
    AliError(Form("Cannot get digits for chamberId=%d",chamberId));
    return 0x0;
  }
  else
  {
    return fDigits->GetObjectRef(object);
  }
}

//_____________________________________________________________________________
TClonesArray*
AliMUONDigitStoreV1::ChamberDigits(Int_t chamberId)
{
  /// Returns the tclonesarray storing digits for chamberId
  return static_cast<TClonesArray*>(fDigits->At(chamberId));
}

//_____________________________________________________________________________
const TClonesArray*
AliMUONDigitStoreV1::ChamberDigits(Int_t chamberId) const
{
  /// Returns the tclonesarray storing digits for chamberId
  return static_cast<TClonesArray*>(fDigits->At(chamberId));
}

//_____________________________________________________________________________
AliMUONVDigit* 
AliMUONDigitStoreV1::CreateDigit(Int_t detElemId, Int_t manuId,
                                 Int_t manuChannel, Int_t cathode) const
{
  return new AliMUONDigit(detElemId,manuId,manuChannel,cathode);
}

//_____________________________________________________________________________
AliMUONVDigit* 
AliMUONDigitStoreV1::Remove(AliMUONVDigit& digit)
{
  /// Remove one digit, and returns it, thus returning 0x0 if digit
  /// is not present.
  
  Int_t index;
  AliMUONVDigit* d(0x0);
  if ( ( d = FindIndex(digit.DetElemId(),digit.ManuId(),
                       digit.ManuChannel(),digit.Cathode(),index) ) )
  {
    Int_t iChamber = AliMpDEManager::GetChamberId(digit.DetElemId());
    TClonesArray* array = ChamberDigits(iChamber);
    array->RemoveAt(index);
    array->Compress();
  }
  return d;
}

//_____________________________________________________________________________
AliMUONVDigit* 
AliMUONDigitStoreV1::Find(const AliMUONVDigit& digit, Int_t& index) const
{
  /// Find a digit, and return its index.
  return FindIndex(digit.DetElemId(),digit.ManuId(),digit.ManuChannel(),digit.Cathode(),index);
}

//_____________________________________________________________________________
AliMUONVDigit* 
AliMUONDigitStoreV1::FindObject(Int_t detElemId, Int_t manuId, 
                                Int_t manuChannel, Int_t cathode) const
{
  /// Find a (trigger) digit
  Int_t index;
  return FindIndex(detElemId,manuId,manuChannel,cathode,index);
}

//_____________________________________________________________________________
AliMUONVDigit* 
AliMUONDigitStoreV1::FindIndex(Int_t detElemId, Int_t manuId, 
                               Int_t manuChannel, Int_t cathode, Int_t& index) const
{
  /// Find and return the index of a digit
  
  Int_t iChamber = AliMpDEManager::GetChamberId(detElemId);
  const TClonesArray* array = ChamberDigits(iChamber);
  if (!array) return 0x0;
  TIter next(array);
  AliMUONVDigit* digit;
  index=0;
  while ( ( digit = static_cast<AliMUONVDigit*>(next()) ) )
  {
    if ( digit->DetElemId() == detElemId &&
         digit->ManuId() == manuId &&
         digit->ManuChannel() == manuChannel &&
         digit->Cathode() == cathode ) 
    {
      return digit;
    }
    ++index;
  }
  return 0x0;
  
}

//_____________________________________________________________________________
TIterator* 
AliMUONDigitStoreV1::CreateIterator() const
{
  /// Return an iterator on the full store
  return new AliMUONTOTCAStoreIterator(fDigits,0,13);
}

//_____________________________________________________________________________
TIterator* 
AliMUONDigitStoreV1::CreateTrackerIterator() const
{
  /// Return an iterator on the tracker part of the store
  return new AliMUONTOTCAStoreIterator(fDigits,0,9);
}

//_____________________________________________________________________________
TIterator* 
AliMUONDigitStoreV1::CreateTriggerIterator() const
{
  /// Return an iterator on the trigger part of the store
  return new AliMUONTOTCAStoreIterator(fDigits,10,13);
}

//_____________________________________________________________________________
TIterator* 
AliMUONDigitStoreV1::CreateIterator(Int_t firstDetElemId, Int_t lastDetElemId,
                                    Int_t cathode) const
{
  /// Return an iterator on part of the store
  return new AliMUONDigitStoreV1Iterator(fDigits,firstDetElemId,lastDetElemId,cathode);
}

//_____________________________________________________________________________
Int_t
AliMUONDigitStoreV1::GetSize() const
{
  /// Return the number of digits we store
  Int_t n(0);
  
  for ( Int_t i = 0; i <= fDigits->GetLast(); ++i ) 
  {
    n += ChamberDigits(i)->GetEntries();
  }  
  return n;
}

//_____________________________________________________________________________
Bool_t 
AliMUONDigitStoreV1::HasMCInformation() const
{
  /// As this class is legacy, don't care about looping and loosing a bit of
  /// time...
  TIter next(CreateIterator());
  AliMUONVDigit* digit;
  while ( ( digit = static_cast<AliMUONVDigit*>(next()) ) )
  {
    if ( digit->HasMCInformation() ) return kTRUE;
  }
  return kFALSE;
}

 AliMUONDigitStoreV1.cxx:1
 AliMUONDigitStoreV1.cxx:2
 AliMUONDigitStoreV1.cxx:3
 AliMUONDigitStoreV1.cxx:4
 AliMUONDigitStoreV1.cxx:5
 AliMUONDigitStoreV1.cxx:6
 AliMUONDigitStoreV1.cxx:7
 AliMUONDigitStoreV1.cxx:8
 AliMUONDigitStoreV1.cxx:9
 AliMUONDigitStoreV1.cxx:10
 AliMUONDigitStoreV1.cxx:11
 AliMUONDigitStoreV1.cxx:12
 AliMUONDigitStoreV1.cxx:13
 AliMUONDigitStoreV1.cxx:14
 AliMUONDigitStoreV1.cxx:15
 AliMUONDigitStoreV1.cxx:16
 AliMUONDigitStoreV1.cxx:17
 AliMUONDigitStoreV1.cxx:18
 AliMUONDigitStoreV1.cxx:19
 AliMUONDigitStoreV1.cxx:20
 AliMUONDigitStoreV1.cxx:21
 AliMUONDigitStoreV1.cxx:22
 AliMUONDigitStoreV1.cxx:23
 AliMUONDigitStoreV1.cxx:24
 AliMUONDigitStoreV1.cxx:25
 AliMUONDigitStoreV1.cxx:26
 AliMUONDigitStoreV1.cxx:27
 AliMUONDigitStoreV1.cxx:28
 AliMUONDigitStoreV1.cxx:29
 AliMUONDigitStoreV1.cxx:30
 AliMUONDigitStoreV1.cxx:31
 AliMUONDigitStoreV1.cxx:32
 AliMUONDigitStoreV1.cxx:33
 AliMUONDigitStoreV1.cxx:34
 AliMUONDigitStoreV1.cxx:35
 AliMUONDigitStoreV1.cxx:36
 AliMUONDigitStoreV1.cxx:37
 AliMUONDigitStoreV1.cxx:38
 AliMUONDigitStoreV1.cxx:39
 AliMUONDigitStoreV1.cxx:40
 AliMUONDigitStoreV1.cxx:41
 AliMUONDigitStoreV1.cxx:42
 AliMUONDigitStoreV1.cxx:43
 AliMUONDigitStoreV1.cxx:44
 AliMUONDigitStoreV1.cxx:45
 AliMUONDigitStoreV1.cxx:46
 AliMUONDigitStoreV1.cxx:47
 AliMUONDigitStoreV1.cxx:48
 AliMUONDigitStoreV1.cxx:49
 AliMUONDigitStoreV1.cxx:50
 AliMUONDigitStoreV1.cxx:51
 AliMUONDigitStoreV1.cxx:52
 AliMUONDigitStoreV1.cxx:53
 AliMUONDigitStoreV1.cxx:54
 AliMUONDigitStoreV1.cxx:55
 AliMUONDigitStoreV1.cxx:56
 AliMUONDigitStoreV1.cxx:57
 AliMUONDigitStoreV1.cxx:58
 AliMUONDigitStoreV1.cxx:59
 AliMUONDigitStoreV1.cxx:60
 AliMUONDigitStoreV1.cxx:61
 AliMUONDigitStoreV1.cxx:62
 AliMUONDigitStoreV1.cxx:63
 AliMUONDigitStoreV1.cxx:64
 AliMUONDigitStoreV1.cxx:65
 AliMUONDigitStoreV1.cxx:66
 AliMUONDigitStoreV1.cxx:67
 AliMUONDigitStoreV1.cxx:68
 AliMUONDigitStoreV1.cxx:69
 AliMUONDigitStoreV1.cxx:70
 AliMUONDigitStoreV1.cxx:71
 AliMUONDigitStoreV1.cxx:72
 AliMUONDigitStoreV1.cxx:73
 AliMUONDigitStoreV1.cxx:74
 AliMUONDigitStoreV1.cxx:75
 AliMUONDigitStoreV1.cxx:76
 AliMUONDigitStoreV1.cxx:77
 AliMUONDigitStoreV1.cxx:78
 AliMUONDigitStoreV1.cxx:79
 AliMUONDigitStoreV1.cxx:80
 AliMUONDigitStoreV1.cxx:81
 AliMUONDigitStoreV1.cxx:82
 AliMUONDigitStoreV1.cxx:83
 AliMUONDigitStoreV1.cxx:84
 AliMUONDigitStoreV1.cxx:85
 AliMUONDigitStoreV1.cxx:86
 AliMUONDigitStoreV1.cxx:87
 AliMUONDigitStoreV1.cxx:88
 AliMUONDigitStoreV1.cxx:89
 AliMUONDigitStoreV1.cxx:90
 AliMUONDigitStoreV1.cxx:91
 AliMUONDigitStoreV1.cxx:92
 AliMUONDigitStoreV1.cxx:93
 AliMUONDigitStoreV1.cxx:94
 AliMUONDigitStoreV1.cxx:95
 AliMUONDigitStoreV1.cxx:96
 AliMUONDigitStoreV1.cxx:97
 AliMUONDigitStoreV1.cxx:98
 AliMUONDigitStoreV1.cxx:99
 AliMUONDigitStoreV1.cxx:100
 AliMUONDigitStoreV1.cxx:101
 AliMUONDigitStoreV1.cxx:102
 AliMUONDigitStoreV1.cxx:103
 AliMUONDigitStoreV1.cxx:104
 AliMUONDigitStoreV1.cxx:105
 AliMUONDigitStoreV1.cxx:106
 AliMUONDigitStoreV1.cxx:107
 AliMUONDigitStoreV1.cxx:108
 AliMUONDigitStoreV1.cxx:109
 AliMUONDigitStoreV1.cxx:110
 AliMUONDigitStoreV1.cxx:111
 AliMUONDigitStoreV1.cxx:112
 AliMUONDigitStoreV1.cxx:113
 AliMUONDigitStoreV1.cxx:114
 AliMUONDigitStoreV1.cxx:115
 AliMUONDigitStoreV1.cxx:116
 AliMUONDigitStoreV1.cxx:117
 AliMUONDigitStoreV1.cxx:118
 AliMUONDigitStoreV1.cxx:119
 AliMUONDigitStoreV1.cxx:120
 AliMUONDigitStoreV1.cxx:121
 AliMUONDigitStoreV1.cxx:122
 AliMUONDigitStoreV1.cxx:123
 AliMUONDigitStoreV1.cxx:124
 AliMUONDigitStoreV1.cxx:125
 AliMUONDigitStoreV1.cxx:126
 AliMUONDigitStoreV1.cxx:127
 AliMUONDigitStoreV1.cxx:128
 AliMUONDigitStoreV1.cxx:129
 AliMUONDigitStoreV1.cxx:130
 AliMUONDigitStoreV1.cxx:131
 AliMUONDigitStoreV1.cxx:132
 AliMUONDigitStoreV1.cxx:133
 AliMUONDigitStoreV1.cxx:134
 AliMUONDigitStoreV1.cxx:135
 AliMUONDigitStoreV1.cxx:136
 AliMUONDigitStoreV1.cxx:137
 AliMUONDigitStoreV1.cxx:138
 AliMUONDigitStoreV1.cxx:139
 AliMUONDigitStoreV1.cxx:140
 AliMUONDigitStoreV1.cxx:141
 AliMUONDigitStoreV1.cxx:142
 AliMUONDigitStoreV1.cxx:143
 AliMUONDigitStoreV1.cxx:144
 AliMUONDigitStoreV1.cxx:145
 AliMUONDigitStoreV1.cxx:146
 AliMUONDigitStoreV1.cxx:147
 AliMUONDigitStoreV1.cxx:148
 AliMUONDigitStoreV1.cxx:149
 AliMUONDigitStoreV1.cxx:150
 AliMUONDigitStoreV1.cxx:151
 AliMUONDigitStoreV1.cxx:152
 AliMUONDigitStoreV1.cxx:153
 AliMUONDigitStoreV1.cxx:154
 AliMUONDigitStoreV1.cxx:155
 AliMUONDigitStoreV1.cxx:156
 AliMUONDigitStoreV1.cxx:157
 AliMUONDigitStoreV1.cxx:158
 AliMUONDigitStoreV1.cxx:159
 AliMUONDigitStoreV1.cxx:160
 AliMUONDigitStoreV1.cxx:161
 AliMUONDigitStoreV1.cxx:162
 AliMUONDigitStoreV1.cxx:163
 AliMUONDigitStoreV1.cxx:164
 AliMUONDigitStoreV1.cxx:165
 AliMUONDigitStoreV1.cxx:166
 AliMUONDigitStoreV1.cxx:167
 AliMUONDigitStoreV1.cxx:168
 AliMUONDigitStoreV1.cxx:169
 AliMUONDigitStoreV1.cxx:170
 AliMUONDigitStoreV1.cxx:171
 AliMUONDigitStoreV1.cxx:172
 AliMUONDigitStoreV1.cxx:173
 AliMUONDigitStoreV1.cxx:174
 AliMUONDigitStoreV1.cxx:175
 AliMUONDigitStoreV1.cxx:176
 AliMUONDigitStoreV1.cxx:177
 AliMUONDigitStoreV1.cxx:178
 AliMUONDigitStoreV1.cxx:179
 AliMUONDigitStoreV1.cxx:180
 AliMUONDigitStoreV1.cxx:181
 AliMUONDigitStoreV1.cxx:182
 AliMUONDigitStoreV1.cxx:183
 AliMUONDigitStoreV1.cxx:184
 AliMUONDigitStoreV1.cxx:185
 AliMUONDigitStoreV1.cxx:186
 AliMUONDigitStoreV1.cxx:187
 AliMUONDigitStoreV1.cxx:188
 AliMUONDigitStoreV1.cxx:189
 AliMUONDigitStoreV1.cxx:190
 AliMUONDigitStoreV1.cxx:191
 AliMUONDigitStoreV1.cxx:192
 AliMUONDigitStoreV1.cxx:193
 AliMUONDigitStoreV1.cxx:194
 AliMUONDigitStoreV1.cxx:195
 AliMUONDigitStoreV1.cxx:196
 AliMUONDigitStoreV1.cxx:197
 AliMUONDigitStoreV1.cxx:198
 AliMUONDigitStoreV1.cxx:199
 AliMUONDigitStoreV1.cxx:200
 AliMUONDigitStoreV1.cxx:201
 AliMUONDigitStoreV1.cxx:202
 AliMUONDigitStoreV1.cxx:203
 AliMUONDigitStoreV1.cxx:204
 AliMUONDigitStoreV1.cxx:205
 AliMUONDigitStoreV1.cxx:206
 AliMUONDigitStoreV1.cxx:207
 AliMUONDigitStoreV1.cxx:208
 AliMUONDigitStoreV1.cxx:209
 AliMUONDigitStoreV1.cxx:210
 AliMUONDigitStoreV1.cxx:211
 AliMUONDigitStoreV1.cxx:212
 AliMUONDigitStoreV1.cxx:213
 AliMUONDigitStoreV1.cxx:214
 AliMUONDigitStoreV1.cxx:215
 AliMUONDigitStoreV1.cxx:216
 AliMUONDigitStoreV1.cxx:217
 AliMUONDigitStoreV1.cxx:218
 AliMUONDigitStoreV1.cxx:219
 AliMUONDigitStoreV1.cxx:220
 AliMUONDigitStoreV1.cxx:221
 AliMUONDigitStoreV1.cxx:222
 AliMUONDigitStoreV1.cxx:223
 AliMUONDigitStoreV1.cxx:224
 AliMUONDigitStoreV1.cxx:225
 AliMUONDigitStoreV1.cxx:226
 AliMUONDigitStoreV1.cxx:227
 AliMUONDigitStoreV1.cxx:228
 AliMUONDigitStoreV1.cxx:229
 AliMUONDigitStoreV1.cxx:230
 AliMUONDigitStoreV1.cxx:231
 AliMUONDigitStoreV1.cxx:232
 AliMUONDigitStoreV1.cxx:233
 AliMUONDigitStoreV1.cxx:234
 AliMUONDigitStoreV1.cxx:235
 AliMUONDigitStoreV1.cxx:236
 AliMUONDigitStoreV1.cxx:237
 AliMUONDigitStoreV1.cxx:238
 AliMUONDigitStoreV1.cxx:239
 AliMUONDigitStoreV1.cxx:240
 AliMUONDigitStoreV1.cxx:241
 AliMUONDigitStoreV1.cxx:242
 AliMUONDigitStoreV1.cxx:243
 AliMUONDigitStoreV1.cxx:244
 AliMUONDigitStoreV1.cxx:245
 AliMUONDigitStoreV1.cxx:246
 AliMUONDigitStoreV1.cxx:247
 AliMUONDigitStoreV1.cxx:248
 AliMUONDigitStoreV1.cxx:249
 AliMUONDigitStoreV1.cxx:250
 AliMUONDigitStoreV1.cxx:251
 AliMUONDigitStoreV1.cxx:252
 AliMUONDigitStoreV1.cxx:253
 AliMUONDigitStoreV1.cxx:254
 AliMUONDigitStoreV1.cxx:255
 AliMUONDigitStoreV1.cxx:256
 AliMUONDigitStoreV1.cxx:257
 AliMUONDigitStoreV1.cxx:258
 AliMUONDigitStoreV1.cxx:259
 AliMUONDigitStoreV1.cxx:260
 AliMUONDigitStoreV1.cxx:261
 AliMUONDigitStoreV1.cxx:262
 AliMUONDigitStoreV1.cxx:263
 AliMUONDigitStoreV1.cxx:264
 AliMUONDigitStoreV1.cxx:265
 AliMUONDigitStoreV1.cxx:266
 AliMUONDigitStoreV1.cxx:267
 AliMUONDigitStoreV1.cxx:268
 AliMUONDigitStoreV1.cxx:269
 AliMUONDigitStoreV1.cxx:270
 AliMUONDigitStoreV1.cxx:271
 AliMUONDigitStoreV1.cxx:272
 AliMUONDigitStoreV1.cxx:273
 AliMUONDigitStoreV1.cxx:274
 AliMUONDigitStoreV1.cxx:275
 AliMUONDigitStoreV1.cxx:276
 AliMUONDigitStoreV1.cxx:277
 AliMUONDigitStoreV1.cxx:278
 AliMUONDigitStoreV1.cxx:279
 AliMUONDigitStoreV1.cxx:280
 AliMUONDigitStoreV1.cxx:281
 AliMUONDigitStoreV1.cxx:282
 AliMUONDigitStoreV1.cxx:283
 AliMUONDigitStoreV1.cxx:284
 AliMUONDigitStoreV1.cxx:285
 AliMUONDigitStoreV1.cxx:286
 AliMUONDigitStoreV1.cxx:287
 AliMUONDigitStoreV1.cxx:288
 AliMUONDigitStoreV1.cxx:289
 AliMUONDigitStoreV1.cxx:290
 AliMUONDigitStoreV1.cxx:291
 AliMUONDigitStoreV1.cxx:292
 AliMUONDigitStoreV1.cxx:293
 AliMUONDigitStoreV1.cxx:294
 AliMUONDigitStoreV1.cxx:295
 AliMUONDigitStoreV1.cxx:296
 AliMUONDigitStoreV1.cxx:297
 AliMUONDigitStoreV1.cxx:298
 AliMUONDigitStoreV1.cxx:299
 AliMUONDigitStoreV1.cxx:300
 AliMUONDigitStoreV1.cxx:301
 AliMUONDigitStoreV1.cxx:302
 AliMUONDigitStoreV1.cxx:303
 AliMUONDigitStoreV1.cxx:304
 AliMUONDigitStoreV1.cxx:305
 AliMUONDigitStoreV1.cxx:306
 AliMUONDigitStoreV1.cxx:307
 AliMUONDigitStoreV1.cxx:308
 AliMUONDigitStoreV1.cxx:309
 AliMUONDigitStoreV1.cxx:310
 AliMUONDigitStoreV1.cxx:311
 AliMUONDigitStoreV1.cxx:312
 AliMUONDigitStoreV1.cxx:313
 AliMUONDigitStoreV1.cxx:314
 AliMUONDigitStoreV1.cxx:315
 AliMUONDigitStoreV1.cxx:316
 AliMUONDigitStoreV1.cxx:317
 AliMUONDigitStoreV1.cxx:318
 AliMUONDigitStoreV1.cxx:319
 AliMUONDigitStoreV1.cxx:320
 AliMUONDigitStoreV1.cxx:321
 AliMUONDigitStoreV1.cxx:322
 AliMUONDigitStoreV1.cxx:323
 AliMUONDigitStoreV1.cxx:324
 AliMUONDigitStoreV1.cxx:325
 AliMUONDigitStoreV1.cxx:326
 AliMUONDigitStoreV1.cxx:327
 AliMUONDigitStoreV1.cxx:328
 AliMUONDigitStoreV1.cxx:329
 AliMUONDigitStoreV1.cxx:330
 AliMUONDigitStoreV1.cxx:331
 AliMUONDigitStoreV1.cxx:332
 AliMUONDigitStoreV1.cxx:333
 AliMUONDigitStoreV1.cxx:334
 AliMUONDigitStoreV1.cxx:335
 AliMUONDigitStoreV1.cxx:336
 AliMUONDigitStoreV1.cxx:337
 AliMUONDigitStoreV1.cxx:338
 AliMUONDigitStoreV1.cxx:339
 AliMUONDigitStoreV1.cxx:340
 AliMUONDigitStoreV1.cxx:341
 AliMUONDigitStoreV1.cxx:342
 AliMUONDigitStoreV1.cxx:343
 AliMUONDigitStoreV1.cxx:344
 AliMUONDigitStoreV1.cxx:345
 AliMUONDigitStoreV1.cxx:346
 AliMUONDigitStoreV1.cxx:347
 AliMUONDigitStoreV1.cxx:348
 AliMUONDigitStoreV1.cxx:349
 AliMUONDigitStoreV1.cxx:350
 AliMUONDigitStoreV1.cxx:351
 AliMUONDigitStoreV1.cxx:352
 AliMUONDigitStoreV1.cxx:353
 AliMUONDigitStoreV1.cxx:354
 AliMUONDigitStoreV1.cxx:355
 AliMUONDigitStoreV1.cxx:356
 AliMUONDigitStoreV1.cxx:357
 AliMUONDigitStoreV1.cxx:358
 AliMUONDigitStoreV1.cxx:359
 AliMUONDigitStoreV1.cxx:360
 AliMUONDigitStoreV1.cxx:361
 AliMUONDigitStoreV1.cxx:362
 AliMUONDigitStoreV1.cxx:363
 AliMUONDigitStoreV1.cxx:364
 AliMUONDigitStoreV1.cxx:365
 AliMUONDigitStoreV1.cxx:366
 AliMUONDigitStoreV1.cxx:367
 AliMUONDigitStoreV1.cxx:368
 AliMUONDigitStoreV1.cxx:369
 AliMUONDigitStoreV1.cxx:370
 AliMUONDigitStoreV1.cxx:371
 AliMUONDigitStoreV1.cxx:372
 AliMUONDigitStoreV1.cxx:373
 AliMUONDigitStoreV1.cxx:374
 AliMUONDigitStoreV1.cxx:375
 AliMUONDigitStoreV1.cxx:376
 AliMUONDigitStoreV1.cxx:377
 AliMUONDigitStoreV1.cxx:378
 AliMUONDigitStoreV1.cxx:379
 AliMUONDigitStoreV1.cxx:380
 AliMUONDigitStoreV1.cxx:381
 AliMUONDigitStoreV1.cxx:382
 AliMUONDigitStoreV1.cxx:383
 AliMUONDigitStoreV1.cxx:384
 AliMUONDigitStoreV1.cxx:385
 AliMUONDigitStoreV1.cxx:386
 AliMUONDigitStoreV1.cxx:387
 AliMUONDigitStoreV1.cxx:388
 AliMUONDigitStoreV1.cxx:389
 AliMUONDigitStoreV1.cxx:390
 AliMUONDigitStoreV1.cxx:391