From a1ec4d073607f1e7bad0e027746dad890100bcc6 Mon Sep 17 00:00:00 2001 From: hristov Date: Tue, 24 Apr 2007 11:30:01 +0000 Subject: [PATCH] Removed overlaps. Geometry as installed, i.e. the drift length in both direction slightly differs by 270 microns (Marek) --- EVE/Alieve/TPCSectorData.cxx | 2 +- HLT/TPCLib/AliHLTTPCTransform.cxx | 8 +++--- HLT/src/AliHLTTransform.cxx | 8 +++--- TPC/AliTPC.cxx | 4 +-- TPC/AliTPCFast.cxx | 6 ++--- TPC/AliTPCParam.cxx | 2 +- TPC/AliTPCParam.h | 2 +- TPC/AliTPCROC.h | 2 +- TPC/AliTPCclusterer.cxx | 2 +- TPC/AliTPCclustererMI.cxx | 6 ++--- TPC/AliTPCtrackerMI.cxx | 14 +++++------ TPC/AliTPCv0.cxx | 41 +++++++++++++++++++----------- TPC/AliTPCv1.cxx | 40 ++++++++++++++++++----------- TPC/AliTPCv2.cxx | 42 ++++++++++++++++++++----------- TPC/AliTPCv3.cxx | 40 ++++++++++++++++++----------- 15 files changed, 135 insertions(+), 84 deletions(-) diff --git a/EVE/Alieve/TPCSectorData.cxx b/EVE/Alieve/TPCSectorData.cxx index dc482ceffd1..98c6bca7425 100644 --- a/EVE/Alieve/TPCSectorData.cxx +++ b/EVE/Alieve/TPCSectorData.cxx @@ -44,7 +44,7 @@ void TPCSectorData::InitStatics() if(fgParam != 0) return; fgParam = new AliTPCParamSR; - fgZLength = fgParam->GetZLength(); + fgZLength = fgParam->GetZLength(0)+0.275; fgNAllRows = fgParam->GetNRowLow() + fgParam->GetNRowUp(); fgNAllPads = 0; fgRowBegs = new Int_t[fgNAllRows + 1]; diff --git a/HLT/TPCLib/AliHLTTPCTransform.cxx b/HLT/TPCLib/AliHLTTPCTransform.cxx index ef9215188df..5862917d7c3 100644 --- a/HLT/TPCLib/AliHLTTPCTransform.cxx +++ b/HLT/TPCLib/AliHLTTPCTransform.cxx @@ -978,7 +978,7 @@ Bool_t AliHLTTPCTransform::Init(AliRunLoader *runLoader) fgPadPitchWidthUp=param->GetOuterPadPitchWidth(); fgZWidth=param->GetZWidth(); fgZSigma=param->GetZSigma(); - fgZLength=param->GetZLength(); + fgZLength=param->GetZLength(0)+0.275; fgZOffset=param->GetZOffset(); fgDiffT=param->GetDiffT(); fgDiffL=param->GetDiffL(); @@ -1321,7 +1321,7 @@ Bool_t AliHLTTPCTransform::MakeInitFile(Char_t *rootfilename,Char_t *filename) fgPadPitchWidthUp=param->GetOuterPadPitchWidth(); fgZWidth=param->GetZWidth(); fgZSigma=param->GetZSigma(); - fgZLength=param->GetZLength(); + fgZLength=param->GetZLength(0)+0.275; fgZOffset=param->GetZOffset(); fgDiffT=param->GetDiffT(); fgDiffL=param->GetDiffL(); @@ -1669,9 +1669,9 @@ Double_t AliHLTTPCTransform::GetParSigmaZ2(Int_t padrow,Float_t z,Float_t tgl) Double_t drift; if(z > 0) - drift = AliHLTTPCTransform::GetZLength() - z; + drift = AliHLTTPCTransform::GetZLength()-0.275 - z; else - drift = AliHLTTPCTransform::GetZLength() + z; + drift = AliHLTTPCTransform::GetZLength()-0.302 + z; Double_t t1 = fgZSigma*fgZSigma; Double_t t2 = fgDiffL*fgDiffL*drift; diff --git a/HLT/src/AliHLTTransform.cxx b/HLT/src/AliHLTTransform.cxx index 2410085bbfb..e3626a2cc0a 100644 --- a/HLT/src/AliHLTTransform.cxx +++ b/HLT/src/AliHLTTransform.cxx @@ -799,7 +799,7 @@ Bool_t AliHLTTransform::Init(AliRunLoader *runLoader) fgPadPitchWidthUp=param->GetOuterPadPitchWidth(); fgZWidth=param->GetZWidth(); fgZSigma=param->GetZSigma(); - fgZLength=param->GetZLength(); + fgZLength=param->GetZLength(0)+0.275; fgZOffset=param->GetZOffset(); fgDiffT=param->GetDiffT(); fgDiffL=param->GetDiffL(); @@ -1142,7 +1142,7 @@ Bool_t AliHLTTransform::MakeInitFile(Char_t *rootfilename,Char_t *filename) fgPadPitchWidthUp=param->GetOuterPadPitchWidth(); fgZWidth=param->GetZWidth(); fgZSigma=param->GetZSigma(); - fgZLength=param->GetZLength(); + fgZLength=param->GetZLength(0); fgZOffset=param->GetZOffset(); fgDiffT=param->GetDiffT(); fgDiffL=param->GetDiffL(); @@ -1486,9 +1486,9 @@ Double_t AliHLTTransform::GetParSigmaZ2(Int_t padrow,Float_t z,Float_t tgl) Double_t drift; if(z > 0) - drift = AliHLTTransform::GetZLength() - z; + drift = AliHLTTransform::GetZLength()-0.275 - z; else - drift = AliHLTTransform::GetZLength() + z; + drift = AliHLTTransform::GetZLength()-0.302 + z; Double_t t1 = fgZSigma*fgZSigma; Double_t t2 = fgDiffL*fgDiffL*drift; diff --git a/TPC/AliTPC.cxx b/TPC/AliTPC.cxx index 231ecaedb57..dfa085ee22f 100644 --- a/TPC/AliTPC.cxx +++ b/TPC/AliTPC.cxx @@ -1818,7 +1818,7 @@ void AliTPC::MakeSector(Int_t isec,Int_t nrows,TTree *TH, } // Remove hits which arrive before the TPC opening gate signal - if(((fTPCParam->GetZLength()-TMath::Abs(tpcHit->Z())) + if(((fTPCParam->GetZLength(isec)-TMath::Abs(tpcHit->Z())) /fTPCParam->GetDriftV()+tpcHit->Time())GetGateDelay()) { tpcHit = (AliTPChit*) NextHit(); continue; @@ -1859,7 +1859,7 @@ void AliTPC::MakeSector(Int_t isec,Int_t nrows,TTree *TH, //--------------------------------------------------- - Float_t time = 1.e6*(fTPCParam->GetZLength()-TMath::Abs(tpcHit->Z())) + Float_t time = 1.e6*(fTPCParam->GetZLength(isec)-TMath::Abs(tpcHit->Z())) /fTPCParam->GetDriftV(); // in microseconds! Float_t attProb = fTPCParam->GetAttCoef()* diff --git a/TPC/AliTPCFast.cxx b/TPC/AliTPCFast.cxx index 7d800a98698..c4f3c09db3e 100644 --- a/TPC/AliTPCFast.cxx +++ b/TPC/AliTPCFast.cxx @@ -233,7 +233,7 @@ void AliTPCFast::Hits2Clusters(AliRunLoader* runLoader) const Float_t ymax=xprim*TMath::Tan(0.5*alpha); if (TMath::Abs(xyz[0])>ymax) xyz[0]=yprim; xyz[1]=gRandom->Gaus(tpcHit->Z(),TMath::Sqrt(sigmaZ)); // z - if (TMath::Abs(xyz[1])>param->GetZLength()) xyz[1]=tpcHit->Z(); + if (TMath::Abs(xyz[1])>param->GetZLength(isec)) xyz[1]=tpcHit->Z(); xyz[2]=sigmaRphi; // fSigmaY2 xyz[3]=sigmaZ; // fSigmaZ2 xyz[4]=tpcHit->fQ; // q @@ -523,8 +523,8 @@ void AliTPCFast::Hits2ExactClustersSector(AliRunLoader* runLoader, sigmay2 = TMath::Min(sigmay2,1.); // // - z = sign*(param->GetZLength() - z); - if (TMath::Abs(z)< param->GetZLength()-1){ + z = sign*(param->GetZLength(isec) - z); + if (TMath::Abs(z)< param->GetZLength(isec)-1){ AliTPCClustersRow * row = (clustersArray->GetRow(isec,lastrow)); if (row!=0) { AliTPCclusterMI* cl = new((AliTPCclusterMI*)row->Append()) AliTPCclusterMI ; diff --git a/TPC/AliTPCParam.cxx b/TPC/AliTPCParam.cxx index cedd07c377a..af21dcfed34 100644 --- a/TPC/AliTPCParam.cxx +++ b/TPC/AliTPCParam.cxx @@ -675,7 +675,7 @@ Bool_t AliTPCParam::ReadGeoMatrices(){ mirrorZ.SetAngles(90,0,90,90,180,0); fClusterMatrix[isec]->Multiply(&mirrorZ); } - TGeoTranslation trans(0,0,GetZLength()); + TGeoTranslation trans(0,0,GetZLength(isec)); fClusterMatrix[isec]->MultiplyLeft(&trans); fClusterMatrix[isec]->MultiplyLeft((GetGlobalMatrix(isec))); fClusterMatrix[isec]->MultiplyLeft(&(rotMatrix.Inverse())); diff --git a/TPC/AliTPCParam.h b/TPC/AliTPCParam.h index daac13e793e..ad851ea7b9f 100644 --- a/TPC/AliTPCParam.h +++ b/TPC/AliTPCParam.h @@ -219,7 +219,7 @@ public: Int_t GetNInnerSector() const {return fNInnerSector;} Int_t GetNOuterSector() const {return fNOuterSector;} Int_t GetNSector() const {return fNSector;} - Float_t GetZLength() const {return fZLength;} + Float_t GetZLength(Int_t sector) const {return (sector<35) ? fZLength-0.275 : fZLength-0.302;} Int_t GetGeometryType() const {return fGeometryType;} // diff --git a/TPC/AliTPCROC.h b/TPC/AliTPCROC.h index 042eafa9893..8ad315a7b04 100644 --- a/TPC/AliTPCROC.h +++ b/TPC/AliTPCROC.h @@ -47,7 +47,7 @@ class AliTPCROC : public TObject { UInt_t GetNInnerSector() const {return fNSectors[0];} UInt_t GetNOuterSector() const {return fNSectors[1];} UInt_t GetNSector() const {return fNSectorsAll;} - Float_t GetZLength() const {return fZLength;} + Float_t GetZLength(Int_t sector) const {return (sector<35) ? fZLength-0.275 : fZLength-0.302;} // // get pad row parameters // diff --git a/TPC/AliTPCclusterer.cxx b/TPC/AliTPCclusterer.cxx index f2e58152768..f9849ebe3c3 100644 --- a/TPC/AliTPCclusterer.cxx +++ b/TPC/AliTPCclusterer.cxx @@ -233,7 +233,7 @@ Int_t AliTPCclusterer::Digits2Clusters(TTree *dTree, TTree *cTree) { c.SetY((c.GetY() - 0.5 - 0.5*npads)*fPar->GetPadPitchWidth(sec)); c.SetZ(fPar->GetZWidth()*(c.GetZ()-1)); c.SetZ(c.GetZ() - 3.*fPar->GetZSigma()); // PASA delay - c.SetZ(sign*(fPar->GetZLength() - c.GetZ())); + c.SetZ(sign*(fPar->GetZLength(sec) - c.GetZ())); if (rx<230./250.*TMath::Abs(c.GetZ())) continue; diff --git a/TPC/AliTPCclustererMI.cxx b/TPC/AliTPCclustererMI.cxx index 779f9186b28..ed26f3c4052 100644 --- a/TPC/AliTPCclustererMI.cxx +++ b/TPC/AliTPCclustererMI.cxx @@ -202,7 +202,7 @@ Float_t AliTPCclustererMI::GetSigmaZ2(Int_t iz){ //sigma z2 = in digits - angle estimated supposing vertex constraint Float_t z = iz*fZWidth+fParam->GetNTBinsL1()*fParam->GetZWidth(); Float_t sd2 = (z*fParam->GetDiffL()*fParam->GetDiffL())/(fZWidth*fZWidth); - Float_t angular = fPadLength*(fParam->GetZLength()-z)/(fRx*fZWidth); + Float_t angular = fPadLength*(fParam->GetZLength(fSector)-z)/(fRx*fZWidth); angular*=angular; angular/=12.; Float_t sres = fParam->GetZSigma()/fZWidth; @@ -557,7 +557,7 @@ void AliTPCclustererMI::AddCluster(AliTPCclusterMI &c, Float_t * matrix, Int_t p } c.SetZ(fZWidth*(meanj-3)); c.SetZ(c.GetZ() - 3.*fParam->GetZSigma() + fParam->GetNTBinsL1()*fParam->GetZWidth()); // PASA delay + L1 delay - c.SetZ(fSign*(fParam->GetZLength() - c.GetZ())); + c.SetZ(fSign*(fParam->GetZLength(fSector) - c.GetZ())); c.SetX(fRx); c.SetDetector(fSector); c.SetRow(fRow); @@ -928,7 +928,7 @@ void AliTPCclustererMI::FindClusters(AliTPCCalROC * noiseROC) fNcluster=0; fLoop=1; Float_t *b=&fBins[-1]+2*fMaxTime; - Int_t crtime = Int_t((fParam->GetZLength()-fRecoParam->GetCtgRange()*fRx)/fZWidth-fParam->GetNTBinsL1()-5); + Int_t crtime = Int_t((fParam->GetZLength(fSector)-fRecoParam->GetCtgRange()*fRx)/fZWidth-fParam->GetNTBinsL1()-5); Float_t minMaxCutAbs = fRecoParam->GetMinMaxCutAbs(); Float_t minLeftRightCutAbs = fRecoParam->GetMinLeftRightCutAbs(); Float_t minUpDownCutAbs = fRecoParam->GetMinUpDownCutAbs(); diff --git a/TPC/AliTPCtrackerMI.cxx b/TPC/AliTPCtrackerMI.cxx index d62e100f2ab..0fff3dd37e9 100644 --- a/TPC/AliTPCtrackerMI.cxx +++ b/TPC/AliTPCtrackerMI.cxx @@ -687,7 +687,7 @@ Double_t AliTPCtrackerMI::ErrY2(AliTPCseed* seed, AliTPCclusterMI * cl){ return 1.; } Float_t snoise2; - Float_t z = TMath::Abs(fParam->GetZLength()-TMath::Abs(seed->GetZ())); + Float_t z = TMath::Abs(fParam->GetZLength(0)-TMath::Abs(seed->GetZ())); Int_t ctype = cl->GetType(); Float_t padlength= GetPadPitchLength(seed->GetRow()); Double_t angle2 = seed->GetSnp()*seed->GetSnp(); @@ -821,7 +821,7 @@ Double_t AliTPCtrackerMI::ErrZ2(AliTPCseed* seed, AliTPCclusterMI * cl){ return 1.; } Float_t snoise2; - Float_t z = TMath::Abs(fParam->GetZLength()-TMath::Abs(seed->GetZ())); + Float_t z = TMath::Abs(fParam->GetZLength(0)-TMath::Abs(seed->GetZ())); Int_t ctype = cl->GetType(); Float_t padlength= GetPadPitchLength(seed->GetRow()); // @@ -889,7 +889,7 @@ Double_t AliTPCtrackerMI::ErrZ2(AliTPCseed* seed, AliTPCclusterMI * cl){ //return 0.1; Float_t snoise2; - Float_t z = TMath::Abs(fParam->GetZLength()-TMath::Abs(seed->GetZ())); + Float_t z = TMath::Abs(fParam->GetZLength(0)-TMath::Abs(seed->GetZ())); // Float_t rsigmaz = cl->GetSigmaZ2()/(seed->fCurrentSigmaZ2); Int_t ctype = cl->GetType(); @@ -1517,7 +1517,7 @@ Int_t AliTPCtrackerMI::FollowToNext(AliTPCseed& t, Int_t nr) { } else { - if (TMath::Abs(z)<(AliTPCReconstructor::GetCtgRange()*x+10) && TMath::Abs(z)GetZLength() && (TMath::Abs(t.GetSnp())GetZLength(0) && (TMath::Abs(t.GetSnp())GetZLength()-TMath::Abs(seed->GetZ())))*fParam->GetDiffL()*fParam->GetDiffL(); + Float_t sd2 = TMath::Abs((fParam->GetZLength(0)-TMath::Abs(seed->GetZ())))*fParam->GetDiffL()*fParam->GetDiffL(); // Float_t padlength = fParam->GetPadPitchLength(seed->fSector); Float_t padlength = GetPadPitchLength(row); // @@ -6222,7 +6222,7 @@ Float_t AliTPCtrackerMI::GetSigmaY(AliTPCseed * seed) { // // - Float_t sd2 = TMath::Abs((fParam->GetZLength()-TMath::Abs(seed->GetZ())))*fParam->GetDiffL()*fParam->GetDiffL(); + Float_t sd2 = TMath::Abs((fParam->GetZLength(0)-TMath::Abs(seed->GetZ())))*fParam->GetDiffL()*fParam->GetDiffL(); Float_t padlength = fParam->GetPadPitchLength(seed->GetSector()); Float_t sres = (seed->GetSector() < fParam->GetNSector()/2) ? 0.2 :0.3; Float_t angular = seed->GetSnp(); @@ -6236,7 +6236,7 @@ Float_t AliTPCtrackerMI::GetSigmaZ(AliTPCseed * seed) { // // - Float_t sd2 = TMath::Abs((fParam->GetZLength()-TMath::Abs(seed->GetZ())))*fParam->GetDiffL()*fParam->GetDiffL(); + Float_t sd2 = TMath::Abs((fParam->GetZLength(0)-TMath::Abs(seed->GetZ())))*fParam->GetDiffL()*fParam->GetDiffL(); Float_t padlength = fParam->GetPadPitchLength(seed->GetSector()); Float_t sres = fParam->GetZSigma(); Float_t angular = seed->GetTgl(); diff --git a/TPC/AliTPCv0.cxx b/TPC/AliTPCv0.cxx index 686dd05a0d8..08d7c9c95ea 100644 --- a/TPC/AliTPCv0.cxx +++ b/TPC/AliTPCv0.cxx @@ -413,8 +413,8 @@ void AliTPCv0::CreateGeometry() // cd1v->AddNode(cd2v,1); cd2v->AddNode(cd3v,1); cflv->AddNode(cd1v,1); // - v1->AddNode(siv,1,new TGeoTranslation(0.,0.,-70.1)); - v1->AddNode(siv,2,new TGeoTranslation(0.,0.,70.1)); + v1->AddNode(siv,1,new TGeoTranslation(0.,0.,-69.9)); + v1->AddNode(siv,2,new TGeoTranslation(0.,0.,69.9)); v1->AddNode(sev,1); v1->AddNode(sev,2,ref); v1->AddNode(cflv,1); // // central membrane - 2 rings and a mylar membrane - assembly @@ -671,6 +671,9 @@ void AliTPCv0::CreateGeometry() // // now iroc and oroc are placed into a sector... // + TGeoVolumeAssembly *secta = new TGeoVolumeAssembly("TPC_SECT"); // a-side + TGeoVolumeAssembly *sectc = new TGeoVolumeAssembly("TPC_SECT"); // c-side + // TGeoVolumeAssembly *sect = new TGeoVolumeAssembly("TPC_SECT"); TGeoRotation rot1("rot1",90.,90.,0.); TGeoRotation rot2("rot2"); @@ -681,31 +684,41 @@ void AliTPCv0::CreateGeometry() Double_t x0,y0; x0=110.2*TMath::Cos(openingAngle); y0=110.2*TMath::Sin(openingAngle); - TGeoCombiTrans *combi1 = new TGeoCombiTrans("combi1",x0,y0,1.09,rot); + TGeoCombiTrans *combi1a = new TGeoCombiTrans("combi1",x0,y0,1.09+0.222,rot); //a-side + TGeoCombiTrans *combi1c = new TGeoCombiTrans("combi1",x0,y0,1.09+0.195,rot); //c-side x0=188.45*TMath::Cos(openingAngle); y0=188.45*TMath::Sin(openingAngle); - TGeoCombiTrans *combi2 = new TGeoCombiTrans("combi2",x0,y0,0.99,rot); + TGeoCombiTrans *combi2a = new TGeoCombiTrans("combi2",x0,y0,0.99+0.222,rot); //a-side + TGeoCombiTrans *combi2c = new TGeoCombiTrans("combi2",x0,y0,0.99+0.195,rot); //c-side + // + // A-side + // + secta->AddNode(ch,1); + secta->AddNode(iroc,1,combi1a); + secta->AddNode(oroc,1,combi2a); + // + // C-side // - sect->AddNode(ch,1); - sect->AddNode(iroc,1,combi1); - sect->AddNode(oroc,1,combi2); + sectc->AddNode(ch,1); + sectc->AddNode(iroc,1,combi1c); + sectc->AddNode(oroc,1,combi2c); // - // segment is ready... - // now I try to make a wheel... + // now I try to make wheels... // - TGeoVolumeAssembly *wheel = new TGeoVolumeAssembly("TPC_ENDCAP"); + TGeoVolumeAssembly *wheela = new TGeoVolumeAssembly("TPC_ENDCAP"); + TGeoVolumeAssembly *wheelc = new TGeoVolumeAssembly("TPC_ENDCAP"); // for(Int_t i =0;i<18;i++){ Double_t phi = (20.*i); TGeoRotation *r = new TGeoRotation(); r->RotateZ(phi); - wheel->AddNode(sect,i+1,r); - + wheela->AddNode(secta,i+1,r); + wheelc->AddNode(sectc,i+1,r); } // wheels in the drift volume! TGeoCombiTrans *combi3 = new TGeoCombiTrans("combi3",0.,0.,256.6,ref); - v9->AddNode(wheel,1,combi3); - v9->AddNode(wheel,2,new TGeoTranslation(0.,0.,-256.6)); + v9->AddNode(wheela,1,combi3); + v9->AddNode(wheelc,2,new TGeoTranslation(0.,0.,-256.6)); //_____________________________________________________________ // service support wheel //_____________________________________________________________ diff --git a/TPC/AliTPCv1.cxx b/TPC/AliTPCv1.cxx index 0209c58625a..42c386ca187 100644 --- a/TPC/AliTPCv1.cxx +++ b/TPC/AliTPCv1.cxx @@ -431,8 +431,8 @@ void AliTPCv1::CreateGeometry() // cd1v->AddNode(cd2v,1); cd2v->AddNode(cd3v,1); cflv->AddNode(cd1v,1); // - v1->AddNode(siv,1,new TGeoTranslation(0.,0.,-70.1)); - v1->AddNode(siv,2,new TGeoTranslation(0.,0.,70.1)); + v1->AddNode(siv,1,new TGeoTranslation(0.,0.,-69.9)); + v1->AddNode(siv,2,new TGeoTranslation(0.,0.,69.9)); v1->AddNode(sev,1); v1->AddNode(sev,2,ref); v1->AddNode(cflv,1); // // central membrane - 2 rings and a mylar membrane - assembly @@ -689,7 +689,8 @@ void AliTPCv1::CreateGeometry() // // now iroc and oroc are placed into a sector... // - TGeoVolumeAssembly *sect = new TGeoVolumeAssembly("TPC_SECT"); + TGeoVolumeAssembly *secta = new TGeoVolumeAssembly("TPC_SECT"); // a-side + TGeoVolumeAssembly *sectc = new TGeoVolumeAssembly("TPC_SECT"); // c-side TGeoRotation rot1("rot1",90.,90.,0.); TGeoRotation rot2("rot2"); rot2.RotateY(10.); @@ -699,31 +700,42 @@ void AliTPCv1::CreateGeometry() Double_t x0,y0; x0=110.2*TMath::Cos(openingAngle); y0=110.2*TMath::Sin(openingAngle); - TGeoCombiTrans *combi1 = new TGeoCombiTrans("combi1",x0,y0,1.09,rot); + TGeoCombiTrans *combi1a = new TGeoCombiTrans("combi1",x0,y0,1.09+0.222,rot); //a-side + TGeoCombiTrans *combi1c = new TGeoCombiTrans("combi1",x0,y0,1.09+0.195,rot); //c-side x0=188.45*TMath::Cos(openingAngle); y0=188.45*TMath::Sin(openingAngle); - TGeoCombiTrans *combi2 = new TGeoCombiTrans("combi2",x0,y0,0.99,rot); + TGeoCombiTrans *combi2a = new TGeoCombiTrans("combi2",x0,y0,0.99+0.222,rot); //a-side + TGeoCombiTrans *combi2c = new TGeoCombiTrans("combi2",x0,y0,0.99+0.195,rot); //c-side // - sect->AddNode(ch,1); - sect->AddNode(iroc,1,combi1); - sect->AddNode(oroc,1,combi2); + // A-side // - // segment is ready... - // now I try to make a wheel... + secta->AddNode(ch,1); + secta->AddNode(iroc,1,combi1a); + secta->AddNode(oroc,1,combi2a); // - TGeoVolumeAssembly *wheel = new TGeoVolumeAssembly("TPC_ENDCAP"); + // C-side + // + sectc->AddNode(ch,1); + sectc->AddNode(iroc,1,combi1c); + sectc->AddNode(oroc,1,combi2c); + // + // now I try to make wheels... + // + TGeoVolumeAssembly *wheela = new TGeoVolumeAssembly("TPC_ENDCAP"); + TGeoVolumeAssembly *wheelc = new TGeoVolumeAssembly("TPC_ENDCAP"); // for(Int_t i =0;i<18;i++){ Double_t phi = (20.*i); TGeoRotation *r = new TGeoRotation(); r->RotateZ(phi); - wheel->AddNode(sect,i+1,r); + wheela->AddNode(secta,i+1,r); + wheelc->AddNode(sectc,i+1,r); } // wheels in the drift volume! TGeoCombiTrans *combi3 = new TGeoCombiTrans("combi3",0.,0.,256.6,ref); - v9->AddNode(wheel,1,combi3); - v9->AddNode(wheel,2,new TGeoTranslation(0.,0.,-256.6)); + v9->AddNode(wheela,1,combi3); + v9->AddNode(wheelc,2,new TGeoTranslation(0.,0.,-256.6)); //_____________________________________________________________ // service support wheel diff --git a/TPC/AliTPCv2.cxx b/TPC/AliTPCv2.cxx index 0260d404dc5..6832f297d23 100644 --- a/TPC/AliTPCv2.cxx +++ b/TPC/AliTPCv2.cxx @@ -409,8 +409,8 @@ void AliTPCv2::CreateGeometry() // cd1v->AddNode(cd2v,1); cd2v->AddNode(cd3v,1); cflv->AddNode(cd1v,1); // - v1->AddNode(siv,1,new TGeoTranslation(0.,0.,-70.1)); - v1->AddNode(siv,2,new TGeoTranslation(0.,0.,70.1)); + v1->AddNode(siv,1,new TGeoTranslation(0.,0.,-69.9)); + v1->AddNode(siv,2,new TGeoTranslation(0.,0.,69.9)); v1->AddNode(sev,1); v1->AddNode(sev,2,ref); v1->AddNode(cflv,1); // // central membrane - 2 rings and a mylar membrane - assembly @@ -667,7 +667,8 @@ void AliTPCv2::CreateGeometry() // // now iroc and oroc are placed into a sector... // - TGeoVolumeAssembly *sect = new TGeoVolumeAssembly("TPC_SECT"); + TGeoVolumeAssembly *secta = new TGeoVolumeAssembly("TPC_SECT"); // a-side + TGeoVolumeAssembly *sectc = new TGeoVolumeAssembly("TPC_SECT"); // c-side TGeoRotation rot1("rot1",90.,90.,0.); TGeoRotation rot2("rot2"); rot2.RotateY(10.); @@ -677,31 +678,44 @@ void AliTPCv2::CreateGeometry() Double_t x0,y0; x0=110.2*TMath::Cos(openingAngle); y0=110.2*TMath::Sin(openingAngle); - TGeoCombiTrans *combi1 = new TGeoCombiTrans("combi1",x0,y0,1.09,rot); + TGeoCombiTrans *combi1a = new TGeoCombiTrans("combi1",x0,y0,1.09+0.222,rot); //a-side + TGeoCombiTrans *combi1c = new TGeoCombiTrans("combi1",x0,y0,1.09+0.195,rot); //c-side x0=188.45*TMath::Cos(openingAngle); y0=188.45*TMath::Sin(openingAngle); - TGeoCombiTrans *combi2 = new TGeoCombiTrans("combi2",x0,y0,0.99,rot); + TGeoCombiTrans *combi2a = new TGeoCombiTrans("combi2",x0,y0,0.99+0.222,rot); //a-side + TGeoCombiTrans *combi2c = new TGeoCombiTrans("combi2",x0,y0,0.99+0.195,rot); //c-side // - sect->AddNode(ch,1); - sect->AddNode(iroc,1,combi1); - sect->AddNode(oroc,1,combi2); // - // segment is ready... - // now I try to make a wheel... + // A-side // - TGeoVolumeAssembly *wheel = new TGeoVolumeAssembly("TPC_ENDCAP"); + secta->AddNode(ch,1); + secta->AddNode(iroc,1,combi1a); + secta->AddNode(oroc,1,combi2a); + // + // C-side + // + sectc->AddNode(ch,1); + sectc->AddNode(iroc,1,combi1c); + sectc->AddNode(oroc,1,combi2c); + // + // now I try to make wheels... + // + TGeoVolumeAssembly *wheela = new TGeoVolumeAssembly("TPC_ENDCAP"); + TGeoVolumeAssembly *wheelc = new TGeoVolumeAssembly("TPC_ENDCAP"); // for(Int_t i =0;i<18;i++){ Double_t phi = (20.*i); TGeoRotation *r = new TGeoRotation(); r->RotateZ(phi); - wheel->AddNode(sect,i+1,r); + wheela->AddNode(secta,i+1,r); + wheelc->AddNode(sectc,i+1,r); } // wheels in the drift volume! + TGeoCombiTrans *combi3 = new TGeoCombiTrans("combi3",0.,0.,256.6,ref); - v9->AddNode(wheel,1,combi3); - v9->AddNode(wheel,2,new TGeoTranslation(0.,0.,-256.6)); + v9->AddNode(wheela,1,combi3); + v9->AddNode(wheelc,2,new TGeoTranslation(0.,0.,-256.6)); //_____________________________________________________________ // service support wheel //_____________________________________________________________ diff --git a/TPC/AliTPCv3.cxx b/TPC/AliTPCv3.cxx index a6119da0fcb..147127d4c3d 100644 --- a/TPC/AliTPCv3.cxx +++ b/TPC/AliTPCv3.cxx @@ -434,8 +434,8 @@ void AliTPCv3::CreateGeometry() // cd1v->AddNode(cd2v,1); cd2v->AddNode(cd3v,1); cflv->AddNode(cd1v,1); // - v1->AddNode(siv,1,new TGeoTranslation(0.,0.,-70.1)); - v1->AddNode(siv,2,new TGeoTranslation(0.,0.,70.1)); + v1->AddNode(siv,1,new TGeoTranslation(0.,0.,-69.9)); + v1->AddNode(siv,2,new TGeoTranslation(0.,0.,69.9)); v1->AddNode(sev,1); v1->AddNode(sev,2,ref); v1->AddNode(cflv,1); // // central membrane - 2 rings and a mylar membrane - assembly @@ -692,7 +692,8 @@ void AliTPCv3::CreateGeometry() // // now iroc and oroc are placed into a sector... // - TGeoVolumeAssembly *sect = new TGeoVolumeAssembly("TPC_SECT"); + TGeoVolumeAssembly *secta = new TGeoVolumeAssembly("TPC_SECT"); // a-side + TGeoVolumeAssembly *sectc = new TGeoVolumeAssembly("TPC_SECT"); // c-side TGeoRotation rot1("rot1",90.,90.,0.); TGeoRotation rot2("rot2"); rot2.RotateY(10.); @@ -702,31 +703,42 @@ void AliTPCv3::CreateGeometry() Double_t x0,y0; x0=110.2*TMath::Cos(openingAngle); y0=110.2*TMath::Sin(openingAngle); - TGeoCombiTrans *combi1 = new TGeoCombiTrans("combi1",x0,y0,1.09,rot); + TGeoCombiTrans *combi1a = new TGeoCombiTrans("combi1",x0,y0,1.09+0.222,rot); //a-side + TGeoCombiTrans *combi1c = new TGeoCombiTrans("combi1",x0,y0,1.09+0.195,rot); //c-side x0=188.45*TMath::Cos(openingAngle); y0=188.45*TMath::Sin(openingAngle); - TGeoCombiTrans *combi2 = new TGeoCombiTrans("combi2",x0,y0,0.99,rot); + TGeoCombiTrans *combi2a = new TGeoCombiTrans("combi2",x0,y0,0.99+0.222,rot); //a-side + TGeoCombiTrans *combi2c = new TGeoCombiTrans("combi2",x0,y0,0.99+0.195,rot); //c-side // - sect->AddNode(ch,1); - sect->AddNode(iroc,1,combi1); - sect->AddNode(oroc,1,combi2); + // A-side // - // segment is ready... - // now I try to make a wheel... + secta->AddNode(ch,1); + secta->AddNode(iroc,1,combi1a); + secta->AddNode(oroc,1,combi2a); // - TGeoVolumeAssembly *wheel = new TGeoVolumeAssembly("TPC_ENDCAP"); + // C-side + // + sectc->AddNode(ch,1); + sectc->AddNode(iroc,1,combi1c); + sectc->AddNode(oroc,1,combi2c); + // + // now I try to make wheels... + // + TGeoVolumeAssembly *wheela = new TGeoVolumeAssembly("TPC_ENDCAP"); + TGeoVolumeAssembly *wheelc = new TGeoVolumeAssembly("TPC_ENDCAP"); // for(Int_t i =0;i<18;i++){ Double_t phi = (20.*i); TGeoRotation *r = new TGeoRotation(); r->RotateZ(phi); - wheel->AddNode(sect,i+1,r); + wheela->AddNode(secta,i+1,r); + wheelc->AddNode(sectc,i+1,r); } // wheels in the drift volume! TGeoCombiTrans *combi3 = new TGeoCombiTrans("combi3",0.,0.,256.6,ref); - v9->AddNode(wheel,1,combi3); - v9->AddNode(wheel,2,new TGeoTranslation(0.,0.,-256.6)); + v9->AddNode(wheela,1,combi3); + v9->AddNode(wheelc,2,new TGeoTranslation(0.,0.,-256.6)); //_____________________________________________________________ // service support wheel -- 2.43.0