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$

///
/// \class AliMUONRejectList
///
/// Object to hold the probability to reject elements during reconstruction.
///
/// Those elements are either channels, manus, 
/// bus patches, detection elements, pcbs (for slats) and HV channels,
/// or all of them.
///
/// (we do not consider the next level, chamber, because if a full
/// chamber is missing, we assume we'll remove that run from the
/// list of usable runs anyway).
/// 
/// The probability of rejection can be different from 0.0 or 1.0 only for
/// simulations, in which case it means that :
/// - this object was created from inspection of real data occupancy maps + ad-hoc rejections over
/// several runs
/// - the probability then reflects the chance a given element was useable
/// during data taking. For instance, if one DE has a probability of 0.8, it means
/// it was on (or correctly behaving during data taking) only for 20% of the
/// events.
///
/// \author Laurent Aphecetche, Subatech
///

#include "AliMUONRejectList.h"

#include "AliLog.h"
#include "AliMpArea.h"
#include "AliMpConstants.h"
#include "AliMpDCSNamer.h"
#include "AliMpDDLStore.h"
#include "AliMpDEStore.h"
#include "AliMpDetElement.h"
#include "AliMpMotifPosition.h"
#include "AliMpPCB.h"
#include "AliMpSegmentation.h"
#include "AliMpSlat.h"
#include "AliMpVSegmentation.h"
#include "AliMUON2DMap.h"
#include "AliMUONCalibParamNF.h"
#include "Riostream.h"
#include "TMath.h"

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

namespace
{
  /// The functions below are here to help re-invent the wheel,
  /// i.e. code something which acts as std::map<int,float>
  /// to circumvent the fact that AliRoot does not allow STL to be used.
  
  void Dump(const char* str, UInt_t n, UInt_t* ids, Float_t* values, Bool_t debug)
  {
    /// Dump the values array
    
    TString s(str);
    s += " PROBA %e";

    for ( UInt_t i = 0; i < n; ++i )
    {
      UInt_t key = ids[i];
      Int_t a,b;
      AliMUONVCalibParam::DecodeUniqueID(key,a,b);
      if ( s.CountChar('%')==3 )
      {
        cout << Form(s.Data(),a,b,values[i]) << endl;
      }
      else
      {
        cout << Form(s.Data(),a,values[i]) << endl;
      }
    }
    
    if ( debug ) 
    {
      cout << "------" << endl;
      for ( UInt_t i = 0; i < n; ++i )
      {
        UInt_t key = ids[i];
        Int_t a,b;
        AliMUONVCalibParam::DecodeUniqueID(key,a,b);
        cout << Form("ids[%5d]=%d values[%5d]=%e (a,b)=(%5d,%5d)",
        i,ids[i],i,values[i],a,b) << endl;
      }
      
    }
  }
  
  Float_t GetValue(UInt_t n, UInt_t* ids, Float_t* values, UInt_t key)
  {
    /// Get the value corresponding to key, or zero if not found
    Long64_t index = TMath::BinarySearch(n,ids,key);

    Bool_t found = ( ( index >= 0 ) && ( ids[index] == key ) );

    if ( found )
    {
      return values[index];
    }
    else
    {
      return 0.0;
    }
  }
  
  void Insert(UInt_t n, UInt_t* ids, Float_t* values, UInt_t index, UInt_t key, Float_t value)
  {
    /// Insert (key,value) into arrays ids and values.
    
    for ( UInt_t i = n; i > index; --i )
    {
      ids[i] = ids[i-1];
      values[i] = values[i-1];
    }
    ids[index] = key;
    values[index] = value;
  }
  
  Bool_t SetValue(UInt_t n, UInt_t* ids, Float_t* values, UInt_t key, Float_t value)
  {
    /// Set the value for a given key
    Long64_t index = TMath::BinarySearch(n,ids, key);

    Bool_t alreadyThere = ( ( index >= 0 ) && ( ids[index] == key ) );

    if ( alreadyThere )
    {
      // replacement
      values[index] = value;
      return kFALSE;
    }
    Insert(n,ids,values,index+1,key,value);
    return kTRUE;
  }
  
  void Copy(UInt_t n, UInt_t* src, UInt_t*& dest)
  {
    /// Copy src into dest
    delete[] dest;
    dest = 0;
    if ( src && n )
    {
      dest = new UInt_t[n];
      memcpy(dest,src,n*sizeof(UInt_t));
    }
  }

  void Copy(UInt_t n, Float_t* src, Float_t*& dest)
  {
    /// Copy src into dest
    delete[] dest;
    dest = 0;
    if ( src && n )
    {
      dest = new Float_t[n];
      memcpy(dest,src,n*sizeof(Float_t));
    }
  }
  
}
    
