X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TPC%2FAliTPCv2.cxx;h=edd27669b6feee6618fa7029dddaef84b1912892;hb=81affac3e00968a4fdfe476033555cf9f2a6dfc6;hp=1e8f1eeecbf5c0fea3c93c3160b980c0c870f2eb;hpb=24c46a8ee16b1f0fa397be24e9facdafe0fc507a;p=u%2Fmrichter%2FAliRoot.git diff --git a/TPC/AliTPCv2.cxx b/TPC/AliTPCv2.cxx index 1e8f1eeecbf..edd27669b6f 100644 --- a/TPC/AliTPCv2.cxx +++ b/TPC/AliTPCv2.cxx @@ -44,6 +44,7 @@ #include "TGeoVolume.h" #include "TGeoPcon.h" #include "TGeoTube.h" +#include "TGeoCone.h" #include "TGeoPgon.h" #include "TGeoTrd1.h" #include "TGeoCompositeShape.h" @@ -52,6 +53,8 @@ #include "TGeoHalfSpace.h" #include "TTreeStream.h" +using std::ifstream; +using std::ios_base; ClassImp(AliTPCv2) //_____________________________________________________________________________ @@ -117,8 +120,8 @@ void AliTPCv2::CreateGeometry() tpc->DefineSection(6,-259.6,68.1,278.); tpc->DefineSection(7,-253.6,68.1,278.); // - tpc->DefineSection(8,-253.6,68.,278.); - tpc->DefineSection(9,-74.0,60.8,278.); + tpc->DefineSection(8,-253.6,67.88,278.);//hs + tpc->DefineSection(9,-74.0,60.68,278.);// hs // tpc->DefineSection(10,-74.0,60.1,278.); tpc->DefineSection(11,-73.3,60.1,278.); @@ -135,8 +138,8 @@ void AliTPCv2::CreateGeometry() tpc->DefineSection(18,73.3,60.1,278.); tpc->DefineSection(19,74.0,60.1,278.); // - tpc->DefineSection(20,74.0,60.8,278.); - tpc->DefineSection(21,253.6,65.5,278.); + tpc->DefineSection(20,74.0,60.68,278.);// hs + tpc->DefineSection(21,253.6,65.38,278.);// hs // tpc->DefineSection(22,253.6,65.6,278.); tpc->DefineSection(23,259.6,65.6,278.); @@ -166,7 +169,7 @@ void AliTPCv2::CreateGeometry() dvol->DefineSection(4,253.6,74.5,264.4); dvol->DefineSection(5,260.,74.5,264.4); // - TGeoMedium *m5 = gGeoManager->GetMedium("TPC_Ne-CO2-2"); + TGeoMedium *m5 = gGeoManager->GetMedium("TPC_DriftGas2"); TGeoVolume *v9 = new TGeoVolume("TPC_Drift",dvol,m5); // v1->AddNode(v9,1); @@ -221,6 +224,9 @@ void AliTPCv2::CreateGeometry() TGeoVolume *tov3 = new TGeoVolume("TPC_OCV3",to3,sm3); TGeoVolume *tov4 = new TGeoVolume("TPC_OCV4",to4,sm4); TGeoVolume *togv5 = new TGeoVolume("TPC_OCVG5",tog5,sm1); + // + TGeoMedium *mhs = gGeoManager->GetMedium("TPC_Steel"); + TGeoMedium *m12 = gGeoManager->GetMedium("TPC_Water"); //------------------------------------------------------- // Tpc Outer Field Cage // daughters - composite (sandwich) @@ -338,6 +344,16 @@ void AliTPCv2::CreateGeometry() tcms->DefineSection(9,-71.3,56.9,58.8); // TGeoVolume *v7 = new TGeoVolume("TPC_ICVM",tcms,m3); + //------------------------------------------------ + // Heat screen muon side + //------------------------------------------------ + + TGeoCone *thsm = new TGeoCone(89.8,67.88,68.1,60.68,60.9); + TGeoCone *thsmw = new TGeoCone(89.8,67.94,68.04,60.74,60.84); + TGeoVolume *hvsm = new TGeoVolume("TPC_HSM",thsm,mhs); //steel + TGeoVolume *hvsmw = new TGeoVolume("TPC_HSMW",thsmw,m12); //water + // assembly heat screen muon + hvsm->AddNode(hvsmw,1); //----------------------------------------------- // inner containment vessel - shaft side //----------------------------------------------- @@ -359,6 +375,15 @@ void AliTPCv2::CreateGeometry() tcss->DefineSection(9,258.1,65.6,74.2); // TGeoVolume *v8 = new TGeoVolume("TPC_ICVS",tcss,m3); + //------------------------------------------------- + // Heat screen shaft side + //-------------------------------------------------- + TGeoCone *thss = new TGeoCone(89.8,60.68,60.9,65.38,65.6); + TGeoCone *thssw = new TGeoCone(89.8,60.74,60.84,65.44,65.54); + TGeoVolume *hvss = new TGeoVolume("TPC_HSS",thss,mhs); //steel + TGeoVolume *hvssw = new TGeoVolume("TPC_HSSW",thssw,m12); //water + //assembly heat screen shaft + hvss->AddNode(hvssw,1); //----------------------------------------------- // Inner field cage // define 4 parts and make an assembly @@ -508,6 +533,8 @@ void AliTPCv2::CreateGeometry() v5->AddNode(v6,1, new TGeoTranslation(0.,0.,-252.1)); v5->AddNode(v6,2, new TGeoTranslation(0.,0.,252.1)); v1->AddNode(v5,1); v1->AddNode(v7,1); v1->AddNode(v8,1); + v1->AddNode(hvsm,1,new TGeoTranslation(0.,0.,-163.8)); + v1->AddNode(hvss,1,new TGeoTranslation(0.,0.,163.8)); v9->AddNode(tv100,1); // // central drum @@ -1023,8 +1050,7 @@ void AliTPCv2::CreateGeometry() TGeoMedium *m6=gGeoManager->GetMedium("TPC_Makrolon"); TGeoMedium *m7=gGeoManager->GetMedium("TPC_Cu"); TGeoMedium *m10 = gGeoManager->GetMedium("TPC_Alumina"); - TGeoMedium *m11 = gGeoManager->GetMedium("TPC_Peek"); - TGeoMedium *m12 = gGeoManager->GetMedium("TPC_Water"); + TGeoMedium *m11 = gGeoManager->GetMedium("TPC_Peek");; TGeoMedium *m13 = gGeoManager->GetMedium("TPC_Brass"); // // tpc rod is an assembly of 10 long parts and 2 short parts @@ -1608,6 +1634,15 @@ void AliTPCv2::StepManager() id = gMC->CurrentVolID(copy); // vol ID and copy number (starts from 1!) if(id != fIDrift && id != fIdSens) return; // not in the sensitive folume + if ( fPrimaryIonisation && id == fIDrift ) { + Double_t rnd = gMC->GetRandom()->Rndm(); + gMC->SetMaxStep(0.2+(2.*rnd-1.)*0.05); // 2 mm +- rndm*0.5mm step + } + + //if ( fPrimaryIonisation && id == fIDrift && gMC->IsTrackEntering()) { + // gMC->SetMaxStep(0.2); // 2 mm + //} + gMC->TrackPosition(p); Double_t r = TMath::Sqrt(p[0]*p[0]+p[1]*p[1]); // @@ -1702,8 +1737,14 @@ void AliTPCv2::StepManager() nel = (Int_t)(((gMC->Edep())-kpoti)/kwIon) + 1; } else { - Float_t edep = gMC->Edep(); - if (edep > 0.) nel = (Int_t)((gMC->Edep()*1.5)/kwIon) + 1; + static Double_t deForNextStep = 0.; + // Geant4 (the meaning of Edep as in Geant3) - wrong + //nel = (Int_t)(((gMC->Edep())-kpoti)/kwIon) + 1; + + // Geant4 (the meaning of Edep as in Geant3) - NEW + Double_t eAvailable = gMC->Edep() + deForNextStep; + nel = (Int_t)(eAvailable/kwIon); + deForNextStep = eAvailable - nel*kwIon; } nel=TMath::Min(nel,300); // 300 electrons corresponds to 10 keV // @@ -1715,7 +1756,8 @@ void AliTPCv2::StepManager() // Add this hit - if (fHitType&&2){ + // if (fHitType&&2){ + if(fHitType){ gMC->TrackMomentum(p); Float_t momentum = TMath::Sqrt(p[0]*p[0]+p[1]*p[1]); Float_t precision = (momentum>0.1) ? 0.002 :0.01;