X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TPC%2FAliTPCv2.cxx;h=9c342510ab9fabeed06d8f5292954ca68ed19afd;hb=8acd5e6001d451de4da3c0a67c3ab89e3cee2207;hp=a32830ebf8eb5f1cddfa17df20ea838bb0750a7f;hpb=4481461d468956d3287efc63d3c96b0675656a84;p=u%2Fmrichter%2FAliRoot.git diff --git a/TPC/AliTPCv2.cxx b/TPC/AliTPCv2.cxx index a32830ebf8e..9c342510ab9 100644 --- a/TPC/AliTPCv2.cxx +++ b/TPC/AliTPCv2.cxx @@ -39,6 +39,7 @@ #include "AliTPCParam.h" #include "AliTPCTrackHitsV2.h" #include "AliTPCv2.h" +#include "AliGeomManager.h" #include "TGeoVolume.h" #include "TGeoPcon.h" #include "TGeoTube.h" @@ -908,7 +909,8 @@ void AliTPCv2::AddAlignableVolumes() const void AliTPCv2::SetInnerChambersAlignable() const { // - Int_t modnum = 0; + AliGeomManager::ELayerID idTPC1 = AliGeomManager::kTPC1; + Int_t modUID, modnum = 0; TString vpstr1 = "ALIC_1/TPC_M_1/TPC_Drift_1/TPC_ENDCAP_1/TPC_SECT_"; TString vpstr2 = "ALIC_1/TPC_M_1/TPC_Drift_1/TPC_ENDCAP_2/TPC_SECT_"; TString vpappend = "/TPC_IROC_1"; @@ -918,42 +920,35 @@ void AliTPCv2::SetInnerChambersAlignable() const TString volpath, symname; for(Int_t cnt=1; cnt<=18; cnt++){ + modUID = AliGeomManager::LayerToVolUID(idTPC1,modnum++); volpath = vpstr1; volpath += cnt; volpath += vpappend; symname = snstr1; symname += cnt; symname += snappend; - if(!gGeoManager->SetAlignableEntry(symname.Data(),volpath.Data())) + if(!gGeoManager->SetAlignableEntry(symname.Data(),volpath.Data(),modUID)) AliFatal(Form("Alignable entry %s not created. Volume path %s not valid", symname.Data(),volpath.Data())); - // - TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntry(symname.Data()); - const char *path = alignableEntry->GetTitle(); - if (!gGeoManager->cd(path)) - AliFatal(Form("Volume path %s not valid!",path)); - TGeoHMatrix* globMatrix = gGeoManager->GetCurrentMatrix(); + TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntryByUID(modUID); + TGeoHMatrix* globMatrix = alignableEntry->GetGlobalOrig(); TGeoHMatrix* matTtoL = fTPCParam->Tracking2LocalMatrix(globMatrix,cnt-1); alignableEntry->SetMatrix(matTtoL); - modnum++; } for(Int_t cnt=1; cnt<=18; cnt++){ + modUID = AliGeomManager::LayerToVolUID(idTPC1,modnum++); volpath = vpstr2; volpath += cnt; volpath += vpappend; symname = snstr2; symname += cnt; symname += snappend; - if(!gGeoManager->SetAlignableEntry(symname.Data(),volpath.Data())) + if(!gGeoManager->SetAlignableEntry(symname.Data(),volpath.Data(),modUID)) AliFatal(Form("Alignable entry %s not created. Volume path %s not valid", symname.Data(),volpath.Data())); - TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntry(symname.Data()); - const char *path = alignableEntry->GetTitle(); - if (!gGeoManager->cd(path)) - AliFatal(Form("Volume path %s not valid!",path)); - TGeoHMatrix* globMatrix = gGeoManager->GetCurrentMatrix(); + TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntryByUID(modUID); + TGeoHMatrix* globMatrix = alignableEntry->GetGlobalOrig(); TGeoHMatrix* matTtoL = fTPCParam->Tracking2LocalMatrix(globMatrix,18+cnt-1); alignableEntry->SetMatrix(matTtoL); - modnum++; } } @@ -961,7 +956,8 @@ void AliTPCv2::SetInnerChambersAlignable() const void AliTPCv2::SetOuterChambersAlignable() const { // - Int_t modnum = 0; + AliGeomManager::ELayerID idTPC2 = AliGeomManager::kTPC2; + Int_t modUID, modnum = 0; TString vpstr1 = "ALIC_1/TPC_M_1/TPC_Drift_1/TPC_ENDCAP_1/TPC_SECT_"; TString vpstr2 = "ALIC_1/TPC_M_1/TPC_Drift_1/TPC_ENDCAP_2/TPC_SECT_"; TString vpappend = "/TPC_OROC_1"; @@ -971,41 +967,35 @@ void AliTPCv2::SetOuterChambersAlignable() const TString volpath, symname; for(Int_t cnt=1; cnt<=18; cnt++){ + modUID = AliGeomManager::LayerToVolUID(idTPC2,modnum++); volpath = vpstr1; volpath += cnt; volpath += vpappend; symname = snstr1; symname += cnt; symname += snappend; - if(!gGeoManager->SetAlignableEntry(symname.Data(),volpath.Data())) + if(!gGeoManager->SetAlignableEntry(symname.Data(),volpath.Data(),modUID)) AliFatal(Form("Alignable entry %s not created. Volume path %s not valid", symname.Data(),volpath.Data())); - TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntry(symname.Data()); - const char *path = alignableEntry->GetTitle(); - if (!gGeoManager->cd(path)) - AliFatal(Form("Volume path %s not valid!",path)); - TGeoHMatrix* globMatrix = gGeoManager->GetCurrentMatrix(); + TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntryByUID(modUID); + TGeoHMatrix* globMatrix = alignableEntry->GetGlobalOrig(); TGeoHMatrix* matTtoL = fTPCParam->Tracking2LocalMatrix(globMatrix,36+cnt-1); alignableEntry->SetMatrix(matTtoL); - modnum++; } for(Int_t cnt=1; cnt<=18; cnt++){ + modUID = AliGeomManager::LayerToVolUID(idTPC2,modnum++); volpath = vpstr2; volpath += cnt; volpath += vpappend; symname = snstr2; symname += cnt; symname += snappend; - if(!gGeoManager->SetAlignableEntry(symname.Data(),volpath.Data())) + if(!gGeoManager->SetAlignableEntry(symname.Data(),volpath.Data(),modUID)) AliFatal(Form("Alignable entry %s not created. Volume path %s not valid", symname.Data(),volpath.Data())); - TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntry(symname.Data()); - const char *path = alignableEntry->GetTitle(); - if (!gGeoManager->cd(path)) - AliFatal(Form("Volume path %s not valid!",path)); - TGeoHMatrix* globMatrix = gGeoManager->GetCurrentMatrix(); + TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntryByUID(modUID); + TGeoHMatrix* globMatrix = alignableEntry->GetGlobalOrig(); TGeoHMatrix* matTtoL = fTPCParam->Tracking2LocalMatrix(globMatrix,36+18+cnt-1); alignableEntry->SetMatrix(matTtoL); - modnum++; } } @@ -1144,13 +1134,14 @@ void AliTPCv2::Init() fIDrift=gMC->VolId("TPC_Drift"); fSecOld=-100; // fake number - gMC->SetMaxNStep(30000); // max. number of steps increased + gMC->SetMaxNStep(-30000); // max. number of steps increased if (fPrimaryIonisation) { gMC->Gstpar(idtmed[2],"PRIMIO_E", 20.77); // 1st ionisation potential gMC->Gstpar(idtmed[2],"PRIMIO_N", 14.35); gMC->Gstpar(idtmed[2],"LOSS", 14); // specific energy loss + gMC->Gstpar(idtmed[2],"STRA",4); } else { gMC->Gstpar(idtmed[2],"LOSS", 5); // specific energy loss } @@ -1335,7 +1326,6 @@ void AliTPCv2::StepManager() betaGamma = TMath::Max(betaGamma,(Float_t)7.e-3); // protection against too small bg pp=kprim*BetheBloch(betaGamma); - if(TMath::Abs(charge) > 1.) pp *= (charge*charge); } Double_t rnd = gMC->GetRandom()->Rndm();