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 AliMUONTriggerResponseV1
// ------------------
// Trigger chamber response 
// with cluster size activated
//-----------------------------------------------------------------------------

#include "AliMUONResponseTriggerV1.h"
#include "AliMUON.h"
#include "AliMUONDigit.h"
#include "AliMUONGeometryTransformer.h"
#include "AliMUONConstants.h"

#include "AliCDBManager.h"
#include "AliCDBPath.h"
#include "AliCDBEntry.h"

#include "AliMpPad.h"
#include "AliMpSegmentation.h"
#include "AliMpVSegmentation.h"
#include "AliMpCathodType.h"

#include "AliRun.h"
#include "AliDCSValue.h"

#include <TMath.h>
#include <TRandom.h>
#include <TMap.h>

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

namespace
{
  AliMUON* muon()
  {
    return static_cast<AliMUON*>(gAlice->GetModule("MUON"));
  }

  void Global2Local(Int_t detElemId, Double_t xg, Double_t yg, Double_t zg, Double_t& xl, Double_t& yl, Double_t& zl)
  {  
  // ideally should be : 
  // Double_t x,y,z;
  // AliMUONGeometry::Global2Local(detElemId,xg,yg,zg,x,y,z);
  // but while waiting for this geometry singleton, let's go through
  // AliMUON still.
  
    const AliMUONGeometryTransformer* transformer = muon()->GetGeometryTransformer();
    transformer->Global2Local(detElemId,xg,yg,zg,xl,yl,zl);
  }

}
				

//------------------------------------------------------------------   
AliMUONResponseTriggerV1::AliMUONResponseTriggerV1() : AliMUONResponseTrigger(), fGenerCluster(0), fHVvalues(), fBValues(), fWorkCondition(2)
{
}

//------------------------------------------------------------------   
AliMUONResponseTriggerV1::AliMUONResponseTriggerV1(Int_t mode) : AliMUONResponseTrigger(), fGenerCluster(0), fHVvalues(), fBValues(), fWorkCondition(mode)
{
  //mode: 1=streamer - 2=avalanche
  SetHV();
  SetBValues();
}

//------------------------------------------------------------------   
AliMUONResponseTriggerV1::~AliMUONResponseTriggerV1()
{
}

//------------------------------------------------------------------   
Int_t AliMUONResponseTriggerV1::SetGenerCluster()
{
  // Set the GenerCluster parameter and return 1
  fGenerCluster = gRandom->Rndm();
  return 1;
}

//------------------------------------------------------------------   
Float_t AliMUONResponseTriggerV1::FireStripProb(Float_t x4,Float_t theta,Int_t rpc,Int_t plane,Int_t cath) const
{
/// parametrisation of the probability that a strip neighbour of the main 
/// strip is fired
/// WARNING : need to convert x4 from cm to mm

  Float_t hv = fHVvalues.At(18*plane+rpc);
  Float_t parA, parB, parC;
  
  if(fWorkCondition == 2) //avalanche
    parB = fBValues.At(72*cath+18*plane+rpc);
  else //streamer
    parB = 2.966;
  
  
  parA = 6.089 * hv - 52.70;
  parC = 8.3e-4 * hv - 0.5e-3;  

 return (TMath::Cos(theta)*parA/(parA+TMath::Cos(theta)*TMath::Power(x4*10.,parB))+parC)/(TMath::Cos(theta)+parC);
}