//_____________________________________________________________________________
AliMUONRejectList::AliMUONRejectList()
: TObject(),
fIsBinary(kTRUE),
fMaxNofDEs(156), // not nice to put a constant here, but that way this object does not need the mapping at creation time...
fMaxNofBPs(888), // same remark as above
fMaxNofManus(16828), // same as above...
fNofDEs(),
fNofBPs(),
fNofManus(),
fDEIds(new UInt_t[fMaxNofDEs]),
fDEProbas(new Float_t[fMaxNofDEs]),
fBPIds(new UInt_t[fMaxNofBPs]),
fBPProbas(new Float_t[fMaxNofBPs]),
fManuIds(new UInt_t[fMaxNofManus]),
fManuProbas(new Float_t[fMaxNofManus]),
fChannels(new AliMUON2DMap(kTRUE))
{
  /// normal ctor
  memset(fDEIds,0,fMaxNofDEs*sizeof(UInt_t));
  memset(fDEProbas,0,fMaxNofDEs*sizeof(Float_t));
  memset(fBPIds,0,fMaxNofBPs*sizeof(UInt_t));
  memset(fBPProbas,0,fMaxNofBPs*sizeof(Float_t));
  memset(fManuIds,0,fMaxNofManus*sizeof(UInt_t));
  memset(fManuProbas,0,fMaxNofManus*sizeof(Float_t));
}

//_____________________________________________________________________________
AliMUONRejectList::AliMUONRejectList(TRootIOCtor* /*ioCtor*/)
: TObject(),
fIsBinary(kTRUE),
fMaxNofDEs(),
fMaxNofBPs(),
fMaxNofManus(),
fNofDEs(), 
fNofBPs(), 
fNofManus(0), 
fDEIds(0x0),
fDEProbas(0x0),
fBPIds(0x0),
fBPProbas(0x0),
fManuIds(0x0),
fManuProbas(0x0),
fChannels(0x0)
{
  /// ctor from root i/o
}

//_____________________________________________________________________________
AliMUONRejectList::AliMUONRejectList(const AliMUONRejectList& rl)
: TObject(rl),
fIsBinary(rl.fIsBinary),
fMaxNofDEs(rl.fMaxNofDEs),
fMaxNofBPs(rl.fMaxNofBPs),
fMaxNofManus(rl.fMaxNofManus),
fNofDEs(rl.fNofDEs), 
fNofBPs(rl.fNofBPs), 
fNofManus(rl.fNofManus), 
fDEIds(0x0),
fDEProbas(0x0),
fBPIds(0x0),
fBPProbas(0x0),
fManuIds(0x0),
fManuProbas(0x0),
fChannels(0x0)
{
  /// Copy ctor
  
  ::Copy(rl.fMaxNofDEs,rl.fDEIds,fDEIds);
  ::Copy(rl.fMaxNofDEs,rl.fDEProbas,fDEProbas);
  ::Copy(rl.fMaxNofBPs,rl.fBPIds,fBPIds);
  ::Copy(rl.fMaxNofBPs,rl.fBPProbas,fBPProbas);
  ::Copy(rl.fMaxNofManus,rl.fManuIds,fManuIds);
  ::Copy(rl.fMaxNofManus,rl.fManuProbas,fManuProbas);
  
  if ( rl.fChannels ) 
  {
    fChannels = static_cast<AliMUONVStore*>(rl.fChannels->Clone());
  }
}

//_____________________________________________________________________________
AliMUONRejectList& AliMUONRejectList::operator=(const AliMUONRejectList& rl)
{
  /// assignement operator
  if ( this != &rl ) 
  {
    static_cast<TObject&>(*this)=rl;
    
    fIsBinary = rl.fIsBinary;
    fMaxNofDEs = rl.fMaxNofDEs;
    fMaxNofBPs = rl.fMaxNofBPs;
    fMaxNofManus = rl.fMaxNofManus;
    fNofDEs = rl.fNofDEs;
    fNofBPs = rl.fNofBPs;
    fNofManus = rl.fNofManus;
    
    ::Copy(rl.fMaxNofDEs,rl.fDEIds,fDEIds);
    ::Copy(rl.fMaxNofDEs,rl.fDEProbas,fDEProbas);
    ::Copy(rl.fMaxNofBPs,rl.fBPIds,fBPIds);
    ::Copy(rl.fMaxNofBPs,rl.fBPProbas,fBPProbas);
    ::Copy(rl.fMaxNofManus,rl.fManuIds,fManuIds);
    ::Copy(rl.fMaxNofManus,rl.fManuProbas,fManuProbas);
    
    delete fChannels;
    fChannels = 0x0;
    
    if ( rl.fChannels ) 
    {
      fChannels = static_cast<AliMUONVStore*>(rl.fChannels->Clone());
    }
    
  }  
  return *this;
}

