ROOT logo
// $Id$
// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007

/**************************************************************************
 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
 * full copyright notice.                                                 *
 **************************************************************************/

#include "AliEveITSScaledModule.h"

#include <AliITSsegmentationSPD.h>
#include <AliITSsegmentationSDD.h>
#include <AliITSsegmentationSSD.h>

#include <AliITSdigitSPD.h>
#include <AliITSdigitSDD.h>
#include <AliITSdigitSSD.h>

#include <TMath.h>
#include <TClonesArray.h>

//==============================================================================
//==============================================================================
// AliEveDigitScaleInfo
//==============================================================================

//______________________________________________________________________________
//
// Encapsulates current state of scaling and agglomeration.

ClassImp(AliEveDigitScaleInfo)

AliEveDigitScaleInfo::AliEveDigitScaleInfo():
  fScale(1),
  fStatType (kSTAverage),
  fSyncPalette(kFALSE)
{
}

void AliEveDigitScaleInfo::ScaleChanged(Int_t s)
{
  fScale = s;

  AliEveITSScaledModule* sm;
  RefMap_i i = fBackRefs.begin();
  // #endif
  while (i != fBackRefs.end())
  {
    sm = dynamic_cast<AliEveITSScaledModule*>(i->first);
    // #endif
    if(sm) sm->LoadQuads();
    ++i;
  }
}

void AliEveDigitScaleInfo::StatTypeChanged(Int_t t)
{
  fStatType = t;
  fSyncPalette = kTRUE;

  AliEveITSScaledModule* sm;
  RefMap_i i = fBackRefs.begin();
  // #endif
  while (i != fBackRefs.end())
  {
    sm = dynamic_cast<AliEveITSScaledModule*>(i->first);
    // #endif
    if (sm) sm->SetQuadValues();
    ++i;
  }
}

//______________________________________________________________________________
// ScaledDigit_t
//

AliEveITSScaledModule::ScaledDigit_t::ScaledDigit_t() :
  TObject(),
  fN(0),
  fSum(0), fSqrSum(0),
  fMinI(-1), fMinJ(-1), fMaxI(-1), fMaxJ(-1)
{
}

AliEveITSScaledModule::ScaledDigit_t::ScaledDigit_t(Int_t di, Int_t dj) :
  TObject(),
  fN(0),
  fSum(0), fSqrSum(0),
  fMinI(di), fMinJ(dj), fMaxI(di), fMaxJ(dj)
{
}

void AliEveITSScaledModule::ScaledDigit_t::Dump() const
{
  printf("N %d, sum %f, sqr_sum %f", fN, fSum, fSqrSum);
}


//==============================================================================
//==============================================================================
// AliEveITSScaledModule
//==============================================================================

//______________________________________________________________________________
//
// Visualization of an ITS module with digits aggregated
// on a grid of pre-defined size.

ClassImp(AliEveITSScaledModule)

AliEveITSScaledModule::AliEveITSScaledModule(Int_t gid, AliEveITSDigitsInfo* info, AliEveDigitScaleInfo* si):
  AliEveITSModule("AliEveITSScaledModule", "AliEveITSScaledModule"),
  fNx(-1),
  fNz(-1),
  fNCx(-1),
  fNCz(-1),
  fScaleInfo(si),
  fDigitsMap()
{
  SetOwnIds(kTRUE);

  SetDigitsInfo(info);
  SetID(gid);
  fScaleInfo->IncRefCount(this);
}

AliEveITSScaledModule::~AliEveITSScaledModule()
{
  fScaleInfo->DecRefCount(this);
}

/******************************************************************************/