//------------------------------------------------------------------
void AliMUONResponseTriggerV1::DisIntegrate(const AliMUONHit& hit, TList& digits, Float_t /*timeDif*/)
{
  /// Generate digits (on each cathode) from 1 hit, with cluster-size generation.
  
  digits.Clear();
  
  Float_t xhit = hit.X();
  Float_t yhit = hit.Y();
  Float_t zhit = hit.Z();
  Int_t detElemId = hit.DetElemId();
  Int_t plane = detElemId/100 - 11; //plane from 0 to 3
  Int_t rpc = detElemId%100; //rpc from 0 to 3
  
  Double_t x,y,z;
  Global2Local(detElemId,xhit,yhit,zhit,x,y,z);
  
  Float_t tof = hit.Age();
  Int_t twentyNano(100);
  if (tof<AliMUONConstants::TriggerTofLimit())
  {
    twentyNano=1;
  }
  
  
  Int_t nboard = 0;

  for(Int_t cath = AliMp::kCath0; cath <= AliMp::kCath1; ++cath)
  {
    const AliMpVSegmentation* seg = AliMpSegmentation::Instance()->GetMpSegmentation(detElemId,AliMp::GetCathodType(cath));
    
    AliMpPad pad = seg->PadByPosition(x,y,kFALSE);
    Int_t ix = pad.GetIx();
    Int_t iy = pad.GetIy();
    
    AliDebug(1,Form("xhit,yhit=%e,%e lx,ly,lz=%e,%e,%e ix,iy=%d,%d",xhit,yhit,x,y,z,ix,iy));
    
    if ( !pad.IsValid() )
    {
      AliWarning(Form("hit w/o strip %d-%d xhit,yhit=%e,%e local x,y,z ""%e,%e,%e ix,iy=%d,%d",detElemId,cath,xhit,yhit,x,y,z,ix,iy));
      continue;
    }
    
    if ( cath == AliMp::kCath0 ) nboard = pad.GetLocalBoardId(0);
        
    AliMUONDigit* d = new AliMUONDigit(detElemId,nboard,
                                       pad.GetLocalBoardChannel(0),
                                       cath);
    
    d->SetPadXY(ix,iy);
    d->SetCharge(twentyNano);
    
    digits.Add(d);
    
    SetGenerCluster(); // 1 randum number per cathode (to be checked)
    
    Int_t xList[30], yList[30];
    Neighbours(cath,ix,iy,xList,yList);
    
    
    Int_t qp = 0; // fired/no-fired strip = 1/0
    for (Int_t i=0; i<30; i++)  // loop on neighbors
    {
      if (i==0 || i==15 || qp!=0) // built-up cluster // need to iterate in iy/ix for bending/non-bending plane
      {
	Int_t ixNeigh = (cath == 0) ? ix : xList[i];
	Int_t iyNeigh = (cath == 0) ? yList[i] : iy;
	
	AliMpPad padNeigh = seg->PadByIndices(ixNeigh,iyNeigh,kFALSE);
	if(padNeigh.IsValid()) // existing neighbourg
	{
	  Int_t dix=-(ixNeigh-ix);
	  Int_t diy=-(iyNeigh-iy);
	  Float_t xlocalNeigh = padNeigh.GetPositionX();
	  Float_t ylocalNeigh = padNeigh.GetPositionY();
	  Float_t dpx = padNeigh.GetDimensionX();
	  Float_t dpy = padNeigh.GetDimensionY();
	  Float_t distX = TMath::Abs((Float_t)dix) * ((Float_t)dix * dpx + xlocalNeigh - x);
	  Float_t distY = TMath::Abs((Float_t)diy) * ((Float_t)diy * dpy + ylocalNeigh - y);
	  Float_t dist = TMath::Sqrt(distX*distX+distY*distY);
		
	  if(fGenerCluster < FireStripProb(dist,0,rpc,plane,cath))
	    qp = 1;
	  else
	    qp = 0;
		
	  if(qp == 1)
	  { // this digit is fired    
	    AliMUONDigit* dNeigh = new AliMUONDigit(detElemId,padNeigh.GetLocalBoardId(0),padNeigh.GetLocalBoardChannel(0),cath);
	    
	    dNeigh->SetPadXY(ixNeigh,iyNeigh);      
	    dNeigh->SetCharge(twentyNano);
	    digits.Add(dNeigh);
	  } // digit fired
	} // pad is valid
      } // built-up cluster
    } // loop on neighbors
  } // loop on cathode
}

