GeomConverter/src/org/lcsim/geometry
diff -u -r1.19 -r1.20
--- Calorimeter.java 7 Dec 2010 20:18:03 -0000 1.19
+++ Calorimeter.java 4 Jan 2011 21:58:51 -0000 1.20
@@ -7,7 +7,7 @@
* important information.
*
* @author Jeremy McCormick
- * @version $Id: Calorimeter.java,v 1.19 2010/12/07 20:18:03 jeremy Exp $
+ * @version $Id: Calorimeter.java,v 1.20 2011/01/04 21:58:51 jeremy Exp $
*
*/
public interface Calorimeter extends Subdetector
@@ -166,6 +166,12 @@
* @return The total layer thickness for the given layer.
*/
public double getLayerThickness( int layern );
+
+ /**
+ * Get the total thickness of the calorimeter.
+ * @return The calorimeter's thickness.
+ */
+ public double getTotalThickness();
/**
* Get the sensor thickness in mm.
@@ -178,14 +184,28 @@
* @param layern The layer number.
* @return The number of interaction lengths for the given layer.
*/
- public double getNumberOfInteractionLengths( int layern );
+ public double getInteractionLengths( int layern );
/**
* Get the number of radiation lengths in the layer.
* @param layern The layer number.
* @return The number of radiation lengths for the given layer.
*/
- public double getNumberOfRadiationLengths( int layern );
+ public double getRadiationLengths( int layern );
+
+ /**
+ * Get the number of interaction lengths in the layers.
+ * @param layern The layer number.
+ * @return The number of interaction lengths for the given layer.
+ */
+ public double getInteractionLengths();
+
+ /**
+ * Get the number of radiation lengths in the layers.
+ * @param layern The layer number.
+ * @return The number of radiation lengths for the given layer.
+ */
+ public double getRadiationLengths();
/**
* Get MIP energy loss in GeV in this layer.
@@ -205,11 +225,9 @@
* @return The cell V dimension.
*/
public double getCellSizeV();
-
- //
+
// public boolean isUnsegmented();
-
- //
+
// public boolean isOptical();
// This would be useful but requires access to the conditions system.
GeomConverter/src/org/lcsim/geometry/compact/converter/pandora
diff -u -r1.28 -r1.29
--- Main.java 30 Nov 2010 00:16:29 -0000 1.28
+++ Main.java 4 Jan 2011 21:58:51 -0000 1.29
@@ -53,7 +53,7 @@
* geometry input format.
*
* @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: Main.java,v 1.28 2010/11/30 00:16:29 jeremy Exp $
+ * @version $Id: Main.java,v 1.29 2011/01/04 21:58:51 jeremy Exp $
*/
public class Main implements Converter
{
@@ -606,8 +606,8 @@
coilInnerR = c.getInnerR()[0];
coilOuterR = c.getInnerR()[coilLayers-1] + c.getLayerThickness(coilLayers-1);
for (int layern = 0; layern != c.getNumberOfLayers(); layern++) {
- coilRadLen += c.getNumberOfRadiationLengths(layern);
- coilIntLen += c.getNumberOfInteractionLengths(layern);
+ coilRadLen += c.getRadiationLengths(layern);
+ coilIntLen += c.getInteractionLengths(layern);
}
//calculate average interaction/radiation length in coil material
coilRadLen = coilRadLen/(coilOuterR-coilInnerR);
GeomConverter/src/org/lcsim/geometry/subdetector
diff -u -r1.8 -r1.9
--- AbstractLayeredSubdetector.java 30 Nov 2010 00:16:29 -0000 1.8
+++ AbstractLayeredSubdetector.java 4 Jan 2011 21:58:51 -0000 1.9
@@ -27,16 +27,19 @@
/**
* @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: AbstractLayeredSubdetector.java,v 1.8 2010/11/30 00:16:29 jeremy Exp $
+ * @version $Id: AbstractLayeredSubdetector.java,v 1.9 2011/01/04 21:58:51 jeremy Exp $
*/
-abstract class AbstractLayeredSubdetector extends AbstractSubdetector implements Layered
+abstract public class AbstractLayeredSubdetector extends AbstractSubdetector implements Layered
{
protected Layering layering;
- private List< Double > nrad;
- private List< Double > nlam;
- private List< Double > de;
- private Map< String, Double > dedxmap = new HashMap< String, Double >();
+ private List<Double> nrad;
+ private List<Double> nlam;
+ private List<Double> de;
+ private Map<String, Double> dedxmap = new HashMap<String, Double>();
+
+ private double intLens;
+ private double radLens;
/**
* Creates a new instance of a LayeredSubdetector
@@ -47,9 +50,9 @@
build( node );
// Initialize parameter arrays using layer count.
- nrad = new ArrayList< Double >( this.getLayering().getNumberOfLayers() );
- de = new ArrayList< Double >( this.getLayering().getNumberOfLayers() );
- nlam = new ArrayList< Double >( this.getLayering().getNumberOfLayers() );
+ nrad = new ArrayList<Double>( this.getLayering().getNumberOfLayers() );
+ de = new ArrayList<Double>( this.getLayering().getNumberOfLayers() );
+ nlam = new ArrayList<Double>( this.getLayering().getNumberOfLayers() );
// Compute layer derived quantities.
computeLayerParameters();
@@ -77,10 +80,17 @@
{
return layering;
}
+
+ public double getTotalThickess()
+ {
+ return layering.getThickness();
+ }
protected void setLayering( Layering layering )
{
- this.layering = layering;
+ // May only be called once at initialization time.
+ if ( this.layering == null )
+ this.layering = layering;
}
public Layer getLayer( int layern )
@@ -137,24 +147,13 @@
{
Material m = slice.getMaterial();
String materialName = m.getName();
- // String materialName = slice.getMaterial().getName();
- // Material m = ms.get( materialName );
- // if (m == null)
- // throw new RuntimeException( "Material <" + materialName +
- // "> not found.");
double dedx;
if ( dedxmap.containsKey( materialName ) )
dedx = dedxmap.get( materialName ).doubleValue();
else
{
- // dedx = BetheBlochCalculator.computeBetheBloch( m, p, 105., 1., .01
- // ) / 10000.;
- // BetheBlochCalculator.computeBetheBloch( material, p, mass, charge,
- // distance )
-
// Kludge to get material state to avoid using IMaterial objects that
- // are not
- // instantiated yet.
+ // are not instantiated yet.
MaterialState state = m.getState();
IMaterial.State istate = null;
if ( state == MaterialState.GAS )
@@ -173,8 +172,17 @@
{
istate = IMaterial.Unknown;
}
- dedx = BetheBlochCalculator.computeBetheBloch( m.getZeff(), m.getAeff(), m.getDensity(), istate, m
- .getPressure(), m.getTemperature(), p, 105., 1., .01 ) / 10000;
+ dedx = BetheBlochCalculator.computeBetheBloch(
+ m.getZeff(),
+ m.getAeff(),
+ m.getDensity(),
+ istate,
+ m.getPressure(),
+ m.getTemperature(),
+ p,
+ 105.,
+ 1.,
+ .01 ) / 10000;
dedxmap.put( materialName, new Double( dedx ) );
}
double dx = slice.getThickness();
@@ -186,14 +194,34 @@
nlam.add( j, new Double( xlam / 10. ) );
de.add( j, new Double( xde ) );
}
+
+ // Compute totals for all layers.
+ for ( double lam : nlam )
+ {
+ intLens += lam;
+ }
+ for ( double rad : nrad )
+ {
+ radLens += rad;
+ }
+ }
+
+ public double getInteractionLengths()
+ {
+ return intLens;
+ }
+
+ public double getRadiationLengths()
+ {
+ return radLens;
}
- public double getNumberOfInteractionLengths( int layern )
+ public double getInteractionLengths( int layern )
{
return nlam.get( layern );
}
- public double getNumberOfRadiationLengths( int layern )
+ public double getRadiationLengths( int layern )
{
return nrad.get( layern );
}