void AliEveITSScaledModule::LoadQuads()
{
  // Here we still use 'z' for the name of axial coordinates.
  // The transforamtion matrix aplied rotates y -> z.
  // We need this as TEveQuadSet offers optimized treatment for
  // quads in the x-y plane.

  TClonesArray *digits = fInfo->GetDigits(fID, fDetID);
  if (!digits) return;

  Int_t ndigits = digits->GetEntriesFast();

  Float_t       x, z, zo, dpx, dpz; // orig cells size, pos
  Int_t         i, j;               // orig cells idx
  Int_t         c1, c2;             // original coordinates

  Int_t id;
  std::map<Int_t, Int_t> dmap;
  std::map<Int_t, Int_t>::iterator miter;

  Int_t scale = fScaleInfo->GetScale() -1;
  switch(fDetID)
  {
    case 0:
    {
      // SPD
      Reset(kQT_RectangleXZFixedY, kFALSE, 32);

      fNCz = fInfo->fSPDScaleZ[scale];
      fNCx = fInfo->fSPDScaleX[scale];
      fNz  = Int_t(fInfo->fSegSPD->Npz()/fNCz);
      fNx  = Int_t(fInfo->fSegSPD->Npx()/fNCx);
      dpz = 2*fDz/fNz;
      dpx = 2*fDx/fNx;
      //printf("SPD orig cells (%d, %d) (%d, %d)\n", fInfo->fSegSPD->Npx(), fInfo->fSegSPD->Npz(), Nx, Nz);

      AliITSdigitSPD *od ;
      for (Int_t k=0; k<ndigits; ++k)
      {
	od = (AliITSdigitSPD*) digits->UncheckedAt(k);

	fInfo->GetSPDLocalZ(od->GetCoord1(),zo);
        c1 = od->GetCoord1(); c2 = od->GetCoord2();
	i  = Int_t((zo+fDz)/dpz);
	j  = Int_t((od->GetCoord2()*fNx)/fInfo->fSegSPD->Npx());
	id = j*fNx + i;

        ScaledDigit_t* sd = 0;
        miter = dmap.find(id);
	if(miter == dmap.end())
	{
          dmap[id] = fPlex.Size();
          z = dpz*(i) - fDz;
          x = dpx*(j) - fDx;
          AddQuad(x, z, dpx, dpz);
          sd = new ScaledDigit_t(c1, c2);
	  QuadId(sd);
	}
        else
	{
	  sd = static_cast<ScaledDigit_t*>(GetId(miter->second));
          if(c1 < sd->fMinI)
	    sd->fMinI = c1;
	  else if( c1 > sd->fMaxI)
            sd->fMaxI = c1;

          if(c2 < sd->fMinJ)
	    sd->fMinJ = c2;
	  else if( c2 > sd->fMaxJ)
	    sd->fMaxJ = c2;
	}

	sd->fN++;
	sd->fSum  += od->GetSignal();
	sd->fSqrSum += od->GetSignal()*od->GetSignal();
      }
      break;
    }
    case 1:
    {
      // SDD
      Reset(kQT_RectangleXZFixedY, kFALSE, 32);

      fNCz = fInfo->fSDDScaleZ[scale];
      fNCx = fInfo->fSDDScaleX[scale];
      fNz  = Int_t(fInfo->fSegSDD->Npz()/fNCz);
      fNx  = Int_t(fInfo->fSegSDD->Npx()/fNCx);
      dpz  = 2*fDz/fNz;
      dpx  = 2*fDx/fNx;

      AliITSdigitSDD *od = 0;
      for (Int_t k = 0; k < ndigits; ++k)
      {
	od = (AliITSdigitSDD*)digits->UncheckedAt(k);
	fInfo->fSegSDD->DetToLocal(od->GetCoord2(), od->GetCoord1(),x,z);
	z += fDz;
	x += fDx;
	i  = Int_t(z/dpz);
	j  = Int_t(x/dpx);
	//printf("Mod %d coord %d,%d out of %d,%d :: ORIG coord %d,%d out of %d,%d \n",fID,
	//       i,j,Nz,Nx,od->GetCoord1(),od->GetCoord2(),fInfo->fSegSDD->Npz(),fInfo->fSegSDD->Npx());

	id = j*fNx + i;
	c1 = od->GetCoord1(); c2 = od->GetCoord2();

	ScaledDigit_t* sd = 0;
	miter = dmap.find(id);
	if(miter == dmap.end())
	{
	  dmap[id] = fPlex.Size();
	  z = dpz*(i) - fDz;
	  x = dpx*(j) - fDx;
	  AddQuad(x, z, dpx, dpz);
	  sd = new ScaledDigit_t(od->GetCoord1(),od->GetCoord2());
	  QuadId(sd);
	}
	else
	{
	  sd = static_cast<ScaledDigit_t*>(GetId(miter->second));
	  if(c1 < sd->fMinI)
	    sd->fMinI = c1;
	  else if( c1 > sd->fMaxI)
	    sd->fMaxI = c1;

	  if(c2 < sd->fMinJ)
	    sd->fMinJ = c2;
	  else if( c2 > sd->fMaxJ)
	    sd->fMaxJ = c2;
	}
	sd->fN++;
	sd->fSum  += od->GetSignal();
	sd->fSqrSum += od->GetSignal()*od->GetSignal();
      }
      break;
    }
    case 2:
    {
      // SSD
      Reset(kQT_LineXZFixedY, kFALSE, 32);

      AliITSsegmentationSSD* seg = fInfo->fSegSSD;
      Float_t ap, an; // positive/negative angles -> offsets
      seg->Angles(ap, an);
      ap =   TMath::Tan(ap) * fDz;
      an = - TMath::Tan(an) * fDz;

      fNCx  = fInfo->fSSDScale[scale];
      fNz  = 1;
      fNx  = Int_t(fInfo->fSegSSD->Npx()/fNCx);
      dpz = 2*fDz/fNz;
      dpx = 2*fDx/fNx;

      AliITSdigitSSD *od = 0;
      for (Int_t k=0; k<ndigits; k++) {
	od=(AliITSdigitSSD*)digits->UncheckedAt(k);
	if(od->GetCoord1() == 1)
	  i = 1; // p side
	else
	  i= -1; // n side
	j = Int_t(od->GetCoord2()/fNCx);
	c1 = od->GetCoord1(); c2 = od->GetCoord2();
	id = j*i;

	ScaledDigit_t* sd = 0;
	miter = dmap.find(id);
	if(miter == dmap.end())
	{
	  // printf("orig digit %d,%d scaled %d,%d \n",od->GetCoord1(),od->GetCoord2(),i,j);
	  dmap[id] = fPlex.Size();
	  z = dpz*(i) - fDz;
	  x = dpx*(j) - fDx;
	  Float_t a = ( od->GetCoord1() == 1) ? ap : an;
	  AddLine(x-a, -fDz, 2*a, 2*fDz);

	  sd = new ScaledDigit_t(c1, c2);
	  QuadId(sd);
	}
	else
	{
	  sd = static_cast<ScaledDigit_t*>(GetId(miter->second));
	  if(c1 < sd->fMinI)
	    sd->fMinI = c1;
	  else if( c1 > sd->fMaxI)
	    sd->fMaxI = c1;

	  if(c2 < sd->fMinJ)
	    sd->fMinJ = c2;
	  else if( c2 > sd->fMaxJ)
	    sd->fMaxJ = c2;
	}
	sd->fN++;
	sd->fSum  += od->GetSignal();
	sd->fSqrSum += od->GetSignal()*od->GetSignal();
      } // for digits
      break;
    } // end case 2
  } // end switch

  SetQuadValues();
  RefitPlex();
}

