From f0a02c915e8d7990eea4a4cf27580640799a6bb5 Mon Sep 17 00:00:00 2001 From: s6maclim Date: Fri, 19 Apr 2019 16:48:39 +0200 Subject: [PATCH 01/11] displacement issue --- charmdet/PixelModules.cxx | 13 ++++--------- charmdet/PixelModules.h | 6 +++--- geometry/charm-geometry_config.py | 9 +++++---- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/charmdet/PixelModules.cxx b/charmdet/PixelModules.cxx index 817405519b..074226d502 100644 --- a/charmdet/PixelModules.cxx +++ b/charmdet/PixelModules.cxx @@ -143,11 +143,6 @@ void PixelModules::SetSiliconStationAngles(Int_t nstation, Double_t anglex, Doub zangle[nstation] = anglez; } -void PixelModules::SetSiliconDetNumber(Int_t nSilicon) -{ - nSi = nSilicon; -} - @@ -181,7 +176,7 @@ void PixelModules::ConstructGeometry() //computing the largest offsets in order to set PixelBox dimensions correctly Double_t offsetxmax = 0., offsetymax = 0.; - for (int istation = 0; istation < 12; istation++){ + for (int istation = 0; istation < nSi; istation++){ if (TMath::Abs(xs[istation]) > offsetxmax) offsetxmax = TMath::Abs(xs[istation]); if (TMath::Abs(ys[istation]) > offsetymax) offsetymax = TMath::Abs(ys[istation]); } @@ -203,11 +198,11 @@ void PixelModules::ConstructGeometry() AddSensitiveVolume(volPixelx); //id convention: 1{a}{b}, a = number of pair (from 1 to 6), b = element of the pair (1 or 2) - Int_t PixelIDlist[12] = {111,112,121,122,131,132,141,142,151,152,161,162}; + Int_t PixelIDlist[nSi] = {111,112,121,122,131,132,141,142,151,1520,1521,1522,1523,1524,1525,1526,1527,1528,1529,161,162}; //Alternated pixel stations optimized for y and x measurements - Bool_t vertical[12] = {kTRUE,kTRUE,kFALSE,kFALSE,kTRUE,kTRUE,kFALSE,kFALSE,kTRUE,kTRUE,kFALSE,kFALSE}; + Bool_t vertical[nSi] = {kTRUE,kTRUE,kFALSE,kFALSE,kTRUE,kTRUE,kFALSE,kFALSE,kTRUE,kTRUE,kTRUE,kTRUE,kTRUE,kTRUE,kTRUE,kTRUE,kTRUE,kTRUE,kTRUE,kFALSE,kFALSE}; - for (int ipixel = 0; ipixel < 12; ipixel++){ + for (int ipixel = 0; ipixel < nSi; ipixel++){ if (vertical[ipixel]) volPixelBox->AddNode(volPixely, PixelIDlist[ipixel], new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); //compensation for the Node offset else volPixelBox->AddNode(volPixelx, PixelIDlist[ipixel], new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); } diff --git a/charmdet/PixelModules.h b/charmdet/PixelModules.h index ce087f7906..627f26be1c 100644 --- a/charmdet/PixelModules.h +++ b/charmdet/PixelModules.h @@ -115,11 +115,11 @@ class PixelModules:public FairDetector Double_t overlap; Double_t DimZPixelBox; - Int_t nSi; + static const Int_t nSi=21; Double_t DimZSi; - Double_t xs[12], ys[12], zs[12]; - Double_t xangle[12], yangle[12], zangle[12]; + Double_t xs[nSi], ys[nSi], zs[nSi]; + Double_t xangle[nSi], yangle[nSi], zangle[nSi]; PixelModules(const PixelModules&); PixelModules& operator=(const PixelModules&); diff --git a/geometry/charm-geometry_config.py b/geometry/charm-geometry_config.py index 8f53bde8cc..6e7490301b 100644 --- a/geometry/charm-geometry_config.py +++ b/geometry/charm-geometry_config.py @@ -326,7 +326,7 @@ c.Spectrometer.D1Long = 4 * u.cm; c.Spectrometer.SX = c.Spectrometer.DX c.Spectrometer.SY = c.Spectrometer.DY - c.PixelModules.DimZSi = 0.0200 * u.cm + c.PixelModules.DimZSi = 0.00200 * u.cm c.PixelModules.D1short = 3.36 * u.cm / 2. c.PixelModules.D1long = 4 * u.cm @@ -375,9 +375,10 @@ c.PixelModules.ySi.append(-0.0030432) c.PixelModules.zSi.append(10.462) #Module 9 - c.PixelModules.xSi.append(-0.209171) - c.PixelModules.ySi.append(0.002488) - c.PixelModules.zSi.append(11.17) + for i in range(-5,5): + c.PixelModules.xSi.append(-0.209171) + c.PixelModules.ySi.append(0.002488) + c.PixelModules.zSi.append(11.17+i*c.PixelModules.DimZSi) #Module 10 c.PixelModules.xSi.append(0.694199) c.PixelModules.ySi.append(0.850237) From a999c1f1b26786218c895561598f6f3c84aa1f2a Mon Sep 17 00:00:00 2001 From: s6maclim Date: Mon, 22 Apr 2019 16:24:33 +0200 Subject: [PATCH 02/11] dw --- charmdet/PixelModules.cxx | 52 ++++++++++++-- charmdet/PixelModules.h | 9 +-- geometry/charm-geometry_config.py | 113 +++++++++++++++++------------- python/charmDet_conf.py | 2 + 4 files changed, 116 insertions(+), 60 deletions(-) diff --git a/charmdet/PixelModules.cxx b/charmdet/PixelModules.cxx index 074226d502..dbe45674db 100644 --- a/charmdet/PixelModules.cxx +++ b/charmdet/PixelModules.cxx @@ -143,9 +143,14 @@ void PixelModules::SetSiliconStationAngles(Int_t nstation, Double_t anglex, Doub zangle[nstation] = anglez; } +void PixelModules::SetSiliconSlicesNumber(Int_t nSl) +{ +nSlices=nSl; +} - - +void PixelModules::ComputeDimZSlice(){ +DimZSlice=DimZSi/nSlices; +} // @@ -187,20 +192,55 @@ void PixelModules::ConstructGeometry() top->AddNode(volPixelBox, 1, new TGeoTranslation(0,0,zBoxPosition+ inimodZoffset)); //volume moved in - TGeoBBox *Pixely = new TGeoBBox("Pixely", Dim1Short/2, Dim1Long/2, DimZSi/2); //long along y + TGeoBBox *Pixely = new TGeoBBox("Pixely", Dim1Short/2, Dim1Long/2, DimZSlice/2); //long along y TGeoVolume *volPixely = new TGeoVolume("volPixely",Pixely,Silicon); volPixely->SetLineColor(kBlue-5); AddSensitiveVolume(volPixely); - TGeoBBox *Pixelx = new TGeoBBox("Pixelx", (Dim1Long)/2, (Dim1Short)/2, DimZSi/2); //long along x + TGeoBBox *Pixelx = new TGeoBBox("Pixelx", (Dim1Long)/2, (Dim1Short)/2, DimZSlice/2); //long along x TGeoVolume *volPixelx = new TGeoVolume("volPixelx",Pixelx,Silicon); volPixelx->SetLineColor(kBlue-5); AddSensitiveVolume(volPixelx); //id convention: 1{a}{b}, a = number of pair (from 1 to 6), b = element of the pair (1 or 2) - Int_t PixelIDlist[nSi] = {111,112,121,122,131,132,141,142,151,1520,1521,1522,1523,1524,1525,1526,1527,1528,1529,161,162}; + int chi=0; + Int_t PixelIDlist[nSi]; + for(int i=1110;i<1130;i++){ + PixelIDlist[chi]=i; + chi++; + } + + for(int i=1210;i<1230;i++){ + PixelIDlist[chi]=i; + chi++; + } + + for(int i=1310;i<1330;i++){ + PixelIDlist[chi]=i; + chi++; + } + for(int i=1410;i<1430;i++){ + PixelIDlist[chi]=i; + chi++; + } + for(int i=1510;i<1530;i++){ + PixelIDlist[chi]=i; + chi++; + } + for(int i=1610;i<1630;i++){ + PixelIDlist[chi]=i; + chi++; + } //Alternated pixel stations optimized for y and x measurements - Bool_t vertical[nSi] = {kTRUE,kTRUE,kFALSE,kFALSE,kTRUE,kTRUE,kFALSE,kFALSE,kTRUE,kTRUE,kTRUE,kTRUE,kTRUE,kTRUE,kTRUE,kTRUE,kTRUE,kTRUE,kTRUE,kFALSE,kFALSE}; + Bool_t vertical[nSi]; + for(int i=0;iAddNode(volPixely, PixelIDlist[ipixel], new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); //compensation for the Node offset diff --git a/charmdet/PixelModules.h b/charmdet/PixelModules.h index 627f26be1c..ceb8b9f862 100644 --- a/charmdet/PixelModules.h +++ b/charmdet/PixelModules.h @@ -29,7 +29,8 @@ class PixelModules:public FairDetector void SetSiliconStationPositions(Int_t nstation, Double_t posx, Double_t posy, Double_t posz); void SetSiliconStationAngles(Int_t nstation, Double_t anglex, Double_t angley, Double_t anglez); void SetSiliconDetNumber(Int_t nSilicon); - + void SetSiliconSlicesNumber(Int_t nSl); + void ComputeDimZSlice(); /** Initialization of the detector is done here */ virtual void Initialize(); @@ -85,6 +86,7 @@ class PixelModules:public FairDetector Double32_t fTime; //! time Double32_t fLength; //! length Double32_t fELoss; //! energy loss + Int_t nSlices; /** container for data points */ TClonesArray* fPixelModulesPointCollection; @@ -97,7 +99,6 @@ class PixelModules:public FairDetector Double_t Dim1Short, Dim1Long; - Double_t SBoxX = 0; Double_t SBoxY = 0; Double_t SBoxZ = 0; @@ -115,9 +116,9 @@ class PixelModules:public FairDetector Double_t overlap; Double_t DimZPixelBox; - static const Int_t nSi=21; + static const Int_t nSi=120; Double_t DimZSi; - + Double_t DimZSlice; Double_t xs[nSi], ys[nSi], zs[nSi]; Double_t xangle[nSi], yangle[nSi], zangle[nSi]; diff --git a/geometry/charm-geometry_config.py b/geometry/charm-geometry_config.py index 6e7490301b..6c8ef0565e 100644 --- a/geometry/charm-geometry_config.py +++ b/geometry/charm-geometry_config.py @@ -326,67 +326,80 @@ c.Spectrometer.D1Long = 4 * u.cm; c.Spectrometer.SX = c.Spectrometer.DX c.Spectrometer.SY = c.Spectrometer.DY - c.PixelModules.DimZSi = 0.00200 * u.cm + c.PixelModules.DimZSi = 0.0200 * u.cm + c.PixelModules.nSlice= 10 c.PixelModules.D1short = 3.36 * u.cm / 2. c.PixelModules.D1long = 4 * u.cm - + #position of module centres units are cm. Geometry is given with reference to the centre of all modules for the xy plane and the front of the pixel box for the z axis, precision is given to the micron range - #module position naming: "axis"Si"Telescope number" + #module position naming: "axis"Si"Module number" #measured values c.PixelModules.xSi = [] c.PixelModules.ySi = [] c.PixelModules.zSi = [] - #Module 0 - c.PixelModules.xSi.append(1.53912) - c.PixelModules.ySi.append(-0.002332) - c.PixelModules.zSi.append(-0.13) - #Module 1 - c.PixelModules.xSi.append(-0.229076) - c.PixelModules.ySi.append(0.005328) - c.PixelModules.zSi.append(0.52) - #Module 2 - c.PixelModules.xSi.append(0.704924) - c.PixelModules.ySi.append(0.808437) - c.PixelModules.zSi.append(2.412) - #Module 3 - c.PixelModules.xSi.append(0.705433) - c.PixelModules.ySi.append(-0.879224) - c.PixelModules.zSi.append(3.09) - #Module 4 (Didn't work) - c.PixelModules.xSi.append(1.54963) - c.PixelModules.ySi.append(-0.003912) - c.PixelModules.zSi.append(5.17) - #Module 5 - c.PixelModules.xSi.append(-0.221577) - c.PixelModules.ySi.append(-0.023944) - c.PixelModules.zSi.append(5.79) - #Module 6 - c.PixelModules.xSi.append(0.690749) - c.PixelModules.ySi.append(0.769728) - c.PixelModules.zSi.append(7.77) - #Module 7 - c.PixelModules.xSi.append(0.702302) - c.PixelModules.ySi.append(-0.874356) - c.PixelModules.zSi.append(8.46) - #Module 8 - c.PixelModules.xSi.append(1.58271) - c.PixelModules.ySi.append(-0.0030432) - c.PixelModules.zSi.append(10.462) - #Module 9 - for i in range(-5,5): + #Module 0 + for i in range(10): + c.PixelModules.xSi.append(1.53912) + c.PixelModules.ySi.append(-0.002332) + #c.PixelModules.zSi.append(-0.13+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + c.PixelModules.zSi.append(-0.13+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + #Module 1 + for i in range(10): + c.PixelModules.xSi.append(-0.229076) + c.PixelModules.ySi.append(0.005328) + c.PixelModules.zSi.append(0.52+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + #Module 2 + for i in range(10): + c.PixelModules.xSi.append(0.704924) + c.PixelModules.ySi.append(0.808437) + c.PixelModules.zSi.append(2.412+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + #Module 3 + for i in range(10): + c.PixelModules.xSi.append(0.705433) + c.PixelModules.ySi.append(-0.879224) + c.PixelModules.zSi.append(3.09+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + #Module 4 (Didn't work) + for i in range(10): + c.PixelModules.xSi.append(1.54963) + c.PixelModules.ySi.append(-0.003912) + c.PixelModules.zSi.append(5.17+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + #Module 5 + for i in range(10): + c.PixelModules.xSi.append(-0.221577) + c.PixelModules.ySi.append(-0.023944) + c.PixelModules.zSi.append(5.79+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + #Module 6 + for i in range(10): + c.PixelModules.xSi.append(0.690749) + c.PixelModules.ySi.append(0.769728) + c.PixelModules.zSi.append(7.77+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + #Module 7 + for i in range(10): + c.PixelModules.xSi.append(0.702302) + c.PixelModules.ySi.append(-0.874356) + c.PixelModules.zSi.append(8.46+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + #Module 8 + for i in range(10): + c.PixelModules.xSi.append(1.58271) + c.PixelModules.ySi.append(-0.0030432) + c.PixelModules.zSi.append(10.462+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + #Module 9 + for i in range(10): c.PixelModules.xSi.append(-0.209171) c.PixelModules.ySi.append(0.002488) - c.PixelModules.zSi.append(11.17+i*c.PixelModules.DimZSi) - #Module 10 - c.PixelModules.xSi.append(0.694199) - c.PixelModules.ySi.append(0.850237) - c.PixelModules.zSi.append(13.162) - #Module 11 - c.PixelModules.xSi.append(0.683245) - c.PixelModules.ySi.append(-0.79636) - c.PixelModules.zSi.append(13.85) + c.PixelModules.zSi.append(11.16+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + #Module 10 + for i in range(10): + c.PixelModules.xSi.append(0.694199) + c.PixelModules.ySi.append(0.850237) + c.PixelModules.zSi.append(13.162+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + #Module 11 + for i in range(10): + c.PixelModules.xSi.append(0.683245) + c.PixelModules.ySi.append(-0.79636) + c.PixelModules.zSi.append(13.85+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #SciFi Modules c.SciFi = AttrDict(z = 0*u.cm) diff --git a/python/charmDet_conf.py b/python/charmDet_conf.py index 286f985446..47fb48a4de 100644 --- a/python/charmDet_conf.py +++ b/python/charmDet_conf.py @@ -55,6 +55,8 @@ def configure(run,ship_geo,Gfield=''): PixelModules = ROOT.PixelModules("PixelModules",ship_geo.PixelModules.DX, ship_geo.PixelModules.DY, ship_geo.PixelModules.DZ,ROOT.kTRUE) PixelModules.SetBoxParam(ship_geo.PixelModules.DX,ship_geo.PixelModules.DY,ship_geo.PixelModules.DZ, ship_geo.PixelModules.zBox, ship_geo.PixelModules.DimZpixelbox, ship_geo.PixelModules.D1short, ship_geo.PixelModules.D1long) PixelModules.SetSiliconDZ(ship_geo.PixelModules.DimZSi) + PixelModules.SetSiliconSlicesNumber(ship_geo.PixelModules.nSlice) + PixelModules.ComputeDimZSlice() # === SciFi modules detectorList.append(SciFi) # === Pixel modules From 5b714ef4580e8b2183e129ba0aba067c86279f99 Mon Sep 17 00:00:00 2001 From: matclim Date: Mon, 29 Apr 2019 11:49:21 +0200 Subject: [PATCH 03/11] working at last root -l pythia8_evtgen_Geant4_1000_0.5.root --- charmdet/PixelModules.cxx | 2 ++ charmdet/PixelModules.h | 1 + geometry/charm-geometry_config.py | 5 +++-- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/charmdet/PixelModules.cxx b/charmdet/PixelModules.cxx index dbe45674db..b717bddee5 100644 --- a/charmdet/PixelModules.cxx +++ b/charmdet/PixelModules.cxx @@ -49,6 +49,7 @@ using namespace ShipUnit; PixelModules::PixelModules() : FairDetector("HighPrecisionTrackers",kTRUE, kPixelModules), + numSi(nSi), fTrackID(-1), fPdgCode(), fVolumeID(-1), @@ -63,6 +64,7 @@ PixelModules::PixelModules() PixelModules::PixelModules(const char* name, const Double_t DX, const Double_t DY, const Double_t DZ, Bool_t Active,const char* Title) : FairDetector(name, Active, kPixelModules), + numSi(nSi), fTrackID(-1), fPdgCode(), fVolumeID(-1), diff --git a/charmdet/PixelModules.h b/charmdet/PixelModules.h index ceb8b9f862..18ba4230f2 100644 --- a/charmdet/PixelModules.h +++ b/charmdet/PixelModules.h @@ -117,6 +117,7 @@ class PixelModules:public FairDetector Double_t DimZPixelBox; static const Int_t nSi=120; + Int_t numSi; Double_t DimZSi; Double_t DimZSlice; Double_t xs[nSi], ys[nSi], zs[nSi]; diff --git a/geometry/charm-geometry_config.py b/geometry/charm-geometry_config.py index 6c8ef0565e..4b40cf158e 100644 --- a/geometry/charm-geometry_config.py +++ b/geometry/charm-geometry_config.py @@ -330,6 +330,7 @@ c.PixelModules.nSlice= 10 c.PixelModules.D1short = 3.36 * u.cm / 2. c.PixelModules.D1long = 4 * u.cm + c.PixelModules.numSi=12*c.PixelModules.nSlice #position of module centres units are cm. Geometry is given with reference to the centre of all modules for the xy plane and the front of the pixel box for the z axis, precision is given to the micron range @@ -464,9 +465,9 @@ #c.Scintillator.DistT2 = 135.25*u.cm c.Scintillator.DistT2 = 136.26*u.cm - c.Spectrometer.SZ = c.Spectrometer.DZ*2 + c.PixelModules.zSi[11] - c.PixelModules.zSi[0] + c.PixelModules.DimZSi + 80 *u.cm + 4.5*u.m #4.5 m is the Goliath length + c.Spectrometer.SZ = c.Spectrometer.DZ*2 + c.PixelModules.zSi[c.PixelModules.numSi-1] - c.PixelModules.zSi[0] + c.PixelModules.DimZSi + 80 *u.cm + 4.5*u.m #4.5 m is the Goliath length - c.PixelModules.DimZpixelbox = c.PixelModules.zSi[11] - c.PixelModules.zSi[0] + c.PixelModules.DimZSi + c.PixelModules.DimZpixelbox = c.PixelModules.zSi[c.PixelModules.numSi-1] - c.PixelModules.zSi[0] + c.PixelModules.DimZSi PixeltoGoliath = 30.45 *u.cm #25.45 + 5cm different goliath dz c.Spectrometer.zBox = 350.75 - c.Spectrometer.TS/2 - PixeltoGoliath - c.PixelModules.DimZpixelbox/2. From 79a76d09ba80ba2a406de9f75374f97782180c0c Mon Sep 17 00:00:00 2001 From: matclim Date: Mon, 29 Apr 2019 12:08:33 +0200 Subject: [PATCH 04/11] Modules sliced successfully --- geometry/charm-geometry_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/geometry/charm-geometry_config.py b/geometry/charm-geometry_config.py index 4b40cf158e..3f4509938c 100644 --- a/geometry/charm-geometry_config.py +++ b/geometry/charm-geometry_config.py @@ -330,7 +330,7 @@ c.PixelModules.nSlice= 10 c.PixelModules.D1short = 3.36 * u.cm / 2. c.PixelModules.D1long = 4 * u.cm - c.PixelModules.numSi=12*c.PixelModules.nSlice + c.PixelModules.numSi=12*c.PixelModules.nSlice #is identical to nSi in the class, can't reuse nSi because no non-static arrays size #position of module centres units are cm. Geometry is given with reference to the centre of all modules for the xy plane and the front of the pixel box for the z axis, precision is given to the micron range From 78b038580f115586f2078021f8864f61b06327d2 Mon Sep 17 00:00:00 2001 From: matclim Date: Tue, 30 Apr 2019 16:13:07 +0200 Subject: [PATCH 05/11] sliced the modules --- geometry/charm-geometry_config.py | 35 +++++++++++++++---------------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/geometry/charm-geometry_config.py b/geometry/charm-geometry_config.py index 3f4509938c..f736bfa17e 100644 --- a/geometry/charm-geometry_config.py +++ b/geometry/charm-geometry_config.py @@ -341,63 +341,62 @@ c.PixelModules.ySi = [] c.PixelModules.zSi = [] #Module 0 - for i in range(10): + for i in range(-9,1): c.PixelModules.xSi.append(1.53912) c.PixelModules.ySi.append(-0.002332) - #c.PixelModules.zSi.append(-0.13+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) c.PixelModules.zSi.append(-0.13+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 1 - for i in range(10): + for i in range(-9,1): c.PixelModules.xSi.append(-0.229076) c.PixelModules.ySi.append(0.005328) c.PixelModules.zSi.append(0.52+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 2 - for i in range(10): + for i in range(-9,1): c.PixelModules.xSi.append(0.704924) c.PixelModules.ySi.append(0.808437) c.PixelModules.zSi.append(2.412+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 3 - for i in range(10): + for i in range(-9,1): c.PixelModules.xSi.append(0.705433) c.PixelModules.ySi.append(-0.879224) c.PixelModules.zSi.append(3.09+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 4 (Didn't work) - for i in range(10): + for i in range(-9,1): c.PixelModules.xSi.append(1.54963) c.PixelModules.ySi.append(-0.003912) c.PixelModules.zSi.append(5.17+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 5 - for i in range(10): + for i in range(-9,1): c.PixelModules.xSi.append(-0.221577) c.PixelModules.ySi.append(-0.023944) c.PixelModules.zSi.append(5.79+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 6 - for i in range(10): + for i in range(-9,1): c.PixelModules.xSi.append(0.690749) c.PixelModules.ySi.append(0.769728) c.PixelModules.zSi.append(7.77+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 7 - for i in range(10): + for i in range(-9,1): c.PixelModules.xSi.append(0.702302) c.PixelModules.ySi.append(-0.874356) c.PixelModules.zSi.append(8.46+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 8 - for i in range(10): + for i in range(-9,1): c.PixelModules.xSi.append(1.58271) c.PixelModules.ySi.append(-0.0030432) c.PixelModules.zSi.append(10.462+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 9 - for i in range(10): - c.PixelModules.xSi.append(-0.209171) - c.PixelModules.ySi.append(0.002488) - c.PixelModules.zSi.append(11.16+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + for i in range(-9,1): + c.PixelModules.xSi.append(-0.209171) + c.PixelModules.ySi.append(0.002488) + c.PixelModules.zSi.append(11.16+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 10 - for i in range(10): + for i in range(-9,1): c.PixelModules.xSi.append(0.694199) c.PixelModules.ySi.append(0.850237) c.PixelModules.zSi.append(13.162+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 11 - for i in range(10): + for i in range(-9,1): c.PixelModules.xSi.append(0.683245) c.PixelModules.ySi.append(-0.79636) c.PixelModules.zSi.append(13.85+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) @@ -465,9 +464,9 @@ #c.Scintillator.DistT2 = 135.25*u.cm c.Scintillator.DistT2 = 136.26*u.cm - c.Spectrometer.SZ = c.Spectrometer.DZ*2 + c.PixelModules.zSi[c.PixelModules.numSi-1] - c.PixelModules.zSi[0] + c.PixelModules.DimZSi + 80 *u.cm + 4.5*u.m #4.5 m is the Goliath length + c.Spectrometer.SZ = c.Spectrometer.DZ*2 + c.PixelModules.zSi[c.PixelModules.nSlice-1] - c.PixelModules.zSi[9] + c.PixelModules.DimZSi + 80 *u.cm + 4.5*u.m #4.5 m is the Goliath length - c.PixelModules.DimZpixelbox = c.PixelModules.zSi[c.PixelModules.numSi-1] - c.PixelModules.zSi[0] + c.PixelModules.DimZSi + c.PixelModules.DimZpixelbox = c.PixelModules.zSi[c.PixelModules.numSi-1] - c.PixelModules.zSi[c.PixelModules.nSlice-1] + c.PixelModules.DimZSi PixeltoGoliath = 30.45 *u.cm #25.45 + 5cm different goliath dz c.Spectrometer.zBox = 350.75 - c.Spectrometer.TS/2 - PixeltoGoliath - c.PixelModules.DimZpixelbox/2. From 4dfa5082209fa026247127f623efa35ab46042cf Mon Sep 17 00:00:00 2001 From: s6maclim Date: Tue, 7 May 2019 15:56:27 +0200 Subject: [PATCH 06/11] still looking --- charmdet/PixelModules.cxx | 3 +-- charmdet/PixelModules.h | 2 +- geometry/charm-geometry_config.py | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/charmdet/PixelModules.cxx b/charmdet/PixelModules.cxx index b717bddee5..f67a35636c 100644 --- a/charmdet/PixelModules.cxx +++ b/charmdet/PixelModules.cxx @@ -187,7 +187,6 @@ void PixelModules::ConstructGeometry() if (TMath::Abs(xs[istation]) > offsetxmax) offsetxmax = TMath::Abs(xs[istation]); if (TMath::Abs(ys[istation]) > offsetymax) offsetymax = TMath::Abs(ys[istation]); } - //Double_t DimZPixelBox = zs5 -zs0 +pairwisedistance + DimZSi; TGeoBBox *PixelBox = new TGeoBBox("PixelBox", Dim1Long/2 + offsetxmax, Dim1Long/2 + offsetymax, DimZPixelBox/2.); //The box is symmetric, offsets are not. So we enlarge the offset by a factor two for coverage TGeoVolume *volPixelBox = new TGeoVolume("volPixelBox",PixelBox,air); Double_t inimodZoffset(zs[0]) ;//initial Z offset of Pixel Module 0 so as to avoid volume extrusion @@ -204,7 +203,7 @@ void PixelModules::ConstructGeometry() volPixelx->SetLineColor(kBlue-5); AddSensitiveVolume(volPixelx); - //id convention: 1{a}{b}, a = number of pair (from 1 to 6), b = element of the pair (1 or 2) + //id convention: 1{a}{b}{c}, a = number of pair (from 1 to 6), b = element of the pair (1 or 2) int chi=0; Int_t PixelIDlist[nSi]; for(int i=1110;i<1130;i++){ diff --git a/charmdet/PixelModules.h b/charmdet/PixelModules.h index 18ba4230f2..c8557e99ee 100644 --- a/charmdet/PixelModules.h +++ b/charmdet/PixelModules.h @@ -113,7 +113,7 @@ class PixelModules:public FairDetector Double_t DimZ = 0; Double_t zSizeMS = 0; //dimension of the Magnetic PixelModules volume - Double_t overlap; + Double_t overlap=0; Double_t DimZPixelBox; static const Int_t nSi=120; diff --git a/geometry/charm-geometry_config.py b/geometry/charm-geometry_config.py index f736bfa17e..cb5a43613b 100644 --- a/geometry/charm-geometry_config.py +++ b/geometry/charm-geometry_config.py @@ -464,7 +464,7 @@ #c.Scintillator.DistT2 = 135.25*u.cm c.Scintillator.DistT2 = 136.26*u.cm - c.Spectrometer.SZ = c.Spectrometer.DZ*2 + c.PixelModules.zSi[c.PixelModules.nSlice-1] - c.PixelModules.zSi[9] + c.PixelModules.DimZSi + 80 *u.cm + 4.5*u.m #4.5 m is the Goliath length + c.Spectrometer.SZ = c.Spectrometer.DZ*2 + c.PixelModules.zSi[c.PixelModules.numSi-1] - c.PixelModules.zSi[c.PixelModules.nSlice-1] + c.PixelModules.DimZSi + 80 *u.cm + 4.5*u.m #4.5 m is the Goliath length c.PixelModules.DimZpixelbox = c.PixelModules.zSi[c.PixelModules.numSi-1] - c.PixelModules.zSi[c.PixelModules.nSlice-1] + c.PixelModules.DimZSi From 203cc7c6080578c1eaf8d67858fc634bb3292f0b Mon Sep 17 00:00:00 2001 From: s6maclim Date: Wed, 8 May 2019 15:45:54 +0200 Subject: [PATCH 07/11] Pixel Modules rework ongoing, safety push --- charmdet/PixelModules.cxx | 76 ++++++++++++++++++++++++++----- charmdet/PixelModules.h | 9 +++- geometry/charm-geometry_config.py | 26 +++++------ 3 files changed, 84 insertions(+), 27 deletions(-) diff --git a/charmdet/PixelModules.cxx b/charmdet/PixelModules.cxx index f67a35636c..ffcba82148 100644 --- a/charmdet/PixelModules.cxx +++ b/charmdet/PixelModules.cxx @@ -125,9 +125,10 @@ void PixelModules::SetBoxParam(Double_t SX, Double_t SY, Double_t SZ, Double_t z Dim1Long = D1long; } -void PixelModules::SetSiliconDZ(Double_t SiliconDZ) +void PixelModules::SetSiliconDZ(Double_t SiliconDZthin,Double_t SiliconDZthick) { - DimZSi = SiliconDZ; + DimZSithin = SiliconDZthin; + DimZSithick= SliconDZthick } @@ -167,6 +168,9 @@ void PixelModules::ConstructGeometry() InitMedium("silicon"); TGeoMedium *Silicon = gGeoManager->GetMedium("silicon"); + InitMedium("aluminium"); + TGeoMedium *Aluminium = gGeoManager->GetMedium("aluminium"); + InitMedium("CoilCopper"); TGeoMedium *Cu = gGeoManager->GetMedium("CoilCopper"); @@ -193,15 +197,44 @@ void PixelModules::ConstructGeometry() top->AddNode(volPixelBox, 1, new TGeoTranslation(0,0,zBoxPosition+ inimodZoffset)); //volume moved in - TGeoBBox *Pixely = new TGeoBBox("Pixely", Dim1Short/2, Dim1Long/2, DimZSlice/2); //long along y - TGeoVolume *volPixely = new TGeoVolume("volPixely",Pixely,Silicon); + TGeoBBox *Pixelythin = new TGeoBBox("Pixelythin", Dim1Short/2, Dim1Long/2, DimZThinSlice/2); //long along y + TGeoVolume *volPixelythin = new TGeoVolume("volPixelythin",Pixelythin,Silicon); volPixely->SetLineColor(kBlue-5); - AddSensitiveVolume(volPixely); + AddSensitiveVolume(volPixelythin); - TGeoBBox *Pixelx = new TGeoBBox("Pixelx", (Dim1Long)/2, (Dim1Short)/2, DimZSlice/2); //long along x - TGeoVolume *volPixelx = new TGeoVolume("volPixelx",Pixelx,Silicon); + TGeoBBox *Pixelxthin = new TGeoBBox("Pixelx", (Dim1Long)/2, (Dim1Short)/2, DimZThinSlice/2); //long along x + TGeoVolume *volPixelxthin = new TGeoVolume("volPixelxthin",Pixelxthin,Silicon); volPixelx->SetLineColor(kBlue-5); - AddSensitiveVolume(volPixelx); + AddSensitiveVolume(volPixelxthin); + + TGeoBBox *Pixelythick = new TGeoBBox("Pixelythick", Dim1Short/2, Dim1Long/2, DimZThinSlice/2); //long along y + TGeoVolume *volPixelythick = new TGeoVolume("volPixelythick",Pixelythick,Silicon); + volPixely->SetLineColor(kBlue-5); + AddSensitiveVolume(volPixelythick); + + TGeoBBox *Pixelxthick = new TGeoBBox("Pixelx", (Dim1Long)/2, (Dim1Short)/2, DimZThinSlice/2); //long along x + TGeoVolume *volPixelxthick = new TGeoVolume("volPixelxthick",Pixelxthick,Silicon); + volPixelx->SetLineColor(kBlue-5); + AddSensitiveVolume(volPixelxthick); + + ///////////////////////////////////////////////////////Passive material/////////////////////////////////////////////////////// + + TGeoBBox *WindowBox = new TGeoBBox("WindowBox",Windowx/2, Windowy/2,DimZWindow/2); + TGeoVolume *volWindow = new TGeoVolume("volWindow",WindowBox,Al); + volWindow->SetLineColor(kGray); + //AddSensitiveVolume(volWindow); + + TGeoBBox *PixelFramesx = new TGeoBBox("PixelFramesx",Dim1Short/2,Dim1Long/2, DimZAlu/2); + TGeoVolume *volAluFramex = new TGeoVolume("volAluFramex",PixelFramesx,Aluminium); + volAluFramex->SetLineColor(kGray); + // AddSensitiveVolume(volAluFramex); + + TGeoBBox *PixelFramesy = new TGeoBBox("PixelFramesy",Dim1Short/2,Dim1Long/2, DimZAlu/2); + TGeoVolume *volAluFramey = new TGeoVolume("volAluFramey",PixelFramesy,Aluminium); + volAluFramey->SetLineColor(kGray); + //AddSensitiveVolume(volAluFramey); + +////////////////////////////////////////////////////////End passive material//////////////////////////////////////////////////////////////// //id convention: 1{a}{b}{c}, a = number of pair (from 1 to 6), b = element of the pair (1 or 2) int chi=0; @@ -242,14 +275,33 @@ void PixelModules::ConstructGeometry() vertical[i*40+j]=kTRUE; } } + volWindow->AddNode(0,0,new TGeoTranslation(0,0,-DimZPixelBox/2.-inimodZoffset)); for (int ipixel = 0; ipixel < nSi; ipixel++){ - if (vertical[ipixel]) volPixelBox->AddNode(volPixely, PixelIDlist[ipixel], new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); //compensation for the Node offset - else volPixelBox->AddNode(volPixelx, PixelIDlist[ipixel], new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); - } - + if (vertical[ipixel]){ + if(PixelIDlist[ipixel]) { + if(PixelIDlist[ipixel]<1130 || (PixelIDlist[ipixel]>1219 && PixelIDlist[ipixel]<1620)) volPixelBox->AddNode(volPixelythick, PixelIDlist[ipixel], new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); //compensation for the Node offset + else volPixelBox->AddNode(volPixelythin, PixelIDlist[ipixel], new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); //compensation for the Node offset + else volPixelBox->AddNode(volPixely, 9000, new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); //else here used for debugging, if the number of slices isn't 10 + + if((ipixel+nSlices)%9==1) volAluFramex->AddNode(volAluFramex, 0,new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset+DimZSlice)); + } + else{ + if(PixelIDlist[ipixel]) + if(PixelIDlist[ipixel]<1130 || (PixelIDlist[ipixel]>1219 && PixelIDlist[ipixel]<1620))volPixelBox->AddNode(volPixelxthick, PixelIDlist[ipixel], new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); + else volPixelBox->AddNode(volPixelxthin, PixelIDlist[ipixel], new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); + + else volPixelBox->AddNode(volPixelx, 9000, new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); //debugging else for if nSlice!=10 + + + if((ipixel+nSlices)%9==1)volAluFramey->AddNode(volAluFramey, 0,new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset+DimZSlice)); + } + + } } + + Bool_t PixelModules::ProcessHits(FairVolume* vol) { /** This method is called from the MC stepping */ diff --git a/charmdet/PixelModules.h b/charmdet/PixelModules.h index c8557e99ee..d2d8c19695 100644 --- a/charmdet/PixelModules.h +++ b/charmdet/PixelModules.h @@ -25,7 +25,7 @@ class PixelModules:public FairDetector void ConstructGeometry(); void SetZsize(const Double_t MSsize); void SetBoxParam(Double_t SX, Double_t SY, Double_t SZ, Double_t zBox,Double_t SZPixel, Double_t Dim1Short, Double_t Dim1Long); - void SetSiliconDZ(Double_t SiliconDZ); + void SetSiliconDZ(Double_t SiliconDZthin, Double_t SiliconDZthick); void SetSiliconStationPositions(Int_t nstation, Double_t posx, Double_t posy, Double_t posz); void SetSiliconStationAngles(Int_t nstation, Double_t anglex, Double_t angley, Double_t anglez); void SetSiliconDetNumber(Int_t nSilicon); @@ -110,8 +110,13 @@ class PixelModules:public FairDetector Double_t DimX =0; Double_t DimY =0; - Double_t DimZ = 0; + Double_t DimZthin = 0; + Double_t DimZthick = 0; Double_t zSizeMS = 0; //dimension of the Magnetic PixelModules volume + Double_t DimZAlu= 0.6; //thickness of the aluminium modules + Double_t DimZWindow=0.005; + Double_t Windowx=5; + Double_t Windowy=5;//estimation has to be measured Double_t overlap=0; Double_t DimZPixelBox; diff --git a/geometry/charm-geometry_config.py b/geometry/charm-geometry_config.py index cb5a43613b..92f6214d07 100644 --- a/geometry/charm-geometry_config.py +++ b/geometry/charm-geometry_config.py @@ -341,62 +341,62 @@ c.PixelModules.ySi = [] c.PixelModules.zSi = [] #Module 0 - for i in range(-9,1): + for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(1.53912) c.PixelModules.ySi.append(-0.002332) c.PixelModules.zSi.append(-0.13+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 1 - for i in range(-9,1): + for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(-0.229076) c.PixelModules.ySi.append(0.005328) c.PixelModules.zSi.append(0.52+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 2 - for i in range(-9,1): + for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(0.704924) c.PixelModules.ySi.append(0.808437) c.PixelModules.zSi.append(2.412+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 3 - for i in range(-9,1): + for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(0.705433) c.PixelModules.ySi.append(-0.879224) c.PixelModules.zSi.append(3.09+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) - #Module 4 (Didn't work) - for i in range(-9,1): + #Module 4 (Didn't take data) + for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(1.54963) c.PixelModules.ySi.append(-0.003912) c.PixelModules.zSi.append(5.17+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 5 - for i in range(-9,1): + for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(-0.221577) c.PixelModules.ySi.append(-0.023944) c.PixelModules.zSi.append(5.79+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 6 - for i in range(-9,1): + for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(0.690749) c.PixelModules.ySi.append(0.769728) c.PixelModules.zSi.append(7.77+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 7 - for i in range(-9,1): + for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(0.702302) c.PixelModules.ySi.append(-0.874356) c.PixelModules.zSi.append(8.46+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 8 - for i in range(-9,1): + for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(1.58271) c.PixelModules.ySi.append(-0.0030432) c.PixelModules.zSi.append(10.462+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 9 - for i in range(-9,1): + for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(-0.209171) c.PixelModules.ySi.append(0.002488) c.PixelModules.zSi.append(11.16+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 10 - for i in range(-9,1): + for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(0.694199) c.PixelModules.ySi.append(0.850237) c.PixelModules.zSi.append(13.162+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) #Module 11 - for i in range(-9,1): + for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(0.683245) c.PixelModules.ySi.append(-0.79636) c.PixelModules.zSi.append(13.85+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) From e169d899c018ebedcd3e28fd6258a9060c41ae87 Mon Sep 17 00:00:00 2001 From: s6maclim Date: Wed, 8 May 2019 16:42:04 +0200 Subject: [PATCH 08/11] another safety commit, working but gap too large ? --- charmdet/PixelModules.cxx | 26 ++++++++++++++------------ charmdet/PixelModules.h | 9 +++++---- geometry/charm-geometry_config.py | 31 ++++++++++++++++--------------- macro/run_simScript.py | 2 +- python/charmDet_conf.py | 2 +- 5 files changed, 37 insertions(+), 33 deletions(-) diff --git a/charmdet/PixelModules.cxx b/charmdet/PixelModules.cxx index ffcba82148..a09c94c794 100644 --- a/charmdet/PixelModules.cxx +++ b/charmdet/PixelModules.cxx @@ -128,7 +128,7 @@ void PixelModules::SetBoxParam(Double_t SX, Double_t SY, Double_t SZ, Double_t z void PixelModules::SetSiliconDZ(Double_t SiliconDZthin,Double_t SiliconDZthick) { DimZSithin = SiliconDZthin; - DimZSithick= SliconDZthick + DimZSithick= SiliconDZthick; } @@ -152,7 +152,8 @@ nSlices=nSl; } void PixelModules::ComputeDimZSlice(){ -DimZSlice=DimZSi/nSlices; +DimZThinSlice=DimZSithin/nSlices; +DimZThickSlice=DimZSithick/nSlices; } @@ -199,22 +200,22 @@ void PixelModules::ConstructGeometry() TGeoBBox *Pixelythin = new TGeoBBox("Pixelythin", Dim1Short/2, Dim1Long/2, DimZThinSlice/2); //long along y TGeoVolume *volPixelythin = new TGeoVolume("volPixelythin",Pixelythin,Silicon); - volPixely->SetLineColor(kBlue-5); + volPixelythin->SetLineColor(kBlue-5); AddSensitiveVolume(volPixelythin); TGeoBBox *Pixelxthin = new TGeoBBox("Pixelx", (Dim1Long)/2, (Dim1Short)/2, DimZThinSlice/2); //long along x TGeoVolume *volPixelxthin = new TGeoVolume("volPixelxthin",Pixelxthin,Silicon); - volPixelx->SetLineColor(kBlue-5); + volPixelxthin->SetLineColor(kBlue-5); AddSensitiveVolume(volPixelxthin); - TGeoBBox *Pixelythick = new TGeoBBox("Pixelythick", Dim1Short/2, Dim1Long/2, DimZThinSlice/2); //long along y + TGeoBBox *Pixelythick = new TGeoBBox("Pixelythick", Dim1Short/2, Dim1Long/2, DimZThickSlice/2); //long along y TGeoVolume *volPixelythick = new TGeoVolume("volPixelythick",Pixelythick,Silicon); - volPixely->SetLineColor(kBlue-5); + volPixelythick->SetLineColor(kBlue-5); AddSensitiveVolume(volPixelythick); - TGeoBBox *Pixelxthick = new TGeoBBox("Pixelx", (Dim1Long)/2, (Dim1Short)/2, DimZThinSlice/2); //long along x + TGeoBBox *Pixelxthick = new TGeoBBox("Pixelx", (Dim1Long)/2, (Dim1Short)/2, DimZThickSlice/2); //long along x TGeoVolume *volPixelxthick = new TGeoVolume("volPixelxthick",Pixelxthick,Silicon); - volPixelx->SetLineColor(kBlue-5); + volPixelxthick->SetLineColor(kBlue-5); AddSensitiveVolume(volPixelxthick); ///////////////////////////////////////////////////////Passive material/////////////////////////////////////////////////////// @@ -282,19 +283,20 @@ void PixelModules::ConstructGeometry() if(PixelIDlist[ipixel]) { if(PixelIDlist[ipixel]<1130 || (PixelIDlist[ipixel]>1219 && PixelIDlist[ipixel]<1620)) volPixelBox->AddNode(volPixelythick, PixelIDlist[ipixel], new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); //compensation for the Node offset else volPixelBox->AddNode(volPixelythin, PixelIDlist[ipixel], new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); //compensation for the Node offset - else volPixelBox->AddNode(volPixely, 9000, new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); //else here used for debugging, if the number of slices isn't 10 + } + else volPixelBox->AddNode(volPixelythick, 9000, new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); //else here used for debugging, if the number of slices isn't 10 - if((ipixel+nSlices)%9==1) volAluFramex->AddNode(volAluFramex, 0,new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset+DimZSlice)); + if((ipixel+nSlices)%9==1) volAluFramex->AddNode(volAluFramex, 0,new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset+DimZThickSlice)); } else{ if(PixelIDlist[ipixel]) if(PixelIDlist[ipixel]<1130 || (PixelIDlist[ipixel]>1219 && PixelIDlist[ipixel]<1620))volPixelBox->AddNode(volPixelxthick, PixelIDlist[ipixel], new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); else volPixelBox->AddNode(volPixelxthin, PixelIDlist[ipixel], new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); - else volPixelBox->AddNode(volPixelx, 9000, new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); //debugging else for if nSlice!=10 + else volPixelBox->AddNode(volPixelxthick, 9000, new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); //debugging else for if nSlice!=10 - if((ipixel+nSlices)%9==1)volAluFramey->AddNode(volAluFramey, 0,new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset+DimZSlice)); + if((ipixel+nSlices)%9==1)volAluFramey->AddNode(volAluFramey, 0,new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset+DimZThickSlice)); } } diff --git a/charmdet/PixelModules.h b/charmdet/PixelModules.h index d2d8c19695..373596e173 100644 --- a/charmdet/PixelModules.h +++ b/charmdet/PixelModules.h @@ -110,8 +110,7 @@ class PixelModules:public FairDetector Double_t DimX =0; Double_t DimY =0; - Double_t DimZthin = 0; - Double_t DimZthick = 0; + Double_t DimZ = 0; Double_t zSizeMS = 0; //dimension of the Magnetic PixelModules volume Double_t DimZAlu= 0.6; //thickness of the aluminium modules Double_t DimZWindow=0.005; @@ -123,8 +122,10 @@ class PixelModules:public FairDetector static const Int_t nSi=120; Int_t numSi; - Double_t DimZSi; - Double_t DimZSlice; + Double_t DimZSithin; + Double_t DimZSithick; + Double_t DimZThinSlice; + Double_t DimZThickSlice; Double_t xs[nSi], ys[nSi], zs[nSi]; Double_t xangle[nSi], yangle[nSi], zangle[nSi]; diff --git a/geometry/charm-geometry_config.py b/geometry/charm-geometry_config.py index 92f6214d07..7a02659ce4 100644 --- a/geometry/charm-geometry_config.py +++ b/geometry/charm-geometry_config.py @@ -326,7 +326,8 @@ c.Spectrometer.D1Long = 4 * u.cm; c.Spectrometer.SX = c.Spectrometer.DX c.Spectrometer.SY = c.Spectrometer.DY - c.PixelModules.DimZSi = 0.0200 * u.cm + c.PixelModules.DimZSithin = 0.0200 * u.cm + c.PixelModules.DimZSithick = 0.0245 * u.cm c.PixelModules.nSlice= 10 c.PixelModules.D1short = 3.36 * u.cm / 2. c.PixelModules.D1long = 4 * u.cm @@ -344,62 +345,62 @@ for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(1.53912) c.PixelModules.ySi.append(-0.002332) - c.PixelModules.zSi.append(-0.13+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + c.PixelModules.zSi.append(-0.13+i*c.PixelModules.DimZSithick/c.PixelModules.nSlice) #Module 1 for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(-0.229076) c.PixelModules.ySi.append(0.005328) - c.PixelModules.zSi.append(0.52+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + c.PixelModules.zSi.append(0.52+i*c.PixelModules.DimZSithick/c.PixelModules.nSlice) #Module 2 for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(0.704924) c.PixelModules.ySi.append(0.808437) - c.PixelModules.zSi.append(2.412+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + c.PixelModules.zSi.append(2.412+i*c.PixelModules.DimZSithin/c.PixelModules.nSlice) #Module 3 for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(0.705433) c.PixelModules.ySi.append(-0.879224) - c.PixelModules.zSi.append(3.09+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + c.PixelModules.zSi.append(3.09+i*c.PixelModules.DimZSithick/c.PixelModules.nSlice) #Module 4 (Didn't take data) for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(1.54963) c.PixelModules.ySi.append(-0.003912) - c.PixelModules.zSi.append(5.17+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + c.PixelModules.zSi.append(5.17+i*c.PixelModules.DimZSithick/c.PixelModules.nSlice) #Module 5 for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(-0.221577) c.PixelModules.ySi.append(-0.023944) - c.PixelModules.zSi.append(5.79+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + c.PixelModules.zSi.append(5.79+i*c.PixelModules.DimZSithick/c.PixelModules.nSlice) #Module 6 for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(0.690749) c.PixelModules.ySi.append(0.769728) - c.PixelModules.zSi.append(7.77+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + c.PixelModules.zSi.append(7.77+i*c.PixelModules.DimZSithick/c.PixelModules.nSlice) #Module 7 for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(0.702302) c.PixelModules.ySi.append(-0.874356) - c.PixelModules.zSi.append(8.46+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + c.PixelModules.zSi.append(8.46+i*c.PixelModules.DimZSithick/c.PixelModules.nSlice) #Module 8 for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(1.58271) c.PixelModules.ySi.append(-0.0030432) - c.PixelModules.zSi.append(10.462+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + c.PixelModules.zSi.append(10.462+i*c.PixelModules.DimZSithick/c.PixelModules.nSlice) #Module 9 for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(-0.209171) c.PixelModules.ySi.append(0.002488) - c.PixelModules.zSi.append(11.16+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + c.PixelModules.zSi.append(11.16+i*c.PixelModules.DimZSithick/c.PixelModules.nSlice) #Module 10 for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(0.694199) c.PixelModules.ySi.append(0.850237) - c.PixelModules.zSi.append(13.162+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + c.PixelModules.zSi.append(13.162+i*c.PixelModules.DimZSithick/c.PixelModules.nSlice) #Module 11 for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(0.683245) c.PixelModules.ySi.append(-0.79636) - c.PixelModules.zSi.append(13.85+i*c.PixelModules.DimZSi/c.PixelModules.nSlice) + c.PixelModules.zSi.append(13.85+i*c.PixelModules.DimZSithin/c.PixelModules.nSlice) #SciFi Modules c.SciFi = AttrDict(z = 0*u.cm) @@ -464,9 +465,9 @@ #c.Scintillator.DistT2 = 135.25*u.cm c.Scintillator.DistT2 = 136.26*u.cm - c.Spectrometer.SZ = c.Spectrometer.DZ*2 + c.PixelModules.zSi[c.PixelModules.numSi-1] - c.PixelModules.zSi[c.PixelModules.nSlice-1] + c.PixelModules.DimZSi + 80 *u.cm + 4.5*u.m #4.5 m is the Goliath length + c.Spectrometer.SZ = c.Spectrometer.DZ*2 + c.PixelModules.zSi[c.PixelModules.numSi-1] - c.PixelModules.zSi[c.PixelModules.nSlice-1] + c.PixelModules.DimZSithick + 80 *u.cm + 4.5*u.m #4.5 m is the Goliath length - c.PixelModules.DimZpixelbox = c.PixelModules.zSi[c.PixelModules.numSi-1] - c.PixelModules.zSi[c.PixelModules.nSlice-1] + c.PixelModules.DimZSi + c.PixelModules.DimZpixelbox = c.PixelModules.zSi[c.PixelModules.numSi-1] - c.PixelModules.zSi[c.PixelModules.nSlice-1] + c.PixelModules.DimZSithick PixeltoGoliath = 30.45 *u.cm #25.45 + 5cm different goliath dz c.Spectrometer.zBox = 350.75 - c.Spectrometer.TS/2 - PixeltoGoliath - c.PixelModules.DimZpixelbox/2. diff --git a/macro/run_simScript.py b/macro/run_simScript.py index ef8306b76d..216aa1c12c 100755 --- a/macro/run_simScript.py +++ b/macro/run_simScript.py @@ -41,7 +41,7 @@ RPVSUSYbench = 2 eventDisplay = False -inputFile = "/eos/experiment/ship/data/Charm/Cascade-parp16-MSTP82-1-MSEL4-978Bpot.root" +inputFile = "/cephfs/user/s6maclim/CharmCascade/Cascade-parp16-MSTP82-1-MSEL4-978Bpot.root" defaultInputFile = True outputDir = "." diff --git a/python/charmDet_conf.py b/python/charmDet_conf.py index 47fb48a4de..70f5e79fdf 100644 --- a/python/charmDet_conf.py +++ b/python/charmDet_conf.py @@ -54,7 +54,7 @@ def configure(run,ship_geo,Gfield=''): # === Pixel modules PixelModules = ROOT.PixelModules("PixelModules",ship_geo.PixelModules.DX, ship_geo.PixelModules.DY, ship_geo.PixelModules.DZ,ROOT.kTRUE) PixelModules.SetBoxParam(ship_geo.PixelModules.DX,ship_geo.PixelModules.DY,ship_geo.PixelModules.DZ, ship_geo.PixelModules.zBox, ship_geo.PixelModules.DimZpixelbox, ship_geo.PixelModules.D1short, ship_geo.PixelModules.D1long) - PixelModules.SetSiliconDZ(ship_geo.PixelModules.DimZSi) + PixelModules.SetSiliconDZ(ship_geo.PixelModules.DimZSithin, ship_geo.PixelModules.DimZSithick) PixelModules.SetSiliconSlicesNumber(ship_geo.PixelModules.nSlice) PixelModules.ComputeDimZSlice() # === SciFi modules From 09b042f1b326b47c1a2ffcddb537f45c5df36278 Mon Sep 17 00:00:00 2001 From: s6maclim Date: Wed, 8 May 2019 18:11:30 +0200 Subject: [PATCH 09/11] Works --- charmdet/PixelModules.cxx | 2 +- geometry/charm-geometry_config.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/charmdet/PixelModules.cxx b/charmdet/PixelModules.cxx index a09c94c794..929df78e0c 100644 --- a/charmdet/PixelModules.cxx +++ b/charmdet/PixelModules.cxx @@ -194,7 +194,7 @@ void PixelModules::ConstructGeometry() } TGeoBBox *PixelBox = new TGeoBBox("PixelBox", Dim1Long/2 + offsetxmax, Dim1Long/2 + offsetymax, DimZPixelBox/2.); //The box is symmetric, offsets are not. So we enlarge the offset by a factor two for coverage TGeoVolume *volPixelBox = new TGeoVolume("volPixelBox",PixelBox,air); - Double_t inimodZoffset(zs[0]) ;//initial Z offset of Pixel Module 0 so as to avoid volume extrusion + Double_t inimodZoffset(zs[0]-DimZSithick) ;//initial Z offset of Pixel Module 0 so as to avoid volume extrusion top->AddNode(volPixelBox, 1, new TGeoTranslation(0,0,zBoxPosition+ inimodZoffset)); //volume moved in diff --git a/geometry/charm-geometry_config.py b/geometry/charm-geometry_config.py index 7a02659ce4..d8eac700eb 100644 --- a/geometry/charm-geometry_config.py +++ b/geometry/charm-geometry_config.py @@ -390,7 +390,7 @@ for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(-0.209171) c.PixelModules.ySi.append(0.002488) - c.PixelModules.zSi.append(11.16+i*c.PixelModules.DimZSithick/c.PixelModules.nSlice) + c.PixelModules.zSi.append(11.17+i*c.PixelModules.DimZSithick/c.PixelModules.nSlice) #Module 10 for i in range(1-c.PixelModules.nSlice,1): c.PixelModules.xSi.append(0.694199) From 1278906fede40ba50c587541ce92bd3a5b5853db Mon Sep 17 00:00:00 2001 From: s6maclim Date: Wed, 8 May 2019 18:17:18 +0200 Subject: [PATCH 10/11] It really works --- geometry/charm-geometry_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/geometry/charm-geometry_config.py b/geometry/charm-geometry_config.py index d8eac700eb..a3ad0c13a6 100644 --- a/geometry/charm-geometry_config.py +++ b/geometry/charm-geometry_config.py @@ -467,7 +467,7 @@ c.Spectrometer.SZ = c.Spectrometer.DZ*2 + c.PixelModules.zSi[c.PixelModules.numSi-1] - c.PixelModules.zSi[c.PixelModules.nSlice-1] + c.PixelModules.DimZSithick + 80 *u.cm + 4.5*u.m #4.5 m is the Goliath length - c.PixelModules.DimZpixelbox = c.PixelModules.zSi[c.PixelModules.numSi-1] - c.PixelModules.zSi[c.PixelModules.nSlice-1] + c.PixelModules.DimZSithick + c.PixelModules.DimZpixelbox = c.PixelModules.zSi[c.PixelModules.numSi-1] - c.PixelModules.zSi[c.PixelModules.nSlice-1] + 2*c.PixelModules.DimZSithick PixeltoGoliath = 30.45 *u.cm #25.45 + 5cm different goliath dz c.Spectrometer.zBox = 350.75 - c.Spectrometer.TS/2 - PixeltoGoliath - c.PixelModules.DimZpixelbox/2. From c3b6d275ce542fd1e13799de90ed224534263b3e Mon Sep 17 00:00:00 2001 From: s6maclim Date: Sun, 2 Jun 2019 18:12:04 +0200 Subject: [PATCH 11/11] updated materials --- charmdet/PixelModules.cxx | 47 ++++++++++++++++++++++++++++----------- charmdet/PixelModules.h | 7 ++++-- 2 files changed, 39 insertions(+), 15 deletions(-) diff --git a/charmdet/PixelModules.cxx b/charmdet/PixelModules.cxx index 929df78e0c..78941e817f 100644 --- a/charmdet/PixelModules.cxx +++ b/charmdet/PixelModules.cxx @@ -164,8 +164,11 @@ void PixelModules::ConstructGeometry() TGeoMedium *air = gGeoManager->GetMedium("air"); InitMedium("iron"); - TGeoMedium *Fe =gGeoManager->GetMedium("iron"); - + TGeoMedium *Fepton =gGeoManager->GetMedium("iron"); + + InitMedium("kapton"); + TGeoMedium *kapton =gGeoManager->GetMedium("kapton"); + InitMedium("silicon"); TGeoMedium *Silicon = gGeoManager->GetMedium("silicon"); @@ -175,6 +178,9 @@ void PixelModules::ConstructGeometry() InitMedium("CoilCopper"); TGeoMedium *Cu = gGeoManager->GetMedium("CoilCopper"); + InitMedium("copper"); + TGeoMedium *copper = gGeoManager->GetMedium("copper"); + InitMedium("CoilAluminium"); TGeoMedium *Al = gGeoManager->GetMedium("CoilAluminium"); @@ -221,20 +227,35 @@ void PixelModules::ConstructGeometry() ///////////////////////////////////////////////////////Passive material/////////////////////////////////////////////////////// TGeoBBox *WindowBox = new TGeoBBox("WindowBox",Windowx/2, Windowy/2,DimZWindow/2); - TGeoVolume *volWindow = new TGeoVolume("volWindow",WindowBox,Al); + TGeoVolume *volWindow = new TGeoVolume("volWindow",WindowBox,kapton); volWindow->SetLineColor(kGray); //AddSensitiveVolume(volWindow); - TGeoBBox *PixelFramesx = new TGeoBBox("PixelFramesx",Dim1Short/2,Dim1Long/2, DimZAlu/2); - TGeoVolume *volAluFramex = new TGeoVolume("volAluFramex",PixelFramesx,Aluminium); - volAluFramex->SetLineColor(kGray); - // AddSensitiveVolume(volAluFramex); + TGeoBBox *FrontEndSilix = new TGeoBBox("FrontEndSilix",Dim1Short/2,Dim1Long/2, DimZFE/2); + TGeoVolume *VolSiliFEx = new TGeoVolume("VolSiliFEx",FrontEndSilix,Silicon); + VolSiliFEx->SetLineColor(kGray); + // AddSensitiveVolume(VolSiliFEx); - TGeoBBox *PixelFramesy = new TGeoBBox("PixelFramesy",Dim1Short/2,Dim1Long/2, DimZAlu/2); - TGeoVolume *volAluFramey = new TGeoVolume("volAluFramey",PixelFramesy,Aluminium); - volAluFramey->SetLineColor(kGray); - //AddSensitiveVolume(volAluFramey); + TGeoBBox *FrontEndSiliy = new TGeoBBox("FrontEndSiliy",Dim1Short/2,Dim1Long/2, DimZFE/2); + TGeoVolume *VolSiliFEy = new TGeoVolume("VolSiliFEy",FrontEndSiliy,Silicon); + VolSiliFEy->SetLineColor(kGray); + //AddSensitiveVolume(VolSiliFEy); + + TGeoBBox *ModuleCopperx = new TGeoBBox("ModuleCopperx",Dim1Short/2,Dim1Long/2, DimZCu/2); + TGeoVolume *VolModCux = new TGeoVolume("VolModCux",ModuleCopperx,copper); + VolModCux->SetLineColor(kGray); + + TGeoBBox *ModuleCoppery = new TGeoBBox("ModuleCoppery",Dim1Short/2,Dim1Long/2, DimZCu/2); + TGeoVolume *VolModCuy = new TGeoVolume("VolModCuy",ModuleCoppery,copper); + VolModCux->SetLineColor(kGray); + + TGeoBBox *ModuleKaptonx = new TGeoBBox("ModuleKaptonx",Dim1Short/2,Dim1Long/2, DimZKa/2); + TGeoVolume *VolModKax = new TGeoVolume("VolModKax",ModuleKaptonx,kapton); + VolModKax->SetLineColor(kGray); + TGeoBBox *ModuleKaptony = new TGeoBBox("ModuleKaptony",Dim1Short/2,Dim1Long/2, DimZKa/2); + TGeoVolume *VolModKay = new TGeoVolume("VolModKay",ModuleKaptony,kapton); + VolModKay->SetLineColor(kGray); ////////////////////////////////////////////////////////End passive material//////////////////////////////////////////////////////////////// //id convention: 1{a}{b}{c}, a = number of pair (from 1 to 6), b = element of the pair (1 or 2) @@ -286,7 +307,7 @@ void PixelModules::ConstructGeometry() } else volPixelBox->AddNode(volPixelythick, 9000, new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); //else here used for debugging, if the number of slices isn't 10 - if((ipixel+nSlices)%9==1) volAluFramex->AddNode(volAluFramex, 0,new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset+DimZThickSlice)); + if((ipixel+nSlices)%9==1) VolSiliFEx->AddNode(VolSiliFEx, 0,new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset+DimZThickSlice)); } else{ if(PixelIDlist[ipixel]) @@ -296,7 +317,7 @@ void PixelModules::ConstructGeometry() else volPixelBox->AddNode(volPixelxthick, 9000, new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset)); //debugging else for if nSlice!=10 - if((ipixel+nSlices)%9==1)volAluFramey->AddNode(volAluFramey, 0,new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset+DimZThickSlice)); + if((ipixel+nSlices)%9==1)VolSiliFEy->AddNode(VolSiliFEy, 0,new TGeoTranslation(xs[ipixel],ys[ipixel],-DimZPixelBox/2.+ zs[ipixel]-inimodZoffset+DimZThickSlice)); } } diff --git a/charmdet/PixelModules.h b/charmdet/PixelModules.h index 373596e173..2bc79f772b 100644 --- a/charmdet/PixelModules.h +++ b/charmdet/PixelModules.h @@ -111,9 +111,12 @@ class PixelModules:public FairDetector Double_t DimX =0; Double_t DimY =0; Double_t DimZ = 0; + Double_t DimZCu = 0.001; + Double_t DimZKa = 0.0005; + Double_t DimZFE = 0.0015; + Double_t zSizeMS = 0; //dimension of the Magnetic PixelModules volume - Double_t DimZAlu= 0.6; //thickness of the aluminium modules - Double_t DimZWindow=0.005; + Double_t DimZWindow=0.011; Double_t Windowx=5; Double_t Windowy=5;//estimation has to be measured