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$
// $MpId: AliMpDetElement.cxx,v 1.4 2006/05/24 13:58:34 ivana Exp $
// Category: management

//-----------------------------------------------------------------------------
// Class AliMpDetElement
// --------------------
// The class defines the electronics properties of detection element
// Authors: Ivana Hrivnacova, IPN Orsay
//          Laurent Aphecetche, Christian Finck, SUBATECH Nantes
//-----------------------------------------------------------------------------

#include "AliMpDetElement.h"

#include "AliMpArrayI.h"
#include "AliMpConstants.h"
#include "AliMpDEManager.h"
#include "AliMpDCSNamer.h"
#include "AliMpHVUID.h"
#include "AliMpManuUID.h"
#include "AliMpPadUID.h"
#include "AliMpSegmentation.h"
#include "AliMpVSegmentation.h"

#include "AliCodeTimer.h"
#include "AliLog.h"

#include <Riostream.h>

using std::endl;
/// \cond CLASSIMP
ClassImp(AliMpDetElement)
/// \endcond

const char  AliMpDetElement::fgkNameSeparator = '_'; 

//______________________________________________________________________________
AliMpDetElement::AliMpDetElement(Int_t id, const TString& name,
                    const TString& segType, AliMp::PlaneType planeType)
  : TObject(),
    fId(id),
    fDdlId(-1),
    fName(name),
    fSegType(segType),
    fPlaneType(planeType),
    fBusPatchIds(false),
    fManuList(),
    fTrackerChannels(),
    fHVmanus(),
    fNofChannels(0)
{
/// Standard constructor
}

//______________________________________________________________________________
AliMpDetElement::AliMpDetElement(TRootIOCtor* ioCtor)
  : TObject(),
    fId(0),
    fDdlId(-1),
    fName(),
    fSegType(),
    fPlaneType(),
    fBusPatchIds(),
    fManuList(),
    fTrackerChannels(),
    fHVmanus(ioCtor),
    fNofChannels()
{
/// Root IO constructor
}

//______________________________________________________________________________
AliMpDetElement::~AliMpDetElement()
{
/// Destructor
}


//
// public methods
//

//______________________________________________________________________________
Bool_t AliMpDetElement::AddBusPatch(Int_t busPatchId)
{
/// Add bus patch Id if a bus patch with the same Id is not yet present;
/// return false if bus patch was not added

  if ( HasBusPatchId(busPatchId) ) {
    AliWarningStream() 
      << "Bus patch Id = " << busPatchId << " already present."
      << endl;
    return false;
  } 

  fBusPatchIds.Add(busPatchId); 
  return true;
}  
 
//______________________________________________________________________________
TString AliMpDetElement::GetSegName(AliMp::CathodType cathType) const
{
/// Return the segmentation name for the given catod type

  return fSegType + fgkNameSeparator + PlaneTypeName(GetPlaneType(cathType));
}	  

//______________________________________________________________________________
AliMp::PlaneType  AliMpDetElement::GetPlaneType(AliMp::CathodType cath) const 
{
/// Return plane type                                                      \n

  if ( cath == AliMp::kCath0 ) return fPlaneType;
  else                         return AliMp::OtherPlaneType(fPlaneType); 
}    

//______________________________________________________________________________
AliMp::CathodType AliMpDetElement::GetCathodType(AliMp::PlaneType planeType) const
{
/// Return cathod type for given planeType

  if ( fPlaneType == planeType ) return AliMp::kCath0;
  else                           return AliMp::kCath1;
}

//______________________________________________________________________________
AliMp::CathodType AliMpDetElement::GetCathodTypeFromManuId(Int_t manuId) const
{
/// Return cathod type for given manuId

  AliMp::PlaneType planeType = AliMp::kBendingPlane;
  if ( manuId & AliMpConstants::ManuMask(AliMp::kNonBendingPlane) ) 
  {
    planeType = AliMp::kNonBendingPlane;
  }
  return GetCathodType(planeType);
}

//______________________________________________________________________________
AliMp::StationType AliMpDetElement::GetStationType() const
{
/// Return station type                                                      \n
/// Failure causes Fatal error - as AliMp::StationType has no possibility
/// to return undefined value

  Int_t chamberId = AliMpDEManager::GetChamberId(fId, false);
  if ( ! AliMpDEManager::IsValidChamberId(chamberId, true) ) {
    AliFatal("Cannot return AliMp::StationType value.");
    return AliMp::kStation12;
  }  
  
  if ( chamberId >=  0 && chamberId <=  3 )  return AliMp::kStation12;
  if ( chamberId >=  4 && chamberId <=  9 )  return AliMp::kStation345;
  if ( chamberId >= 10 && chamberId <= 13 )  return AliMp::kStationTrigger;

  // Should never get to this line
  AliFatal("Cannot return AliMp::StationType value.");
  return AliMp::kStation12;
}

//______________________________________________________________________________
AliMq::Station12Type AliMpDetElement::GetStation12Type() const
{
/// Return station12 type                                                      \n
/// Failure causes Fatal error - as AliMp::Station12Type has no possibility
/// to return undefined value

  Int_t chamberId = AliMpDEManager::GetChamberId(fId, false);
  if ( ! AliMpDEManager::IsValidChamberId(chamberId, true) ) {
    AliFatal("Cannot return AliMp::StationType value.");
    return AliMq::kNotSt12;
  }  
  
  if ( chamberId ==  0 || chamberId ==  1 )  return AliMq::kStation1;
  if ( chamberId ==  2 || chamberId ==  3 )  return AliMq::kStation2;
  if ( chamberId >=  4 || chamberId <= 13 )  return AliMq::kNotSt12;

  // Should never get to this line
  AliFatal("Cannot return AliMp::StationType value.");
  return AliMq::kNotSt12;
}

