X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EVE%2FEveDet%2FAliEveITSScaledModule.cxx;h=b209644e74b5336f37fd167a470b01d2af6e2148;hb=48a828ec8de6d8f8fcd64bfa72c0355ee1820364;hp=aaa9c596e1dcb9dbafbc723eba70288265aaf33b;hpb=a15e6d7d7c80edcd0858dcdfd1d4bc5a888b9bf4;p=u%2Fmrichter%2FAliRoot.git diff --git a/EVE/EveDet/AliEveITSScaledModule.cxx b/EVE/EveDet/AliEveITSScaledModule.cxx index aaa9c596e1d..b209644e74b 100644 --- a/EVE/EveDet/AliEveITSScaledModule.cxx +++ b/EVE/EveDet/AliEveITSScaledModule.cxx @@ -43,10 +43,12 @@ void AliEveDigitScaleInfo::ScaleChanged(Int_t s) fScale = s; AliEveITSScaledModule* sm; - std::list::iterator i = fBackRefs.begin(); + RefMap_i i = fBackRefs.begin(); + // #endif while (i != fBackRefs.end()) { - sm = dynamic_cast(*i); + sm = dynamic_cast(i->first); + // #endif if(sm) sm->LoadQuads(); ++i; } @@ -58,10 +60,12 @@ void AliEveDigitScaleInfo::StatTypeChanged(Int_t t) fSyncPalette = kTRUE; AliEveITSScaledModule* sm; - std::list::iterator i = fBackRefs.begin(); + RefMap_i i = fBackRefs.begin(); + // #endif while (i != fBackRefs.end()) { - sm = dynamic_cast(*i); + sm = dynamic_cast(i->first); + // #endif if (sm) sm->SetQuadValues(); ++i; } @@ -107,12 +111,12 @@ ClassImp(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); @@ -135,18 +139,19 @@ void AliEveITSScaledModule::LoadQuads() // 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 dmap; std::map::iterator miter; - digits = fInfo->GetDigits(fID, fDetID); - ndigits = digits->GetEntriesFast(); - ScaledDigit_t* sd; Int_t scale = fScaleInfo->GetScale() -1; switch(fDetID) { @@ -170,10 +175,11 @@ void AliEveITSScaledModule::LoadQuads() 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()) { @@ -186,7 +192,7 @@ void AliEveITSScaledModule::LoadQuads() } else { - sd = dynamic_cast(GetId(miter->second)); + sd = static_cast(GetId(miter->second)); if(c1 < sd->fMinI) sd->fMinI = c1; else if( c1 > sd->fMaxI) @@ -213,23 +219,25 @@ void AliEveITSScaledModule::LoadQuads() 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; kUncheckedAt(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()) { @@ -242,7 +250,7 @@ void AliEveITSScaledModule::LoadQuads() } else { - sd = dynamic_cast(GetId(miter->second)); + sd = static_cast(GetId(miter->second)); if(c1 < sd->fMinI) sd->fMinI = c1; else if( c1 > sd->fMaxI) @@ -276,7 +284,7 @@ void AliEveITSScaledModule::LoadQuads() dpz = 2*fDz/fNz; dpx = 2*fDx/fNx; - AliITSdigitSSD *od=0; + AliITSdigitSSD *od = 0; for (Int_t k=0; kUncheckedAt(k); if(od->GetCoord1() == 1) @@ -287,8 +295,8 @@ void AliEveITSScaledModule::LoadQuads() c1 = od->GetCoord1(); c2 = od->GetCoord2(); id = j*i; + ScaledDigit_t* sd = 0; miter = dmap.find(id); - ScaledDigit_t* sd; if(miter == dmap.end()) { // printf("orig digit %d,%d scaled %d,%d \n",od->GetCoord1(),od->GetCoord2(),i,j); @@ -303,7 +311,7 @@ void AliEveITSScaledModule::LoadQuads() } else { - sd = dynamic_cast(GetId(miter->second)); + sd = static_cast(GetId(miter->second)); if(c1 < sd->fMinI) sd->fMinI = c1; else if( c1 > sd->fMaxI) @@ -335,7 +343,7 @@ void AliEveITSScaledModule::SetQuadValues() Int_t num = fPlex.Size(); for (Int_t i = 0 ; i < num; i++) { - ScaledDigit_t* sd = dynamic_cast(GetId(i)); + ScaledDigit_t* sd = static_cast(GetId(i)); Int_t v = 0; switch(fScaleInfo->GetStatType()) { @@ -410,9 +418,9 @@ void AliEveITSScaledModule::DigitSelected(Int_t idx) // Override control-click from TEveQuadSet printf("AliEveITSScaledModule::DigitSelected "); Print(); - DigitBase_t* qb = GetDigit(idx); - TObject* obj = qb->fId.GetObject(); - ScaledDigit_t* sd = dynamic_cast(obj); + // DigitBase_t *qb = GetDigit(idx); + TObject *obj = GetId(idx); + ScaledDigit_t *sd = static_cast(obj); TClonesArray *digits = fInfo->GetDigits(fID, fDetID); Int_t ndigits = digits->GetEntriesFast();