#include "AliEveITSScaledModule.h"
-#include <AliITSgeom.h>
#include <AliITSsegmentationSPD.h>
#include <AliITSsegmentationSDD.h>
#include <AliITSsegmentationSSD.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 (kST_Average),
+ fStatType (kSTAverage),
fSyncPalette(kFALSE)
{
}
fScale = s;
AliEveITSScaledModule* sm;
+#if ROOT_VERSION_CODE >= 334599
+ RefMap_i i = fBackRefs.begin();
+#else
std::list<TEveElement*>::iterator i = fBackRefs.begin();
+#endif
while (i != fBackRefs.end())
{
+#if ROOT_VERSION_CODE >= 334599
+ sm = dynamic_cast<AliEveITSScaledModule*>((*i).first);
+#else
sm = dynamic_cast<AliEveITSScaledModule*>(*i);
+#endif
if(sm) sm->LoadQuads();
++i;
}
fSyncPalette = kTRUE;
AliEveITSScaledModule* sm;
+#if ROOT_VERSION_CODE >= 334599
+ RefMap_i i = fBackRefs.begin();
+#else
std::list<TEveElement*>::iterator i = fBackRefs.begin();
+#endif
while (i != fBackRefs.end())
{
+#if ROOT_VERSION_CODE >= 334599
+ sm = dynamic_cast<AliEveITSScaledModule*>((*i).first);
+#else
sm = dynamic_cast<AliEveITSScaledModule*>(*i);
- if(sm) sm->SetQuadValues();
+#endif
+ if (sm) sm->SetQuadValues();
++i;
}
}
//______________________________________________________________________________
-// ScaledDigit
+// ScaledDigit_t
//
-AliEveITSScaledModule::ScaledDigit::ScaledDigit() :
+AliEveITSScaledModule::ScaledDigit_t::ScaledDigit_t() :
TObject(),
- N(0),
- sum(0), sqr_sum(0),
- min_i(-1), min_j(-1), max_i(-1), max_j(-1)
+ fN(0),
+ fSum(0), fSqrSum(0),
+ fMinI(-1), fMinJ(-1), fMaxI(-1), fMaxJ(-1)
{
}
-AliEveITSScaledModule::ScaledDigit::ScaledDigit(Int_t di, Int_t dj) :
+AliEveITSScaledModule::ScaledDigit_t::ScaledDigit_t(Int_t di, Int_t dj) :
TObject(),
- N(0),
- sum(0), sqr_sum(0),
- min_i(di), min_j(dj), max_i(di), max_j(dj)
+ fN(0),
+ fSum(0), fSqrSum(0),
+ fMinI(di), fMinJ(dj), fMaxI(di), fMaxJ(dj)
{
}
-void AliEveITSScaledModule::ScaledDigit::Dump() const
+void AliEveITSScaledModule::ScaledDigit_t::Dump() const
{
- printf("N %d, sum %f, sqr_sum %f",N, sum, sqr_sum);
+ printf("N %d, sum %f, sqr_sum %f", fN, fSum, fSqrSum);
}
-//______________________________________________________________________________
-
+//==============================================================================
+//==============================================================================
// AliEveITSScaledModule
+//==============================================================================
//______________________________________________________________________________
//
AliEveITSScaledModule::AliEveITSScaledModule(Int_t gid, AliEveITSDigitsInfo* info, AliEveDigitScaleInfo* si):
AliEveITSModule("AliEveITSScaledModule", "AliEveITSScaledModule"),
- fDigitsMap(),
fNx(-1),
fNz(-1),
fNCx(-1),
fNCz(-1),
- fScaleInfo(si)
+ fScaleInfo(si),
+ fDigitsMap()
{
SetOwnIds(kTRUE);
// We need this as TEveQuadSet offers optimized treatment for
// quads in the x-y plane.
- TClonesArray *digits;
+ 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, ndigits; // orig cells idx
- Int_t c1, c2; // original coordinates
+ 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;
- digits = fInfo->GetDigits(fID, fDetID);
- ndigits = digits->GetEntriesFast();
- ScaledDigit* sd;
Int_t scale = fScaleInfo->GetScale() -1;
switch(fDetID)
{
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());
+ 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())
{
z = dpz*(i) - fDz;
x = dpx*(j) - fDx;
AddQuad(x, z, dpx, dpz);
- sd = new ScaledDigit(c1, c2);
+ sd = new ScaledDigit_t(c1, c2);
QuadId(sd);
}
else
{
- sd = dynamic_cast<ScaledDigit*>(GetId(miter->second));
- if(c1 < sd->min_i)
- sd->min_i = c1;
- else if( c1 > sd->max_i)
- sd->max_i = c1;
-
- if(c2 < sd->min_j)
- sd->min_j = c2;
- else if( c2 > sd->max_j)
- sd->max_j = c2;
+ sd = dynamic_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->N++;
- sd->sum += od->GetSignal();
- sd->sqr_sum += od->GetSignal()*od->GetSignal();
+ sd->fN++;
+ sd->fSum += od->GetSignal();
+ sd->fSqrSum += od->GetSignal()*od->GetSignal();
}
break;
}
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;
+ dpz = 2*fDz/fNz;
+ dpx = 2*fDx/fNx;
- AliITSdigitSDD *od=0;
- for (Int_t k=0; k<ndigits; k++) {
- od=(AliITSdigitSDD*)digits->UncheckedAt(k);
+ 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);
+ 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())
{
z = dpz*(i) - fDz;
x = dpx*(j) - fDx;
AddQuad(x, z, dpx, dpz);
- sd = new ScaledDigit(od->GetCoord1(),od->GetCoord2());
+ sd = new ScaledDigit_t(od->GetCoord1(),od->GetCoord2());
QuadId(sd);
}
else
{
- sd = dynamic_cast<ScaledDigit*>(GetId(miter->second));
- if(c1 < sd->min_i)
- sd->min_i = c1;
- else if( c1 > sd->max_i)
- sd->max_i = c1;
-
- if(c2 < sd->min_j)
- sd->min_j = c2;
- else if( c2 > sd->max_j)
- sd->max_j = c2;
+ sd = dynamic_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->N++;
- sd->sum += od->GetSignal();
- sd->sqr_sum += od->GetSignal()*od->GetSignal();
+ sd->fN++;
+ sd->fSum += od->GetSignal();
+ sd->fSqrSum += od->GetSignal()*od->GetSignal();
}
break;
}
dpz = 2*fDz/fNz;
dpx = 2*fDx/fNx;
- AliITSdigitSSD *od=0;
+ AliITSdigitSSD *od = 0;
for (Int_t k=0; k<ndigits; k++) {
od=(AliITSdigitSSD*)digits->UncheckedAt(k);
if(od->GetCoord1() == 1)
c1 = od->GetCoord1(); c2 = od->GetCoord2();
id = j*i;
+ ScaledDigit_t* sd = 0;
miter = dmap.find(id);
- ScaledDigit* sd;
if(miter == dmap.end())
{
// printf("orig digit %d,%d scaled %d,%d \n",od->GetCoord1(),od->GetCoord2(),i,j);
Float_t a = ( od->GetCoord1() == 1) ? ap : an;
AddLine(x-a, -fDz, 2*a, 2*fDz);
- sd = new ScaledDigit(c1, c2);
+ sd = new ScaledDigit_t(c1, c2);
QuadId(sd);
}
else
{
- sd = dynamic_cast<ScaledDigit*>(GetId(miter->second));
- if(c1 < sd->min_i)
- sd->min_i = c1;
- else if( c1 > sd->max_i)
- sd->max_i = c1;
-
- if(c2 < sd->min_j)
- sd->min_j = c2;
- else if( c2 > sd->max_j)
- sd->max_j = c2;
+ sd = dynamic_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->N++;
- sd->sum += od->GetSignal();
- sd->sqr_sum += od->GetSignal()*od->GetSignal();
+ sd->fN++;
+ sd->fSum += od->GetSignal();
+ sd->fSqrSum += od->GetSignal()*od->GetSignal();
} // for digits
break;
} // end case 2
{
if(fScaleInfo->GetSyncPalette()) SyncPalette();
- Int_t N = fPlex.Size();
- for (Int_t i = 0 ; i< N; i++)
+ Int_t num = fPlex.Size();
+ for (Int_t i = 0 ; i < num; i++)
{
- ScaledDigit* sd = dynamic_cast<ScaledDigit*>(GetId(i));
+ ScaledDigit_t* sd = dynamic_cast<ScaledDigit_t*>(GetId(i));
Int_t v = 0;
switch(fScaleInfo->GetStatType())
{
using namespace TMath;
- case AliEveDigitScaleInfo::kST_Occup:
- v = Nint((100.0*sd->N) / (fNCx*fNCz));
+ case AliEveDigitScaleInfo::kSTOccup:
+ v = Nint((100.0*sd->fN) / (fNCx*fNCz));
break;
- case AliEveDigitScaleInfo::kST_Average:
- v = Nint((Double_t) sd->sum / sd->N);
+ case AliEveDigitScaleInfo::kSTAverage:
+ v = Nint((Double_t) sd->fSum / sd->fN);
break;
- case AliEveDigitScaleInfo::kST_Rms:
- v = Nint(Sqrt(sd->sqr_sum) / sd->N);
+ case AliEveDigitScaleInfo::kSTRms:
+ v = Nint(Sqrt(sd->fSqrSum) / sd->fN);
break;
}
DigitBase_t* qb = GetDigit(i);
void AliEveITSScaledModule::SyncPalette()
{
// printf("AliEveITSScaledModule::SyncPalette()\n");
- if(fScaleInfo->GetStatType() == AliEveDigitScaleInfo::kST_Occup)
+ if(fScaleInfo->GetStatType() == AliEveDigitScaleInfo::kSTOccup)
{
// SPD
AliEveITSModule::fgSPDPalette->SetLimits(0, 100);
}
else
{
- AliEveITSDigitsInfo& DI = *fInfo;
+ AliEveITSDigitsInfo& di = *fInfo;
// SPD
- AliEveITSModule::fgSPDPalette->SetLimits(0, DI.fSPDHighLim);
- AliEveITSModule::fgSPDPalette->SetMinMax(DI.fSPDMinVal, DI.fSPDMaxVal);
+ 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);
+ 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);
+ 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)
+void AliEveITSScaledModule::GetScaleData(Int_t& cnx, Int_t& cnz, Int_t& total) const
{
- cnx =fNx;
- cnz =fNz;
+ cnx = fNx;
+ cnz = fNz;
total = cnx*cnz;
}
// Override control-click from TEveQuadSet
printf("AliEveITSScaledModule::DigitSelected "); Print();
- DigitBase_t* qb = GetDigit(idx);
- TObject* obj = qb->fId.GetObject();
- ScaledDigit* sd = dynamic_cast<ScaledDigit*>(obj);
+ // DigitBase_t *qb = GetDigit(idx);
+ TObject *obj = GetId(idx);
+ ScaledDigit_t *sd = dynamic_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->N, fNCx, fNCz);
+ 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->min_i && d->GetCoord1()<=sd->max_i &&
- d->GetCoord2()>=sd->min_j && d->GetCoord2()<=sd->max_j)
+ 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(" | ");