//______________________________________________________________________________
Int_t AliMpDetElement::GetNofBusPatches() const
{
/// Return the number of bus patches in this detection element

  return fBusPatchIds.GetSize();
}  

//______________________________________________________________________________
Int_t AliMpDetElement::GetBusPatchId(Int_t index) const
{
/// Return the index-th bus patch

  if ( index < 0 || index >= GetNofBusPatches() ) {
    AliErrorStream()
      << "In DE = " << fId << ": Index " << index << " outside limits." << endl;
    return 0;
  }     

  return  fBusPatchIds.GetValue(index);
}   


//______________________________________________________________________________
Bool_t  AliMpDetElement::HasBusPatchId(Int_t busPatchId) const
{  
/// Return true if the bus patch Id is present

  return fBusPatchIds.HasValue(busPatchId);; 
}

//______________________________________________________________________________
Int_t 
AliMpDetElement::NofChannelsInManu(Int_t manuId) const
{
  /// Return the number of channels in a given manu
  
  Long_t uid = AliMpManuUID::BuildUniqueID(fId,manuId);
  
  return (Int_t)(fManuList.GetValue(uid));
}

//______________________________________________________________________________
Bool_t 
AliMpDetElement::IsExistingChannel(Int_t manuId, Int_t manuChannel) const
{
  /// Whether or not the channel is a valid one (does not tell if it is
  /// connected or not
  
  if ( NofChannelsInManu(manuId) > 0 && 
       manuChannel >= 0 && 
       manuChannel < AliMpConstants::ManuNofChannels() ) 
  {
    return kTRUE;
  }
  else
  {
    return kFALSE;
  }
}

//______________________________________________________________________________
Bool_t 
AliMpDetElement::IsConnectedChannel(Int_t manuId, Int_t manuChannel) const
{
  /// Whether or not the channel is a *connected* one (i.e. it is valid plus
  /// it corresponds to a real pad)
  
  return ( fTrackerChannels.GetValue(AliMpPadUID::BuildUniqueID(fId,manuId,manuChannel)) > 0 );
}

//______________________________________________________________________________
void
AliMpDetElement::AddManu(Int_t manuId)
{
  /// Fills the fManuList and fTrackerChannels
  AliMp::StationType stationType = AliMpDEManager::GetStationType(fId);
  
  if ( stationType == AliMp::kStationTrigger ) return;
    
  AliCodeTimerAuto("",0)
  
  AliDebug(1,Form("DE %4d Manu %4d",fId,manuId));

  AliCodeTimerStart(Form("%s",AliMp::StationTypeName(stationType).Data()));
  
  if ( fHVmanus.GetSize() == 0 ) 
  {
    fHVmanus.SetOwner(kTRUE); // to be 100% explicit
    
    // get the size, to avoid resizing when adding later on
    Int_t nmanus(0);
    
    AliMp::CathodType cathodes[] = { AliMp::kCath0, AliMp::kCath1 };
    
    for ( Int_t i = 0; i < 2; ++i ) 
    {
      const AliMpVSegmentation* seg = 
      AliMpSegmentation::Instance()->GetMpSegmentation(fId,cathodes[i]);
      
      TArrayI manus;
      
      seg->GetAllElectronicCardIDs(manus);

      nmanus += manus.GetSize();
    }
    
    fHVmanus.SetSize(nmanus);
  }
  
  const AliMpVSegmentation* seg = AliMpSegmentation::Instance()->GetMpSegmentationByElectronics(fId,manuId);
  
  Int_t n(0);
  
  for ( Int_t i = 0; i < AliMpConstants::ManuNofChannels(); ++i ) 
  {
    if ( seg->PadByLocation(manuId,i,kFALSE).IsValid() )
    {
      ++n;
      fTrackerChannels.Add((Long_t)AliMpPadUID::BuildUniqueID(fId,manuId,i),
                           (Long_t)1);
    }
  }
  
  fManuList.Add(AliMpManuUID::BuildUniqueID(fId,manuId),(Long_t)n);

  fNofChannels += n;
  
  AliMpDCSNamer hvNamer("TRACKER");
  
  Int_t index = hvNamer.ManuId2Index(fId,manuId);
                            
  UInt_t hvuid = AliMpHVUID::BuildUniqueID(fId,index);
  
  AliMpArrayI* hv = static_cast<AliMpArrayI*>(fHVmanus.GetValue(hvuid));
  
  if (!hv)
  {
    Bool_t sort(kFALSE);
    hv = new AliMpArrayI(sort);
    fHVmanus.Add(hvuid,hv);
  }
  
  hv->Add(manuId,kFALSE);        
  
  AliCodeTimerStop(Form("%s",AliMp::StationTypeName(stationType).Data()));
}
  
//______________________________________________________________________________
const AliMpArrayI* 
AliMpDetElement::ManusForHV(Int_t hvIndex) const
{
  /// Return the list of manus sharing a hv channel
  return static_cast<AliMpArrayI*>(fHVmanus.GetValue(AliMpHVUID::BuildUniqueID(fId,hvIndex)));
}

//______________________________________________________________________________
Int_t 
AliMpDetElement::NofManus() const
{
  /// Return the number of manus in this detection element
  return fManuList.GetSize();
}

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