//_____________________________________________________________________________
AliMUONRejectList::~AliMUONRejectList()
{
  /// dtor
  delete fChannels;
  delete[] fDEIds;
  delete[] fDEProbas;
  delete[] fBPIds;
  delete[] fBPProbas;
  delete[] fManuIds;
  delete[] fManuProbas;
}

//_____________________________________________________________________________
Float_t AliMUONRejectList::DetectionElementProbability(Int_t detElemId) const
{
  /// Get the probability to reject a given detection element
  return ::GetValue(fNofDEs,fDEIds,fDEProbas,AliMUONVCalibParam::BuildUniqueID(detElemId,0));
}

//_____________________________________________________________________________
Float_t AliMUONRejectList::BusPatchProbability(Int_t busPatchId) const
{
  /// Get the probability to reject a given bus patch
  return ::GetValue(fNofBPs,fBPIds,fBPProbas,AliMUONVCalibParam::BuildUniqueID(busPatchId,0));
}

//_____________________________________________________________________________
Float_t AliMUONRejectList::ManuProbability(Int_t detElemId, Int_t manuId) const
{
  /// Get the probability to reject a given manu
  return ::GetValue(fNofManus,fManuIds,fManuProbas,AliMUONVCalibParam::BuildUniqueID(detElemId,manuId));
}

//_____________________________________________________________________________
Float_t AliMUONRejectList::ChannelProbability(Int_t detElemId, Int_t manuId, Int_t manuChannel) const
{
  /// Get the probability to reject a given channel
  AliMUONVCalibParam* param = static_cast<AliMUONVCalibParam*>(fChannels->FindObject(detElemId,manuId));
  if (!param) return 0.0;
  return param->ValueAsFloat(manuChannel);
}

//_____________________________________________________________________________
void AliMUONRejectList::SetDetectionElementProbability(Int_t detElemId, Float_t proba)
{
  /// Set the probability to reject a given detection element
  if ( ::SetValue(fNofDEs,fDEIds,fDEProbas,AliMUONVCalibParam::BuildUniqueID(detElemId,0),proba) ) 
  {
    ++fNofDEs;
  }
  
  ZeroOrOne(proba);
}

//_____________________________________________________________________________
void AliMUONRejectList::ZeroOrOne(Float_t proba)
{
  /// If proba is anything else than 0 or 1, we set fIsBinary to kFALSe
  
  Bool_t zeroorone = ( proba == 0.0 || proba == 1.0 );
  if (!zeroorone) fIsBinary = kFALSE;
}

//_____________________________________________________________________________
void AliMUONRejectList::SetBusPatchProbability(Int_t busPatchId, Float_t proba)
{
  /// Set the probability to reject a given bus patch
  if ( ::SetValue(fNofBPs,fBPIds,fBPProbas,AliMUONVCalibParam::BuildUniqueID(busPatchId,0),proba) )
  {
    ++fNofBPs;
  }
  ZeroOrOne(proba);
}

//_____________________________________________________________________________
void AliMUONRejectList::SetManuProbability(Int_t detElemId, Int_t manuId, Float_t proba)
{
  /// Set the probability to reject a given manu
  if ( ::SetValue(fNofManus,fManuIds,fManuProbas,AliMUONVCalibParam::BuildUniqueID(detElemId,manuId),proba) )
  {
    ++fNofManus;
  }
  ZeroOrOne(proba);
}

//_____________________________________________________________________________
void AliMUONRejectList::SetChannelProbability(Int_t detElemId, Int_t manuId, Int_t manuChannel, Float_t proba)
{
  /// Set the probability to reject a given channel
  AliMUONVCalibParam* param = static_cast<AliMUONVCalibParam*>(fChannels->FindObject(detElemId,manuId));
  if (!param) 
  {
    param = new AliMUONCalibParamNF(1,AliMpConstants::ManuNofChannels(),detElemId,manuId,0.0);    
    fChannels->Add(param);
  }
  param->SetValueAsFloat(manuChannel,0,proba);
  ZeroOrOne(proba);
}