/******************************************************************************/

void AliEveITSScaledModule::SetQuadValues()
{
  if(fScaleInfo->GetSyncPalette()) SyncPalette();

  Int_t num = fPlex.Size();
  for (Int_t i = 0 ; i < num; i++)
  {
    ScaledDigit_t* sd = static_cast<ScaledDigit_t*>(GetId(i));
    Int_t v = 0;
    switch(fScaleInfo->GetStatType())
    {
      using namespace TMath;

      case AliEveDigitScaleInfo::kSTOccup:
	v = Nint((100.0*sd->fN) / (fNCx*fNCz));
	break;
      case AliEveDigitScaleInfo::kSTAverage:
	v = Nint((Double_t) sd->fSum / sd->fN);
	break;
      case AliEveDigitScaleInfo::kSTRms:
	v = Nint(Sqrt(sd->fSqrSum) / sd->fN);
	break;
    }
    DigitBase_t* qb = GetDigit(i);
    qb->fValue = v;
  }
}

/******************************************************************************/

void AliEveITSScaledModule::SyncPalette()
{
  // printf("AliEveITSScaledModule::SyncPalette()\n");
  if(fScaleInfo->GetStatType() == AliEveDigitScaleInfo::kSTOccup)
  {
    // SPD
    AliEveITSModule::fgSPDPalette->SetLimits(0, 100);
    AliEveITSModule::fgSPDPalette->SetMinMax(0, 100);

    // SDD
    AliEveITSModule::fgSDDPalette->SetLimits(0, 100);
    AliEveITSModule::fgSDDPalette->SetMinMax(0, 100);

    // SSD
    AliEveITSModule::fgSSDPalette->SetLimits(0, 100);
    AliEveITSModule::fgSDDPalette->SetMinMax(0, 100);
  }
  else
  {
    AliEveITSDigitsInfo& di = *fInfo;
    // SPD
    AliEveITSModule::fgSPDPalette->SetLimits(0, di.fSPDHighLim);
    AliEveITSModule::fgSPDPalette->SetMinMax(di.fSPDMinVal, di.fSPDMaxVal);

    // SDD
    AliEveITSModule::fgSDDPalette->SetLimits(0, di.fSDDHighLim);
    AliEveITSModule::fgSDDPalette->SetMinMax(di.fSDDMinVal, di.fSDDMaxVal);

    // SSD
    AliEveITSModule::fgSSDPalette->SetLimits(0, di.fSSDHighLim);
    AliEveITSModule::fgSSDPalette->SetMinMax(di.fSSDMinVal, di.fSSDMaxVal);
  }

  fScaleInfo->SetSyncPalette(kFALSE);
}

/******************************************************************************/

void AliEveITSScaledModule::GetScaleData(Int_t& cnx, Int_t& cnz, Int_t& total) const
{
  cnx   = fNx;
  cnz   = fNz;
  total = cnx*cnz;
}

/******************************************************************************/

void  AliEveITSScaledModule::DigitSelected(Int_t idx)
{
  // Override control-click from TEveQuadSet
  printf("AliEveITSScaledModule::DigitSelected "); Print();

  // DigitBase_t *qb  = GetDigit(idx);
  TObject     *obj = GetId(idx);
  ScaledDigit_t *sd = static_cast<ScaledDigit_t*>(obj);
  TClonesArray *digits = fInfo->GetDigits(fID, fDetID);
  Int_t ndigits = digits->GetEntriesFast();

  printf("%d digits in cell scaleX = %d,  scaleZ = %d \n", sd->fN, fNCx, fNCz);

  Int_t il = 0;
  for(Int_t k=0; k<ndigits; k++)
  {
    AliITSdigit *d = (AliITSdigit*) digits->UncheckedAt(k);

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