6 modified files
lcsim/src/org/lcsim/recon/tracking/digitization/sisim/config
diff -u -r1.2 -r1.3
--- SiTrackerBarrelSensorSetup.java 24 Aug 2009 23:07:39 -0000 1.2
+++ SiTrackerBarrelSensorSetup.java 25 Aug 2009 18:37:39 -0000 1.3
@@ -26,6 +26,10 @@
public class SiTrackerBarrelSensorSetup extends Driver
{
String subdetectorName;
+
+ double readoutElectrodesPitch = 0.050;
+ double senseElectrodesPitch = 0.025;
+ double transferEfficiencies[] = {0.986,0.419};
public SiTrackerBarrelSensorSetup()
{}
@@ -51,11 +55,29 @@
else
throw new RuntimeException("The subdetector " + subdetectorName + " is not an instance of SiTrackerBarrel.");
}
+
+ public void setReadoutElectrodesPitch(double readoutElectrodesPitch)
+ {
+ this.readoutElectrodesPitch = readoutElectrodesPitch;
+ }
+
+ public void setSenseElectrodesPitch(double senseElectrodesPitch)
+ {
+ this.senseElectrodesPitch = senseElectrodesPitch;
+ }
+
+ public void setTransferEfficiencies(double transferEfficiencies[])
+ {
+ if (transferEfficiencies.length < 2)
+ {
+ throw new IllegalArgumentException("Not enough values in transferEfficiencies array.");
+ }
+ this.transferEfficiencies[0] = transferEfficiencies[0];
+ this.transferEfficiencies[1] = transferEfficiencies[1];
+ }
private void setupSensorDetectorElements(Subdetector subdet)
- {
- //System.out.println(this.getClass().getCanonicalName() + " - Setting up sensors for " + subdet.getName() + " ...");
-
+ {
for ( IDetectorElement layer : subdet.getDetectorElement().getChildren() )
{
for ( IDetectorElement module : layer.getChildren() )
@@ -63,7 +85,7 @@
List<SiSensor> sensors = module.findDescendants(SiSensor.class);
if (sensors.size() == 0)
- throw new RuntimeException("No sensors found in module.");
+ throw new RuntimeException("No sensors found in module " + module.getName() + ".");
SiSensor sensor = sensors.get(0);
@@ -71,7 +93,7 @@
IPolyhedron sensor_solid = (IPolyhedron)sensor.getGeometry().getLogicalVolume().getSolid();
// Bias the sensor
- Polygon3D p_side = sensor_solid.getFacesNormalTo(new BasicHep3Vector(0,0,1)).get(0);
+ Polygon3D p_side = sensor_solid.getFacesNormalTo(new BasicHep3Vector(0,0,1)).get(0);
Polygon3D n_side = sensor_solid.getFacesNormalTo(new BasicHep3Vector(0,0,-1)).get(0);
@@ -84,14 +106,14 @@
Transform3D electrodes_transform = new Transform3D(electrodes_position, electrodes_rotation);
// Free calculation of readout electrodes, sense electrodes determined thereon
- SiSensorElectrodes readout_electrodes = new SiStrips(ChargeCarrier.HOLE,0.050,sensor,electrodes_transform);
- SiSensorElectrodes sense_electrodes = new SiStrips(ChargeCarrier.HOLE,0.025,(readout_electrodes.getNCells()*2-1),sensor,electrodes_transform);
+ SiSensorElectrodes readout_electrodes = new SiStrips(ChargeCarrier.HOLE,this.readoutElectrodesPitch,sensor,electrodes_transform);
+ SiSensorElectrodes sense_electrodes = new SiStrips(ChargeCarrier.HOLE,senseElectrodesPitch,(readout_electrodes.getNCells()*2-1),sensor,electrodes_transform);
sensor.setSenseElectrodes(sense_electrodes);
sensor.setReadoutElectrodes(readout_electrodes);
- double[][] transfer_efficiencies = { {0.986,0.419} };
- sensor.setTransferEfficiencies(ChargeCarrier.HOLE,new BasicMatrix(transfer_efficiencies));
+ double[][] transferEfficienciesMatrix = { transferEfficiencies };
+ sensor.setTransferEfficiencies(ChargeCarrier.HOLE,new BasicMatrix(transferEfficienciesMatrix));
}
}
}
lcsim/src/org/lcsim/recon/tracking/digitization/sisim/config
diff -u -r1.2 -r1.3
--- SiTrackerEndcap2SensorSetup.java 24 Aug 2009 23:07:39 -0000 1.2
+++ SiTrackerEndcap2SensorSetup.java 25 Aug 2009 18:37:39 -0000 1.3
@@ -26,6 +26,9 @@
public class SiTrackerEndcap2SensorSetup extends Driver
{
String subdetectorName;
+ double readoutPitch = 0.050;
+ double sensePitch = 0.025;
+ double transferEfficiencies[] = {0.986,0.419};
public SiTrackerEndcap2SensorSetup()
{}
@@ -51,16 +54,33 @@
else
throw new RuntimeException("The subdetector " + subdetectorName + " is not an instance of SiTrackerEndcap.");
}
+
+ public void setReadoutPitch(double p)
+ {
+ this.readoutPitch = p;
+ }
+
+ public void setSensePitch(double p)
+ {
+ this.sensePitch = p;
+ }
+
+ public void setTransferEfficiencies(double transferEfficiencies[])
+ {
+ if (transferEfficiencies.length < 2)
+ {
+ throw new IllegalArgumentException("Not enough values in transferEfficiencies array.");
+ }
+ this.transferEfficiencies[0] = transferEfficiencies[0];
+ this.transferEfficiencies[1] = transferEfficiencies[1];
+ }
private void setupSensorDetectorElements(Subdetector subdet)
{
- //System.out.println(this.getClass().getCanonicalName() + " - Setting up sensors for " + subdet.getName() + " ...");
-
for ( IDetectorElement endcap : subdet.getDetectorElement().getChildren() )
{
for ( IDetectorElement layer : endcap.getChildren() )
{
- //int nwedges = layer.getChildren().size();
for ( IDetectorElement wedge : layer.getChildren() )
{
for ( IDetectorElement module : wedge.getChildren() )
@@ -70,7 +90,6 @@
if (sensors.size() == 0)
throw new RuntimeException("No sensors found in module.");
- //int sensorId = 0;
for (SiSensor sensor : sensors)
{
Trd sensor_solid = (Trd)sensor.getGeometry().getLogicalVolume().getSolid();
@@ -89,17 +108,14 @@
Transform3D electrodes_transform = new Transform3D(electrodes_position, electrodes_rotation);
// Free calculation of readout electrodes, sense electrodes determined thereon
- SiSensorElectrodes readout_electrodes = new SiStrips(ChargeCarrier.HOLE,0.050,sensor,electrodes_transform);
- SiSensorElectrodes sense_electrodes = new SiStrips(ChargeCarrier.HOLE,0.025,(readout_electrodes.getNCells()*2-1),sensor,electrodes_transform);
+ SiSensorElectrodes readout_electrodes = new SiStrips(ChargeCarrier.HOLE,this.readoutPitch,sensor,electrodes_transform);
+ SiSensorElectrodes sense_electrodes = new SiStrips(ChargeCarrier.HOLE,this.sensePitch,(readout_electrodes.getNCells()*2-1),sensor,electrodes_transform);
sensor.setSenseElectrodes(sense_electrodes);
sensor.setReadoutElectrodes(readout_electrodes);
- double[][] transfer_efficiencies = { {0.986,0.419} };
+ double[][] transfer_efficiencies = { transferEfficiencies };
sensor.setTransferEfficiencies(ChargeCarrier.HOLE,new BasicMatrix(transfer_efficiencies));
- // here
-
- //++sensorId;
}
}
}
lcsim/src/org/lcsim/recon/tracking/digitization/sisim/config
diff -u -r1.2 -r1.3
--- SiTrackerEndcapSensorSetup.java 24 Aug 2009 23:07:39 -0000 1.2
+++ SiTrackerEndcapSensorSetup.java 25 Aug 2009 18:37:39 -0000 1.3
@@ -26,6 +26,9 @@
public class SiTrackerEndcapSensorSetup extends Driver
{
String subdetectorName;
+ double readoutPitch = 0.050;
+ double sensePitch = 0.025;
+ double transferEfficiencies[] = {0.986,0.419};
public SiTrackerEndcapSensorSetup()
{}
@@ -51,11 +54,29 @@
else
throw new RuntimeException("The subdetector " + subdetectorName + " is not an instance of SiTrackerEndcap.");
}
+
+ public void setReadoutPitch(double p)
+ {
+ this.readoutPitch = p;
+ }
+
+ public void setSensePitch(double p)
+ {
+ this.sensePitch = p;
+ }
+
+ public void setTransferEfficiencies(double transferEfficiencies[])
+ {
+ if (transferEfficiencies.length < 2)
+ {
+ throw new IllegalArgumentException("Not enough values in transferEfficiencies array.");
+ }
+ this.transferEfficiencies[0] = transferEfficiencies[0];
+ this.transferEfficiencies[1] = transferEfficiencies[1];
+ }
private void setupSensorDetectorElements(Subdetector subdet)
{
- //System.out.println(this.getClass().getCanonicalName() + " - Setting up sensors for " + subdet.getName() + " ...");
-
for ( IDetectorElement endcap : subdet.getDetectorElement().getChildren() )
{
for ( IDetectorElement layer : endcap.getChildren() )
@@ -107,13 +128,13 @@
Transform3D electrodes_transform = new Transform3D(electrodes_position, electrodes_rotation);
// Free calculation of readout electrodes, sense electrodes determined thereon
- SiSensorElectrodes readout_electrodes = new SiStrips(ChargeCarrier.HOLE,0.050,sensor,electrodes_transform);
- SiSensorElectrodes sense_electrodes = new SiStrips(ChargeCarrier.HOLE,0.025,(readout_electrodes.getNCells()*2-1),sensor,electrodes_transform);
+ SiSensorElectrodes readout_electrodes = new SiStrips(ChargeCarrier.HOLE,this.readoutPitch,sensor,electrodes_transform);
+ SiSensorElectrodes sense_electrodes = new SiStrips(ChargeCarrier.HOLE,this.sensePitch,(readout_electrodes.getNCells()*2-1),sensor,electrodes_transform);
sensor.setSenseElectrodes(sense_electrodes);
sensor.setReadoutElectrodes(readout_electrodes);
- double[][] transfer_efficiencies = { {0.986,0.419} };
+ double[][] transfer_efficiencies = { transferEfficiencies };
sensor.setTransferEfficiencies(ChargeCarrier.HOLE,new BasicMatrix(transfer_efficiencies));
++sensorId;
lcsim/src/org/lcsim/recon/tracking/digitization/sisim/config
diff -u -r1.2 -r1.3
--- SiVertexBarrelSensorSetup.java 24 Aug 2009 23:07:39 -0000 1.2
+++ SiVertexBarrelSensorSetup.java 25 Aug 2009 18:37:39 -0000 1.3
@@ -23,10 +23,16 @@
import org.lcsim.geometry.subdetector.SiTrackerBarrel;
import org.lcsim.util.Driver;
-// TODO: Make pixel size a settable parameter.
public class SiVertexBarrelSensorSetup extends Driver
{
String subdetectorName;
+
+ // Sets pixel size to x=0.05 and y=0.25 (mm)
+ double readoutPitchX = 0.05;
+ double readoutPitchY = 0.25;
+ double sensePitchX = 0.05;
+ double sensePitchY = 0.25;
+ double transferEfficiency = 1.0;
public SiVertexBarrelSensorSetup()
{}
@@ -53,10 +59,33 @@
throw new RuntimeException("The subdetector " + subdetectorName + " is not an instance of SiTrackerBarrel.");
}
- private void setupSensorDetectorElements(Subdetector subdet)
+ public void setReadoutPitchX(double x)
{
- //System.out.println(this.getClass().getCanonicalName() + " - Setting up sensors for " + subdet.getName() + " ...");
-
+ this.readoutPitchX = x;
+ }
+
+ public void setReadoutPitchY(double y)
+ {
+ this.readoutPitchY = y;
+ }
+
+ public void setSensePitchX(double x)
+ {
+ this.sensePitchX = x;
+ }
+
+ public void setSensePitchY(double y)
+ {
+ this.sensePitchY = y;
+ }
+
+ public void setTransferEfficiency(double t)
+ {
+ this.transferEfficiency = t;
+ }
+
+ private void setupSensorDetectorElements(Subdetector subdet)
+ {
for ( IDetectorElement layer : subdet.getDetectorElement().getChildren() )
{
for ( IDetectorElement module : layer.getChildren() )
@@ -64,7 +93,7 @@
List<SiSensor> sensors = module.findDescendants(SiSensor.class);
if (sensors.size() == 0)
- throw new RuntimeException("No sensors found in module.");
+ throw new RuntimeException("No sensors found in module " + module.getName() + ".");
SiSensor sensor = sensors.get(0);
IPolyhedron sensor_solid = (IPolyhedron) sensor.getGeometry().getLogicalVolume().getSolid();
@@ -72,7 +101,7 @@
Polygon3D top_side = sensor_solid.getFacesNormalTo(new BasicHep3Vector(0, 0, 1)).get(0);
Polygon3D bot_side = sensor_solid.getFacesNormalTo(new BasicHep3Vector(0, 0, -1)).get(0);
- // collect electrons on the top side
+ // collect electrons on the top side
sensor.setBiasSurface(ChargeCarrier.HOLE, bot_side);
sensor.setBiasSurface(ChargeCarrier.ELECTRON, top_side);
@@ -84,9 +113,8 @@
Transform3D electrodes_transform = new Transform3D(electrodes_position, electrodes_rotation);
// Define the pixel electrodes...collecting holes;
- // Sets pixel size to x=0.05 and y=0.25 (mm)
- SiSensorElectrodes readout_electrodes = new SiPixels(ChargeCarrier.ELECTRON, 0.05, 0.25, sensor, electrodes_transform);
- SiSensorElectrodes sense_electrodes = new SiPixels(ChargeCarrier.ELECTRON, 0.05, 0.25, sensor, electrodes_transform);
+ SiSensorElectrodes readout_electrodes = new SiPixels(ChargeCarrier.ELECTRON, this.readoutPitchX, this.readoutPitchY, sensor, electrodes_transform);
+ SiSensorElectrodes sense_electrodes = new SiPixels(ChargeCarrier.ELECTRON, this.sensePitchX, this.sensePitchY, sensor, electrodes_transform);
// Tell the sensor about the electrodes
sensor.setSenseElectrodes(sense_electrodes);
@@ -94,7 +122,7 @@
// Define the transfer efficiency from sense electrodes to readout electrodes
// For pixels, we do a direct transfer of charge from sense electrodes to readout electrodes
- double[][] transfer_efficiencies = {{1.0}};
+ double[][] transfer_efficiencies = {{this.transferEfficiency}};
sensor.setTransferEfficiencies(ChargeCarrier.ELECTRON, new BasicMatrix(transfer_efficiencies));
}
}
lcsim/src/org/lcsim/recon/tracking/digitization/sisim/config
diff -u -r1.2 -r1.3
--- SiVertexEndcapSensorSetup.java 25 Aug 2009 00:01:59 -0000 1.2
+++ SiVertexEndcapSensorSetup.java 25 Aug 2009 18:37:39 -0000 1.3
@@ -28,6 +28,11 @@
{
String subdetectorName;
+ double readoutPitchX = 0.05;
+ double readoutPitchY = 0.25;
+ double sensePitchX = 0.05;
+ double sensePitchY = 0.25;
+ double transferEfficiency = 1.0;
public SiVertexEndcapSensorSetup()
{}
@@ -54,6 +59,31 @@
throw new RuntimeException("The subdetector " + subdetectorName + " is not an instance of SiTrackerBarrel.");
}
+ public void setReadoutPitchX(double x)
+ {
+ this.readoutPitchX = x;
+ }
+
+ public void setReadoutPitchY(double y)
+ {
+ this.readoutPitchY = y;
+ }
+
+ public void setSensePitchX(double x)
+ {
+ this.sensePitchX = x;
+ }
+
+ public void setSensePitchY(double y)
+ {
+ this.sensePitchY = y;
+ }
+
+ public void setTransferEfficiency(double t)
+ {
+ this.transferEfficiency = t;
+ }
+
private void setupSensorDetectorElements(Subdetector subdet)
{
for (IDetectorElement endcap : subdet.getDetectorElement().getChildren()) {
@@ -121,8 +151,8 @@
sensor.setBiasSurface(ChargeCarrier.HOLE, n_side);
// Define the pixel electrodes.
- SiSensorElectrodes readout_electrodes = new SiPixels(ChargeCarrier.ELECTRON, 0.05, 0.25, sensor, electrodes_transform);
- SiSensorElectrodes sense_electrodes = new SiPixels(ChargeCarrier.ELECTRON, 0.05, 0.25, sensor, electrodes_transform);
+ SiSensorElectrodes readout_electrodes = new SiPixels(ChargeCarrier.ELECTRON, readoutPitchX, readoutPitchY, sensor, electrodes_transform);
+ SiSensorElectrodes sense_electrodes = new SiPixels(ChargeCarrier.ELECTRON, sensePitchX, sensePitchY, sensor, electrodes_transform);
// Tell the sensor about the electrodes.
sensor.setSenseElectrodes(sense_electrodes);
@@ -130,7 +160,7 @@
// Define the transfer efficiency from sense electrodes to readout electrodes.
// For pixels, we do a direct transfer of charge from sense electrodes to readout electrodes.
- double[][] transfer_efficiencies = {{1.0}};
+ double[][] transfer_efficiencies = {{transferEfficiency}};
sensor.setTransferEfficiencies(ChargeCarrier.ELECTRON, new BasicMatrix(transfer_efficiencies));
}
}
lcsim/testResources/org/lcsim/recon/tracking/digitization/sisim/config
diff -u -r1.3 -r1.4
--- digiTest.xml 25 Aug 2009 00:01:59 -0000 1.3
+++ digiTest.xml 25 Aug 2009 18:37:39 -0000 1.4
@@ -25,18 +25,34 @@
<driver name="TrackerBarrelSetup"
type="org.lcsim.recon.tracking.digitization.sisim.config.SiTrackerBarrelSensorSetup">
<subdetectorName>SiTrackerBarrel</subdetectorName>
+ <readoutElectrodesPitch>0.050</readoutElectrodesPitch>
+ <senseElectrodesPitch>0.025</senseElectrodesPitch>
+ <transferEfficiencies>0.986 0.419</transferEfficiencies>
</driver>
<driver name="TrackerEndcapSetup"
type="org.lcsim.recon.tracking.digitization.sisim.config.SiTrackerEndcapSensorSetup">
<subdetectorName>SiTrackerEndcap</subdetectorName>
+ <readoutPitch>0.050</readoutPitch>
+ <sensePitch>0.025</sensePitch>
+ <transferEfficiencies>0.986 0.419</transferEfficiencies>
</driver>
<driver name="VertexBarrelSetup"
type="org.lcsim.recon.tracking.digitization.sisim.config.SiVertexBarrelSensorSetup">
<subdetectorName>SiVertexBarrel</subdetectorName>
+ <readoutPitchX>0.05</readoutPitchX>
+ <readoutPitchY>0.25</readoutPitchY>
+ <sensePitchX>0.05</sensePitchX>
+ <sensePitchY>0.25</sensePitchY>
+ <transferEfficiency>1.0</transferEfficiency>
</driver>
<driver name="VertexEndcapSetup"
type="org.lcsim.recon.tracking.digitization.sisim.config.SiVertexEndcapSensorSetup">
<subdetectorName>SiVertexEndcap</subdetectorName>
+ <readoutPitchX>0.05</readoutPitchX>
+ <readoutPitchY>0.25<readoutPitchY>
+ <sensePitchX>0.05</sensePitchX>
+ <sensePitchY>0.25</sensePitchY>
+ <transferEfficiency>1.0</transferEfficiency>
</driver>
<driver name="TrackerDigi"
type="org.lcsim.recon.tracking.digitization.sisim.config.StripDigiSetupDriver">
@@ -55,7 +71,6 @@
<twoClusterErr>0.2</twoClusterErr>
<threeClusterErr>0.333333333</threeClusterErr>
<fourClusterErr>0.5</fourClusterErr>
-
</driver>
<driver name="VertexDigi"
type="org.lcsim.recon.tracking.digitization.sisim.config.PixelDigiSetupDriver">
CVSspam 0.2.8