//_____________________________________________________________________________
void AliMUONRejectList::SetPCBProbability(Int_t detElemId, Int_t pcbNumber, Float_t proba)
{
  /// Set the probability to reject all the manus of a given (slat) PCB
  AliMpSegmentation* seg = AliMpSegmentation::Instance();
  AliMp::CathodType ct[] = { AliMp::kCath0, AliMp::kCath1 };
  
  for ( Int_t i = 0; i < 2; ++i )
  {
    const AliMpVSegmentation* vseg = seg->GetMpSegmentation(detElemId,ct[i]);
    if (!vseg)
    {
      AliError(Form("Could not get segmentation of DE %d",detElemId));
      continue;
    }
    const AliMpSlat* slat = seg->GetSlat(vseg);
    if (!slat)
    {
      AliError(Form("Could not get slat from DE %d",detElemId));
      continue;      
    }
    AliMpPCB* pcb = slat->GetPCB(pcbNumber);
    for ( Int_t j = 0; j < pcb->GetSize(); ++j )
    {
      AliMpMotifPosition* mp = pcb->GetMotifPosition(j);
      SetManuProbability(detElemId,mp->GetID(),proba);
    }
  }
}

//_____________________________________________________________________________
void AliMUONRejectList::SetHVProbability(const char* dcsName, Float_t proba)
{
  /// Set the probability to reject all the manus of a given HV part
  /// Caution : the dcs string is a dcs NAME, _not_ an alias
  
  AliMpDCSNamer hv("TRACKER");

  TString alias = hv.DCSAliasFromName(dcsName);

  Int_t detElemId = hv.DetElemIdFromDCSAlias(alias.Data());
  Int_t index = hv.DCSIndexFromDCSAlias(alias.Data());

  AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(detElemId);

  const AliMpArrayI* manus = de->ManusForHV(index);

  for ( Int_t i = 0; i < manus->GetSize(); ++ i )
  {
    Int_t manuId = manus->GetValue(i);
    SetManuProbability(detElemId,manuId,proba);
  }
}