//------------------------------------------------------------------
void AliMUONResponseTriggerV1::SetHV()
{
  //
  /// Set HV values from OCDB
  //
  fHVvalues.Set(72);
  TString side;
  Int_t newRPC=0,newPlane=0;
  
  AliCDBManager *manager = AliCDBManager::Instance();
  AliCDBPath path("MUON/Calib/TriggerDCS");
  AliCDBEntry *entry = manager->Get(path);
  if (entry == NULL) {
    AliWarning("No map found in MUON/Calib/TriggerDCS");
    return;
  }
  TMap *hvMap = dynamic_cast<TMap*>(entry->GetObject());
  TObjArray *objArr = 0x0;
  
  AliDCSValue *dcsValue = 0x0;
  UInt_t time1,time2,timebegin=0,timeend=0;
  Int_t nEntries;
  Float_t voltage = 0;
  
  for(Int_t iPlane=0; iPlane<4; iPlane++) //loop on MT
  {
    for(Int_t iRPC=0; iRPC<18; iRPC++) //loop on RPC
    {
      if(iRPC>=5 && iRPC<=13)
      {
        side = "OUTSIDE";
        newRPC = 14-iRPC;
      }
  
      else
      {
        side = "INSIDE";
    
        if(iRPC>=14)
          newRPC = iRPC-13;
        else
          newRPC = iRPC+5;
      }
  
      switch(iPlane)
      {
        case 0: newPlane = 11; break;
        case 1: newPlane = 12; break;
        case 2: newPlane = 21; break;
        case 3: newPlane = 22; break;
      }
  
      objArr = (TObjArray*)hvMap->GetValue(Form("MTR_%s_MT%d_RPC%d_HV.vEff",side.Data(),newPlane,newRPC));
      nEntries = objArr->GetEntries();
	
      for(Int_t i=0; i<nEntries-1; i++)
      {	  
        dcsValue = (AliDCSValue*)objArr->At(i+1);
        time2 = dcsValue->GetTimeStamp();
    
        if(i==nEntries-2)
          timeend = time2;
    
        dcsValue = (AliDCSValue*)objArr->At(i);
          time1 = dcsValue->GetTimeStamp();
    
        if(i==0)
          timebegin = time1;
    
        voltage += (dcsValue->GetFloat())*(time2-time1);
      }
      
      Double_t deltaTime = timeend - timebegin;
      Double_t meanVoltage = ( deltaTime == 0. ) ? 0. : voltage/deltaTime/1000.;
      fHVvalues.AddAt(meanVoltage,18*iPlane+iRPC); //voltage in kV, not in V
      
      voltage=0;
      AliDebug(1,Form("HV value for MTR_%s_MT%d_RPC%d_HV.vEff = %g (kV)",side.Data(),newPlane,newRPC,meanVoltage));
    }
  }
}

//------------------------------------------------------------------  
void AliMUONResponseTriggerV1::SetBValues()
{
  //
  /// Set B values for cluster size function
  //
  
  fBValues.Set(144);
  
  Float_t bValues[2][4][18] =                												              {{{1.97,2.47,2.47,2.47,2.97,2.97,2.47,2.47,1.97,2.22,1.97,2.47,1.97,2.97,2.97,2.47,2.47,1.97},  //MT11BP
    {2.22,2.22,1.97,2.47,2.97,2.97,1.97,2.47,1.97,1.97,1.97,2.47,1.97,2.97,2.97,1.97,1.97,1.97},  //MT12BP
    {2.22,2.22,2.47,2.47,2.97,2.97,2.47,2.47,2.22,1.97,1.97,2.47,1.97,2.97,2.97,1.97,1.97,1.97},  //MT21BP
    {1.97,1.97,2.97,2.97,2.97,2.97,2.47,1.97,1.97,1.97,1.72,2.47,2.22,2.97,2.97,1.97,1.97,1.97}}, //MT22BP
   {{1.97,2.47,2.47,2.97,2.97,2.97,2.97,2.47,1.97,1.97,2.22,2.47,2.97,2.97,2.97,2.97,1.97,1.72},  //MT11NBP
    {2.47,1.97,2.22,2.97,2.97,2.97,2.47,2.97,1.97,1.97,1.97,2.97,2.97,2.97,2.97,2.97,1.97,1.97},  //MT12NBP
    {1.97,2.47,2.47,2.97,2.97,2.97,2.97,2.47,2.22,1.97,2.22,2.47,2.97,2.97,2.97,2.47,1.97,1.97},  //MT21NBP
    {1.72,1.97,2.97,2.97,2.97,2.97,2.97,1.97,1.72,2.22,1.97,2.47,2.97,2.47,2.97,1.97,1.97,1.97}}};//MT22NBP
                                
  for(Int_t iCath=0; iCath<2; iCath++) //loop on side
  {
    for(Int_t iPlane=0; iPlane<4; iPlane++) //loop on MT
    {
      for(Int_t iRPC=0; iRPC<18; iRPC++) //loop on RPC
      {
	fBValues.AddAt(bValues[iCath][iPlane][iRPC],72*iCath+18*iPlane+iRPC);
      }
    }
  }
}

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