//_____________________________________________________________________________
void 
AliMUONRejectList::Print(Option_t* opt) const
{
  /// Printout

  TString sopt(opt);  
  sopt.ToUpper();
  Bool_t debug(kFALSE);
  
  if ( sopt.Contains("DEBUG") ) debug=kTRUE;
  
  cout << Form("We have probabilities for %d detection element(s), %d bus patch(es), %d manu(s)",
               fNofDEs,fNofBPs,fNofManus) << endl;
  
  ::Dump("DE %04d",fNofDEs,fDEIds,fDEProbas,debug);
  ::Dump("BusPatch %04d",fNofBPs,fBPIds,fBPProbas,debug);
  ::Dump("DE %04d MANU %4d",fNofManus,fManuIds,fManuProbas,debug);
}
 AliMUONRejectList.cxx:1
 AliMUONRejectList.cxx:2
 AliMUONRejectList.cxx:3
 AliMUONRejectList.cxx:4
 AliMUONRejectList.cxx:5
 AliMUONRejectList.cxx:6
 AliMUONRejectList.cxx:7
 AliMUONRejectList.cxx:8
 AliMUONRejectList.cxx:9
 AliMUONRejectList.cxx:10
 AliMUONRejectList.cxx:11
 AliMUONRejectList.cxx:12
 AliMUONRejectList.cxx:13
 AliMUONRejectList.cxx:14
 AliMUONRejectList.cxx:15
 AliMUONRejectList.cxx:16
 AliMUONRejectList.cxx:17
 AliMUONRejectList.cxx:18
 AliMUONRejectList.cxx:19
 AliMUONRejectList.cxx:20
 AliMUONRejectList.cxx:21
 AliMUONRejectList.cxx:22
 AliMUONRejectList.cxx:23
 AliMUONRejectList.cxx:24
 AliMUONRejectList.cxx:25
 AliMUONRejectList.cxx:26
 AliMUONRejectList.cxx:27
 AliMUONRejectList.cxx:28
 AliMUONRejectList.cxx:29
 AliMUONRejectList.cxx:30
 AliMUONRejectList.cxx:31
 AliMUONRejectList.cxx:32
 AliMUONRejectList.cxx:33
 AliMUONRejectList.cxx:34
 AliMUONRejectList.cxx:35
 AliMUONRejectList.cxx:36
 AliMUONRejectList.cxx:37
 AliMUONRejectList.cxx:38
 AliMUONRejectList.cxx:39
 AliMUONRejectList.cxx:40
 AliMUONRejectList.cxx:41
 AliMUONRejectList.cxx:42
 AliMUONRejectList.cxx:43
 AliMUONRejectList.cxx:44
 AliMUONRejectList.cxx:45
 AliMUONRejectList.cxx:46
 AliMUONRejectList.cxx:47
 AliMUONRejectList.cxx:48
 AliMUONRejectList.cxx:49
 AliMUONRejectList.cxx:50
 AliMUONRejectList.cxx:51
 AliMUONRejectList.cxx:52
 AliMUONRejectList.cxx:53
 AliMUONRejectList.cxx:54
 AliMUONRejectList.cxx:55
 AliMUONRejectList.cxx:56
 AliMUONRejectList.cxx:57
 AliMUONRejectList.cxx:58
 AliMUONRejectList.cxx:59
 AliMUONRejectList.cxx:60
 AliMUONRejectList.cxx:61
 AliMUONRejectList.cxx:62
 AliMUONRejectList.cxx:63
 AliMUONRejectList.cxx:64
 AliMUONRejectList.cxx:65
 AliMUONRejectList.cxx:66
 AliMUONRejectList.cxx:67
 AliMUONRejectList.cxx:68
 AliMUONRejectList.cxx:69
 AliMUONRejectList.cxx:70
 AliMUONRejectList.cxx:71
 AliMUONRejectList.cxx:72
 AliMUONRejectList.cxx:73
 AliMUONRejectList.cxx:74
 AliMUONRejectList.cxx:75
 AliMUONRejectList.cxx:76
 AliMUONRejectList.cxx:77
 AliMUONRejectList.cxx:78
 AliMUONRejectList.cxx:79
 AliMUONRejectList.cxx:80
 AliMUONRejectList.cxx:81
 AliMUONRejectList.cxx:82
 AliMUONRejectList.cxx:83
 AliMUONRejectList.cxx:84
 AliMUONRejectList.cxx:85
 AliMUONRejectList.cxx:86
 AliMUONRejectList.cxx:87
 AliMUONRejectList.cxx:88
 AliMUONRejectList.cxx:89
 AliMUONRejectList.cxx:90
 AliMUONRejectList.cxx:91
 AliMUONRejectList.cxx:92
 AliMUONRejectList.cxx:93
 AliMUONRejectList.cxx:94
 AliMUONRejectList.cxx:95
 AliMUONRejectList.cxx:96
 AliMUONRejectList.cxx:97
 AliMUONRejectList.cxx:98
 AliMUONRejectList.cxx:99
 AliMUONRejectList.cxx:100
 AliMUONRejectList.cxx:101
 AliMUONRejectList.cxx:102
 AliMUONRejectList.cxx:103
 AliMUONRejectList.cxx:104
 AliMUONRejectList.cxx:105
 AliMUONRejectList.cxx:106
 AliMUONRejectList.cxx:107
 AliMUONRejectList.cxx:108
 AliMUONRejectList.cxx:109
 AliMUONRejectList.cxx:110
 AliMUONRejectList.cxx:111
 AliMUONRejectList.cxx:112
 AliMUONRejectList.cxx:113
 AliMUONRejectList.cxx:114
 AliMUONRejectList.cxx:115
 AliMUONRejectList.cxx:116
 AliMUONRejectList.cxx:117
 AliMUONRejectList.cxx:118
 AliMUONRejectList.cxx:119
 AliMUONRejectList.cxx:120
 AliMUONRejectList.cxx:121
 AliMUONRejectList.cxx:122
 AliMUONRejectList.cxx:123
 AliMUONRejectList.cxx:124
 AliMUONRejectList.cxx:125
 AliMUONRejectList.cxx:126
 AliMUONRejectList.cxx:127
 AliMUONRejectList.cxx:128
 AliMUONRejectList.cxx:129
 AliMUONRejectList.cxx:130
 AliMUONRejectList.cxx:131
 AliMUONRejectList.cxx:132
 AliMUONRejectList.cxx:133
 AliMUONRejectList.cxx:134
 AliMUONRejectList.cxx:135
 AliMUONRejectList.cxx:136
 AliMUONRejectList.cxx:137
 AliMUONRejectList.cxx:138
 AliMUONRejectList.cxx:139
 AliMUONRejectList.cxx:140
 AliMUONRejectList.cxx:141
 AliMUONRejectList.cxx:142
 AliMUONRejectList.cxx:143
 AliMUONRejectList.cxx:144
 AliMUONRejectList.cxx:145
 AliMUONRejectList.cxx:146
 AliMUONRejectList.cxx:147
 AliMUONRejectList.cxx:148
 AliMUONRejectList.cxx:149
 AliMUONRejectList.cxx:150
 AliMUONRejectList.cxx:151
 AliMUONRejectList.cxx:152
 AliMUONRejectList.cxx:153
 AliMUONRejectList.cxx:154
 AliMUONRejectList.cxx:155
 AliMUONRejectList.cxx:156
 AliMUONRejectList.cxx:157
 AliMUONRejectList.cxx:158
 AliMUONRejectList.cxx:159
 AliMUONRejectList.cxx:160
 AliMUONRejectList.cxx:161
 AliMUONRejectList.cxx:162
 AliMUONRejectList.cxx:163
 AliMUONRejectList.cxx:164
 AliMUONRejectList.cxx:165
 AliMUONRejectList.cxx:166
 AliMUONRejectList.cxx:167
 AliMUONRejectList.cxx:168
 AliMUONRejectList.cxx:169
 AliMUONRejectList.cxx:170
 AliMUONRejectList.cxx:171
 AliMUONRejectList.cxx:172
 AliMUONRejectList.cxx:173
 AliMUONRejectList.cxx:174
 AliMUONRejectList.cxx:175
 AliMUONRejectList.cxx:176
 AliMUONRejectList.cxx:177
 AliMUONRejectList.cxx:178
 AliMUONRejectList.cxx:179
 AliMUONRejectList.cxx:180
 AliMUONRejectList.cxx:181
 AliMUONRejectList.cxx:182
 AliMUONRejectList.cxx:183
 AliMUONRejectList.cxx:184
 AliMUONRejectList.cxx:185
 AliMUONRejectList.cxx:186
 AliMUONRejectList.cxx:187
 AliMUONRejectList.cxx:188
 AliMUONRejectList.cxx:189
 AliMUONRejectList.cxx:190
 AliMUONRejectList.cxx:191
 AliMUONRejectList.cxx:192
 AliMUONRejectList.cxx:193
 AliMUONRejectList.cxx:194
 AliMUONRejectList.cxx:195
 AliMUONRejectList.cxx:196
 AliMUONRejectList.cxx:197
 AliMUONRejectList.cxx:198
 AliMUONRejectList.cxx:199
 AliMUONRejectList.cxx:200
 AliMUONRejectList.cxx:201
 AliMUONRejectList.cxx:202
 AliMUONRejectList.cxx:203
 AliMUONRejectList.cxx:204
 AliMUONRejectList.cxx:205
 AliMUONRejectList.cxx:206
 AliMUONRejectList.cxx:207
 AliMUONRejectList.cxx:208
 AliMUONRejectList.cxx:209
 AliMUONRejectList.cxx:210
 AliMUONRejectList.cxx:211
 AliMUONRejectList.cxx:212
 AliMUONRejectList.cxx:213
 AliMUONRejectList.cxx:214
 AliMUONRejectList.cxx:215
 AliMUONRejectList.cxx:216
 AliMUONRejectList.cxx:217
 AliMUONRejectList.cxx:218
 AliMUONRejectList.cxx:219
 AliMUONRejectList.cxx:220
 AliMUONRejectList.cxx:221
 AliMUONRejectList.cxx:222
 AliMUONRejectList.cxx:223
 AliMUONRejectList.cxx:224
 AliMUONRejectList.cxx:225
 AliMUONRejectList.cxx:226
 AliMUONRejectList.cxx:227
 AliMUONRejectList.cxx:228
 AliMUONRejectList.cxx:229
 AliMUONRejectList.cxx:230
 AliMUONRejectList.cxx:231
 AliMUONRejectList.cxx:232
 AliMUONRejectList.cxx:233
 AliMUONRejectList.cxx:234
 AliMUONRejectList.cxx:235
 AliMUONRejectList.cxx:236
 AliMUONRejectList.cxx:237
 AliMUONRejectList.cxx:238
 AliMUONRejectList.cxx:239
 AliMUONRejectList.cxx:240
 AliMUONRejectList.cxx:241
 AliMUONRejectList.cxx:242
 AliMUONRejectList.cxx:243
 AliMUONRejectList.cxx:244
 AliMUONRejectList.cxx:245
 AliMUONRejectList.cxx:246
 AliMUONRejectList.cxx:247
 AliMUONRejectList.cxx:248
 AliMUONRejectList.cxx:249
 AliMUONRejectList.cxx:250
 AliMUONRejectList.cxx:251
 AliMUONRejectList.cxx:252
 AliMUONRejectList.cxx:253
 AliMUONRejectList.cxx:254
 AliMUONRejectList.cxx:255
 AliMUONRejectList.cxx:256
 AliMUONRejectList.cxx:257
 AliMUONRejectList.cxx:258
 AliMUONRejectList.cxx:259
 AliMUONRejectList.cxx:260
 AliMUONRejectList.cxx:261
 AliMUONRejectList.cxx:262
 AliMUONRejectList.cxx:263
 AliMUONRejectList.cxx:264
 AliMUONRejectList.cxx:265
 AliMUONRejectList.cxx:266
 AliMUONRejectList.cxx:267
 AliMUONRejectList.cxx:268
 AliMUONRejectList.cxx:269
 AliMUONRejectList.cxx:270
 AliMUONRejectList.cxx:271
 AliMUONRejectList.cxx:272
 AliMUONRejectList.cxx:273
 AliMUONRejectList.cxx:274
 AliMUONRejectList.cxx:275
 AliMUONRejectList.cxx:276
 AliMUONRejectList.cxx:277
 AliMUONRejectList.cxx:278
 AliMUONRejectList.cxx:279
 AliMUONRejectList.cxx:280
 AliMUONRejectList.cxx:281
 AliMUONRejectList.cxx:282
 AliMUONRejectList.cxx:283
 AliMUONRejectList.cxx:284
 AliMUONRejectList.cxx:285
 AliMUONRejectList.cxx:286
 AliMUONRejectList.cxx:287
 AliMUONRejectList.cxx:288
 AliMUONRejectList.cxx:289
 AliMUONRejectList.cxx:290
 AliMUONRejectList.cxx:291
 AliMUONRejectList.cxx:292
 AliMUONRejectList.cxx:293
 AliMUONRejectList.cxx:294
 AliMUONRejectList.cxx:295
 AliMUONRejectList.cxx:296
 AliMUONRejectList.cxx:297
 AliMUONRejectList.cxx:298
 AliMUONRejectList.cxx:299
 AliMUONRejectList.cxx:300
 AliMUONRejectList.cxx:301
 AliMUONRejectList.cxx:302
 AliMUONRejectList.cxx:303
 AliMUONRejectList.cxx:304
 AliMUONRejectList.cxx:305
 AliMUONRejectList.cxx:306
 AliMUONRejectList.cxx:307
 AliMUONRejectList.cxx:308
 AliMUONRejectList.cxx:309
 AliMUONRejectList.cxx:310
 AliMUONRejectList.cxx:311
 AliMUONRejectList.cxx:312
 AliMUONRejectList.cxx:313
 AliMUONRejectList.cxx:314
 AliMUONRejectList.cxx:315
 AliMUONRejectList.cxx:316
 AliMUONRejectList.cxx:317
 AliMUONRejectList.cxx:318
 AliMUONRejectList.cxx:319
 AliMUONRejectList.cxx:320
 AliMUONRejectList.cxx:321
 AliMUONRejectList.cxx:322
 AliMUONRejectList.cxx:323
 AliMUONRejectList.cxx:324
 AliMUONRejectList.cxx:325
 AliMUONRejectList.cxx:326
 AliMUONRejectList.cxx:327
 AliMUONRejectList.cxx:328
 AliMUONRejectList.cxx:329
 AliMUONRejectList.cxx:330
 AliMUONRejectList.cxx:331
 AliMUONRejectList.cxx:332
 AliMUONRejectList.cxx:333
 AliMUONRejectList.cxx:334
 AliMUONRejectList.cxx:335
 AliMUONRejectList.cxx:336
 AliMUONRejectList.cxx:337
 AliMUONRejectList.cxx:338
 AliMUONRejectList.cxx:339
 AliMUONRejectList.cxx:340
 AliMUONRejectList.cxx:341
 AliMUONRejectList.cxx:342
 AliMUONRejectList.cxx:343
 AliMUONRejectList.cxx:344
 AliMUONRejectList.cxx:345
 AliMUONRejectList.cxx:346
 AliMUONRejectList.cxx:347
 AliMUONRejectList.cxx:348
 AliMUONRejectList.cxx:349
 AliMUONRejectList.cxx:350
 AliMUONRejectList.cxx:351
 AliMUONRejectList.cxx:352
 AliMUONRejectList.cxx:353
 AliMUONRejectList.cxx:354
 AliMUONRejectList.cxx:355
 AliMUONRejectList.cxx:356
 AliMUONRejectList.cxx:357
 AliMUONRejectList.cxx:358
 AliMUONRejectList.cxx:359
 AliMUONRejectList.cxx:360
 AliMUONRejectList.cxx:361
 AliMUONRejectList.cxx:362
 AliMUONRejectList.cxx:363
 AliMUONRejectList.cxx:364
 AliMUONRejectList.cxx:365
 AliMUONRejectList.cxx:366
 AliMUONRejectList.cxx:367
 AliMUONRejectList.cxx:368
 AliMUONRejectList.cxx:369
 AliMUONRejectList.cxx:370
 AliMUONRejectList.cxx:371
 AliMUONRejectList.cxx:372
 AliMUONRejectList.cxx:373
 AliMUONRejectList.cxx:374
 AliMUONRejectList.cxx:375
 AliMUONRejectList.cxx:376
 AliMUONRejectList.cxx:377
 AliMUONRejectList.cxx:378
 AliMUONRejectList.cxx:379
 AliMUONRejectList.cxx:380
 AliMUONRejectList.cxx:381
 AliMUONRejectList.cxx:382
 AliMUONRejectList.cxx:383
 AliMUONRejectList.cxx:384
 AliMUONRejectList.cxx:385
 AliMUONRejectList.cxx:386
 AliMUONRejectList.cxx:387
 AliMUONRejectList.cxx:388
 AliMUONRejectList.cxx:389
 AliMUONRejectList.cxx:390
 AliMUONRejectList.cxx:391
 AliMUONRejectList.cxx:392
 AliMUONRejectList.cxx:393
 AliMUONRejectList.cxx:394
 AliMUONRejectList.cxx:395
 AliMUONRejectList.cxx:396
 AliMUONRejectList.cxx:397
 AliMUONRejectList.cxx:398
 AliMUONRejectList.cxx:399
 AliMUONRejectList.cxx:400
 AliMUONRejectList.cxx:401
 AliMUONRejectList.cxx:402
 AliMUONRejectList.cxx:403
 AliMUONRejectList.cxx:404
 AliMUONRejectList.cxx:405
 AliMUONRejectList.cxx:406
 AliMUONRejectList.cxx:407
 AliMUONRejectList.cxx:408
 AliMUONRejectList.cxx:409
 AliMUONRejectList.cxx:410
 AliMUONRejectList.cxx:411
 AliMUONRejectList.cxx:412
 AliMUONRejectList.cxx:413
 AliMUONRejectList.cxx:414
 AliMUONRejectList.cxx:415
 AliMUONRejectList.cxx:416
 AliMUONRejectList.cxx:417
 AliMUONRejectList.cxx:418
 AliMUONRejectList.cxx:419
 AliMUONRejectList.cxx:420
 AliMUONRejectList.cxx:421
 AliMUONRejectList.cxx:422
 AliMUONRejectList.cxx:423
 AliMUONRejectList.cxx:424
 AliMUONRejectList.cxx:425
 AliMUONRejectList.cxx:426
 AliMUONRejectList.cxx:427
 AliMUONRejectList.cxx:428
 AliMUONRejectList.cxx:429
 AliMUONRejectList.cxx:430
 AliMUONRejectList.cxx:431
 AliMUONRejectList.cxx:432
 AliMUONRejectList.cxx:433
 AliMUONRejectList.cxx:434
 AliMUONRejectList.cxx:435
 AliMUONRejectList.cxx:436
 AliMUONRejectList.cxx:437
 AliMUONRejectList.cxx:438
 AliMUONRejectList.cxx:439
 AliMUONRejectList.cxx:440
 AliMUONRejectList.cxx:441
 AliMUONRejectList.cxx:442
 AliMUONRejectList.cxx:443
 AliMUONRejectList.cxx:444
 AliMUONRejectList.cxx:445
 AliMUONRejectList.cxx:446
 AliMUONRejectList.cxx:447
 AliMUONRejectList.cxx:448
 AliMUONRejectList.cxx:449
 AliMUONRejectList.cxx:450
 AliMUONRejectList.cxx:451
 AliMUONRejectList.cxx:452
 AliMUONRejectList.cxx:453
 AliMUONRejectList.cxx:454
 AliMUONRejectList.cxx:455
 AliMUONRejectList.cxx:456
 AliMUONRejectList.cxx:457
 AliMUONRejectList.cxx:458
 AliMUONRejectList.cxx:459
 AliMUONRejectList.cxx:460
 AliMUONRejectList.cxx:461
 AliMUONRejectList.cxx:462
 AliMUONRejectList.cxx:463
 AliMUONRejectList.cxx:464
 AliMUONRejectList.cxx:465
 AliMUONRejectList.cxx:466
 AliMUONRejectList.cxx:467
 AliMUONRejectList.cxx:468
 AliMUONRejectList.cxx:469
 AliMUONRejectList.cxx:470
 AliMUONRejectList.cxx:471
 AliMUONRejectList.cxx:472