2 added + 8 removed + 3 modified, total 13 files
GeomConverter/sandbox/detector
diff -N IDigitContainer.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ IDigitContainer.java 1 Mar 2007 19:20:21 -0000 1.1
@@ -0,0 +1,7 @@
+package org.lcsim.detector;
+
+import java.util.List;
+
+public interface IDigitContainer<T>
+extends List<IDigit<T>>
+{}
\ No newline at end of file
GeomConverter/sandbox/detector
diff -N IMaterialMixture.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ IMaterialMixture.java 1 Mar 2007 19:20:21 -0000 1.1
@@ -0,0 +1,14 @@
+package org.lcsim.detector;
+
+public interface IMaterialMixture extends IMaterial
+{
+ public int numberOfMaterials();
+ public void setNumberOfMaterials(int i);
+ public boolean hasMaxMaterials();
+ public IMaterial getMaterial(int i);
+ public void addByMassFraction(IMaterial submaterial, double massFrac);
+ public void addByNumberOfAtoms(IMaterial submaterial, int n);
+ public void getMassFraction(int i);
+ public void getFractionOfAtomCount(int i);
+ public void lock();
+}
GeomConverter/sandbox/detector
diff -u -r1.1 -r1.2
--- IDetectorElement.java 28 Feb 2007 19:48:21 -0000 1.1
+++ IDetectorElement.java 1 Mar 2007 19:20:21 -0000 1.2
@@ -1,10 +1,6 @@
-/*
- * IDetectorElement.java
- */
-
package org.lcsim.detector;
-//import org.lcsim.detector.identifier.IIdentifiable;
+import org.lcsim.detector.identifier.IIdentifiable;
/**
* A class to represent a node in the detector tree,
@@ -13,33 +9,106 @@
* @author Tim Nelson <[log in to unmask]>
* @author Jeremy McCormick <[log in to unmask]>
*/
-public interface IDetectorElement
-extends IIdentifiable
+public interface IDetectorElement extends IIdentifiable
{
- public IGeometryInfo getIGeometryInfo();
-
- public IReadout getIReadout();
-
- public void setIGeometryInfo(IGeometryInfo geom);
-
- public void setIReadout(IReadout ro);
-
- // build the GeometryInfo
- public void createIGeometryInfo();
-
- // build the Readout
- public void createIReadout();
-
- // parent DE
- public IDetectorElement parentIDetectorElement();
+ public String getName();
+
+ public IGeometryInfo getGeometry();
- // subparts
- public IDetectorElementCollection childIDetectorElements();
+ public IReadout getReadout();
- // name of this DE
- public String getName();
-
+ public IDetectorElement getParent();
+
+ public IDetectorElementCollection getChildren();
+
// same as name? need to look at what Gaudi does here;
// also could have better return type (dir or tree type class)
public String fullPath();
+
+ //typedef std::vector<IDetectorElement*> IDEContainer;
+ ///
+ //public:
+
+ /** retrieve the unique interface identifier
+ * @return the unique interface identifier
+ */
+ //static const InterfaceID& interfaceID() { return IID_IDetectorElement; }
+
+ /// "accessor": name/identifier of the Detector Element
+ //virtual const std::string& name () const = 0;
+
+ /// Return the SmartRef for the condition called 'name'.
+ //virtual SmartRef<Condition> condition(const std::string &name) const = 0;
+
+ ///
+ /// delegations:
+ ///
+ /// "accessor": delegates the IGeometryInfo Interface
+ //virtual IGeometryInfo* geometry () = 0;
+ /// "accessor": delegates the IGeometryInfo Interface (const)
+ //virtual const IGeometryInfo* geometry () const = 0;
+ /// "accessor": delegates the IAlignment Interface
+ //virtual IAlignment* alignment () = 0;
+ /// "accessor": delegates the IAlignment Interface (const)
+ //virtual const IAlignment* alignment () const = 0;
+ /// "accessor": delegates the ICalibration Interface
+ //virtual ICalibration* calibration() = 0;
+ /// "accessor": delegates the ICalibration Interface (const)
+ //virtual const ICalibration* calibration() const = 0;
+ /// "accessor": delegates the IReadOut Interface
+ //virtual IReadOut* readOut () = 0;
+ /// "accessor": delegates the IReadOut Interface (const)
+ //virtual const IReadOut* readOut () const = 0;
+ /// "accessor": delegates the ISlowControl Interface
+ //virtual ISlowControl* slowControl() = 0;
+ /// "accessor": delegates the ISlowControl Interface (const)
+ //virtual const ISlowControl* slowControl() const = 0;
+ /// "accessor": delegates the IFastControl Interface
+ //virtual IFastControl* fastControl() = 0;
+ // "accessor": delegates the IFastControl Interface (const)
+ //virtual const IFastControl* fastControl() const = 0;
+ /// some functions to simplify the navigation
+ /// (according to feedback after release 3)
+ /// pointer to parent IDetectorElement (const version)
+ //virtual IDetectorElement* parentIDetectorElement() const = 0 ;
+ /// (reference to) container of pointers to child detector elements
+ //virtual IDetectorElement::IDEContainer&
+ //childIDetectorElements() const = 0;
+ /// iterators for manipulation of daughter elements
+ /// begin iterator
+ //virtual IDetectorElement::IDEContainer::iterator childBegin() = 0;
+ //virtual IDetectorElement::IDEContainer::const_iterator childBegin() const = 0;
+ /// end iterator
+ //virtual IDetectorElement::IDEContainer::iterator childEnd() = 0 ;
+ //virtual IDetectorElement::IDEContainer::const_iterator childEnd() const = 0 ;
+ /// functions for listing of objects, used in overloaded << operations
+ //virtual std::ostream& printOut ( std::ostream& ) const = 0;
+ /// reset to the initial state
+ //virtual IDetectorElement* reset() = 0 ;
+
+ /**
+ * Method used to access the ParamValidDataObject methods from IDetectorElement
+ * interface.
+ */
+ //virtual const ParamValidDataObject *params() const = 0;
+
+ /**
+ * Return a sensitive volume identifier for a given point in the
+ * global reference frame.
+ */
+
+ //virtual const int sensitiveVolumeID(const Gaudi::XYZPoint& globalPos ) const=0;
+
+ /**
+ * This method initializes the detector element. It should be overridden
+ * and used for computation purposes. This is a kind of hook for adding
+ * user code easily in the initialization of a detector element.
+ */
+ //virtual StatusCode initialize() = 0;
+
+ /// destructor
+ //virtual ~IDetectorElement() ;
+
+ };
+
}
\ No newline at end of file
GeomConverter/sandbox/detector
diff -u -r1.1 -r1.2
--- IPosition.java 28 Feb 2007 19:48:21 -0000 1.1
+++ IPosition.java 1 Mar 2007 19:20:21 -0000 1.2
@@ -2,27 +2,18 @@
import hep.physics.vec.Hep3Vector;
-// point in 3D space
+// position in 3D space
public interface IPosition extends Hep3Vector
{
// cylindrical r
public double r();
- // x,y,z
- public double x();
- public double y();
- public double z();
double[] xyz();
// angles
public double phi();
public double eta();
- // spherical r
- public double mag();
-
- public double mag2();
public double distance(IPosition point);
public double equals(IPosition point, double tolerance);
- // public static double distance(IPositionXYZ a, IPositionXYZ b);
}
\ No newline at end of file
GeomConverter/sandbox/detector
diff -u -r1.1 -r1.2
--- IReadout.java 28 Feb 2007 19:48:21 -0000 1.1
+++ IReadout.java 1 Mar 2007 19:20:21 -0000 1.2
@@ -5,8 +5,8 @@
public interface IReadout
{
String name();
- IDigitCollection getDigitCollection();
- List<IDigitCollection> digitCollections();
+ IDigitContainer getDigitCollection();
+ List<IDigitContainer> digitCollections();
String[] digitCollectionNames();
int numberOfDigitCollections();
}
\ No newline at end of file
GeomConverter/sandbox
diff -N Box.java
--- Box.java 23 Feb 2007 20:53:01 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,66 +0,0 @@
-/*
- * Box.java
- *
- * Created on October 6, 2006, 4:41 PM
- *
- * To change this template, choose Tools | Template Manager
- * and open the template in the editor.
- */
-
-package org.lcsim.contrib.subdetector.tracker.silicon;
-
-import hep.physics.vec.Hep3Vector;
-import org.jdom.Element;
-import org.jdom.DataConversionException;
-
-/**
- *
- * @author tknelson
- */
-public class Box implements ISolid
-{
-
- // Fields
- //=======
- private double _dimensions[] = new double[3];
-
- /** Creates a new instance of Box */
- public Box(Element box)
- {
- buildFromXML(box);
- }
-
- // Public methods
- //===============
- public double[] getDimensions()
- {
- return _dimensions;
- }
-
- public double getVolume()
- {
- return _dimensions[0]*_dimensions[1]*_dimensions[2];
- }
-
- public boolean isInside(Hep3Vector point)
- {
- return ( Math.abs(point.x()) < _dimensions[0]/2.0 &&
- Math.abs(point.y()) < _dimensions[1]/2.0 &&
- Math.abs(point.z()) < _dimensions[2]/2.0 );
- }
-
- public void buildFromXML(Element box)
- {
- try
- {
- _dimensions[0] = box.getAttribute("x_size").getDoubleValue();
- _dimensions[1] = box.getAttribute("y_size").getDoubleValue();
- _dimensions[2] = box.getAttribute("z_size").getDoubleValue();
- }
- catch (DataConversionException dce)
- {
- System.out.println("Cannot convert Box dimensions to double!");
- }
- }
-
-}
GeomConverter/sandbox
diff -N PadLayout2D.java
--- PadLayout2D.java 23 Feb 2007 20:53:01 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,100 +0,0 @@
-package org.lcsim.contrib.JeremyMcCormick;
-
-public interface PadLayout2D
-{
- enum CoordinateSystem
- {
- CARTESIAN, // (x, y)
- POLAR, // (r, phi)
- CYLINDRICAL // (r, z)
- }
-
- enum PadShape
- {
- RECTANGLE,
- DIAMOND,
- HEXAGON,
- CHEVRON
- }
-
- // The type of coordinate system.
- CoordinateSystem getCoordinateSystem();
-
- // The pad shape.
- PadShape getPadShape();
-
- // The 2D corner points of this pad's bounding shape.
- double[][] getCorners(int padIndex);
-
- // Total number of pads.
- int getNumberOfPads();
-
- // Number of rows.
- int getNumberOfRows();
-
- // Number of columns.
- int getNumberOfColumns();
-
- // Pad height at a row.
- double getRowHeight(int rowNumber);
-
- // Width of a pad pad.
- double getPadWidth(int padIndex);
-
- // Height of pad at a pad index.
- double getPadHeight(int padIndex);
-
- // Extent of the sensitive plane:
- // [xmin,xmax,ymin,ymax] for CARTESIAN,
- // [rmin,rmax,phimin,phimax] for POLAR, and
- // [rmin,rmax,zmin,zmax] for CYLINDRICAL.
- double[] getPlaneExtent();
-
- // Row number from pad index.
- int getRowNumber(int padIndex);
-
- // Column number from pad index.
- int getColumnNumber(int padIndex);
-
- // Nearest pad from a 2D coordinate.
- int getNearestPad(double c0, double c1);
-
- // Pad center coordinate from index.
- double[] getPadCenter(int padIndex);
-
- // True if the 2D coordinate is inside the given pad.
- boolean isInsidePad(double c0, double c1, int padIndex);
-
- // True if the 2D coordinate is inside any pad.
- boolean isInsidePad(double c0, double c1);
-
- // All pads in a row.
- int[] getPadsInRow(int rowNumber);
-
- // All pads in a column.
- int[] getPadsInColumn(int columnNumber);
-
- // Left neighbor.
- int getLeftNeighbor(int padIndex);
-
- // Right Neighbor.
- int getRightNeighbor(int padIndex);
-
- // Top neighbor.
- int getTopNeighbor(int padIndex);
-
- // Bottom Neighbor.
- int getBottomNeighbor(int padIndex);
-
- // Row neighbors.
- double[] getRowNeighbors(int padIndex);
-
- // Column neighbors.
- double[] getColumnNeighbors(int padIndex);
-
- // Row and column neighbors.
- double[] getRowColumnNeighbors(int padIndex);
-
- // All 2D neighbors, including row, columm, and diagonals.
- double[] get2DNeighbors(int padIndex);
-}
GeomConverter/sandbox
diff -N RotationMatrix3D.java
--- RotationMatrix3D.java 23 Feb 2007 20:53:01 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,230 +0,0 @@
-/*
- * Hep3Rotation.java
- */
-
-//package org.lcsim.contrib.subdetector.tracker.silicon;
-
-package org.lcsim.detector.kernel;
-
-import hep.physics.vec.BasicHep3Matrix;
-import hep.physics.vec.BasicHep3Vector;
-import hep.physics.vec.Hep3Vector;
-import hep.physics.vec.BasicHep3Matrix;
-import hep.physics.vec.Hep3Matrix;
-import hep.physics.vec.VecOp;
-
-import java.io.PrintStream;
-
-/**
- *
- * @author tknelson
- */
-public class RotationMatrix3D
-{
- private BasicHep3Matrix matrix = BasicHep3Matrix.identity();
-
- // Fields
- //=======
- /**
- * Create a new Hep3Rotation containing the identify matrix.
- */
- public RotationMatrix3D()
- {}
-
- /**
- * Create a new Hep3Rotation from a 3x3 matrix.
- * @param matrix
- */
- public RotationMatrix3D(BasicHep3Matrix matrix)
- {
- setMatrix(matrix);
- }
-
- public RotationMatrix3D(Hep3Matrix matrix)
- {
- setMatrix((BasicHep3Matrix)matrix);
- }
-
- public BasicHep3Matrix getMatrix()
- {
- return this.matrix;
- }
-
- public void setMatrix(BasicHep3Matrix matrix)
- {
- this.matrix = matrix;
- }
-
- /**
- * Transform rotation using Tait-Bryan convention.
- * @param alpha
- * @param beta
- * @param gamma
- */
- public void setTaitBryan(double alpha, double beta, double gamma)
- {
- matrix = passiveTaitBryan(alpha,beta,gamma);
- }
-
- public void setPassiveEuler(double phi, double theta, double psi)
- {
- matrix.setPassiveEuler(phi,theta,psi);
- }
-
- public static BasicHep3Matrix passiveEuler(double phi, double theta, double psi)
- {
- BasicHep3Matrix matrix = new BasicHep3Matrix();
- matrix.setPassiveEuler(phi,theta,psi);
- return matrix;
- }
-
- // Static Methods
- //===============
- public static BasicHep3Matrix passiveTaitBryan(double alpha, double beta, double gamma)
- {
- return (BasicHep3Matrix)VecOp.mult(passiveZRotation(gamma),VecOp.mult(passiveYRotation(beta),passiveXRotation(alpha)));
- }
-
- public static BasicHep3Matrix passiveXRotation(double angle)
- {
- double sin = Math.sin(angle);
- double cos = Math.cos(angle);
- //Hep3Rotation rotation = new Hep3Rotation();
- BasicHep3Matrix rotation = new BasicHep3Matrix();
- rotation.setElement(0,0,cos);
- rotation.setElement(0,1,sin);
- rotation.setElement(1,0,-sin);
- rotation.setElement(1,1,cos);
- return rotation;
- }
-
- public static BasicHep3Matrix passiveYRotation(double angle)
- {
- double sin = Math.sin(angle);
- double cos = Math.cos(angle);
- //Hep3Rotation rotation = new Hep3Rotation();
- BasicHep3Matrix rotation = new BasicHep3Matrix();
-
- // FIXME: Off by 1 error! Indexed from 0.
- //rotation.setElement(1,3,-sin);
- //rotation.setElement(3,1,sin);
- //rotation.setElement(3,3,cos);
-
- // FIXME: Is this correct?
- rotation.setElement(1,1,cos);
- rotation.setElement(1,2,sin);
- rotation.setElement(2,1,-sin);
- rotation.setElement(2,2,cos);
- return rotation;
- }
-
- public static BasicHep3Matrix passiveZRotation(double angle)
- {
- double sin = Math.sin(angle);
- double cos = Math.cos(angle);
- //Hep3Rotation rotation = new Hep3Rotation();
- BasicHep3Matrix rotation = new BasicHep3Matrix();
- rotation.setElement(0,0,cos);
- rotation.setElement(0,1,sin);
- rotation.setElement(1,0,-sin);
- rotation.setElement(1,1,cos);
- return rotation;
- }
-
- public void invert()
- {
- matrix.invert();
- }
-
- public double xx()
- {
- return matrix.e(0,0);
- }
-
- public double xy()
- {
- return matrix.e(0,1);
- }
-
- public double xz()
- {
- return matrix.e(0,2);
- }
-
- public double yx()
- {
- return matrix.e(1,0);
- }
-
- public double yy()
- {
- return matrix.e(1,1);
- }
-
- public double yz()
- {
- return matrix.e(1,2);
- }
-
- public double zx()
- {
- return matrix.e(2,0);
- }
-
- public double zy()
- {
- return matrix.e(2,1);
- }
-
- public double zz()
- {
- return matrix.e(2,2);
- }
-
- Hep3Vector colX()
- {
- return new BasicHep3Vector(matrix.e(0,0),matrix.e(1,0),matrix.e(2,0));
- }
-
- Hep3Vector colY()
- {
- return new BasicHep3Vector(matrix.e(0,1),matrix.e(1,1),matrix.e(2,1));
- }
-
- Hep3Vector colZ()
- {
- return new BasicHep3Vector(matrix.e(0,2),matrix.e(1,2),matrix.e(2,2));
- }
-
- Hep3Vector rowX()
- {
- return new BasicHep3Vector(matrix.e(0,0),matrix.e(0,1),matrix.e(0,2));
- }
-
- Hep3Vector rowY()
- {
- return new BasicHep3Vector(matrix.e(1,0),matrix.e(1,1),matrix.e(1,2));
- }
-
- Hep3Vector rowZ()
- {
- return new BasicHep3Vector(matrix.e(2,0),matrix.e(2,1),matrix.e(2,2));
- }
-
- public void printOut(PrintStream ps)
- {
- ps.print("[");
- ps.println();
-
- BasicHep3Matrix m = getMatrix();
-
- for (int i=0; i<3; i++)
- {
- ps.printf("%.4f %.4f %.4f", m.e(i,0), m.e(i,1), m.e(i,2));
- ps.println();
- }
-
- ps.print("]");
- ps.println('\n');
- }
-}
\ No newline at end of file
GeomConverter/sandbox
diff -N SiTrackerBarrelLayerVolume.java
--- SiTrackerBarrelLayerVolume.java 23 Feb 2007 20:53:01 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,64 +0,0 @@
-/*
- * SiTrackerBarrelLayerVolume.java
- *
- * Created on October 9, 2006, 3:15 PM
- *
- * To change this template, choose Tools | Template Manager
- * and open the template in the editor.
- */
-
-package org.lcsim.contrib.subdetector.tracker.silicon;
-
-import org.lcsim.material.Material;
-import org.lcsim.material.MaterialManager;
-import org.lcsim.material.MaterialNotFoundException;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.jdom.Element;
-import org.jdom.JDOMException;
-
-/**
- *
- * @author tknelson
- */
-public class SiTrackerBarrelLayerVolume extends LVolume
-{
-
- public SiTrackerBarrelLayerVolume(Element layer) throws JDOMException
- {
- super(layer);
- buildFromXML(layer);
- }
-
- public void buildFromXML(Element lvolume)
- {
- // Create name
- _name = lvolume.getAttributeValue("name");
-
- // Create material
- try
- {
- _material = MaterialManager.findMaterial(lvolume.getAttributeValue("material"));
- }
- catch (MaterialNotFoundException mnfe)
- {
- throw new RuntimeException(mnfe);
- }
-
- // Create solid
- Element solid = lvolume.getChild("solid");
- String shape = solid.getAttributeValue("shape");
- if (shape=="box") _solid = new Box(solid);
- if (shape=="tubesegment") _solid = new TubeSegment(solid);
-
- // Add physical volumes
- for (Iterator i = lvolume.getChildren("pvolume").iterator(); i.hasNext();)
- {
- _pvolumes.add( new PVolume((Element)i.next()) ) ;
- }
-
- }
-
-}
\ No newline at end of file
GeomConverter/sandbox/identifier
diff -N BaseCalorimeterCell.java
--- BaseCalorimeterCell.java 23 Feb 2007 20:53:02 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,533 +0,0 @@
-package org.lcsim.identifier;
-
-import static java.lang.Math.PI;
-import static java.lang.Math.atan;
-import static java.lang.Math.sqrt;
-import static org.lcsim.geometry.subdetector.CalorimeterType.ECAL;
-import static org.lcsim.geometry.subdetector.CalorimeterType.FCAL;
-import static org.lcsim.geometry.subdetector.CalorimeterType.HCAL;
-import static org.lcsim.geometry.subdetector.CalorimeterType.LUMI;
-import static org.lcsim.geometry.subdetector.CalorimeterType.MUON;
-
-import java.util.List;
-
-import org.lcsim.event.MCParticle;
-import org.lcsim.event.EventHeader.LCMetaData;
-import org.lcsim.geometry.Calorimeter;
-import org.lcsim.geometry.IDDecoder;
-import org.lcsim.geometry.Subdetector;
-import org.lcsim.geometry.segmentation.GridXYZ;
-import org.lcsim.geometry.segmentation.ProjectiveCylinder;
-import org.lcsim.geometry.subdetector.CalorimeterType;
-import org.lcsim.spacegeom.CartesianPoint;
-import org.lcsim.spacegeom.SpacePoint;
-import org.lcsim.util.event.SamplingFractionManager;
-import org.lcsim.util.event.SubdetectorLocator;
-
-public class BaseCalorimeterCell implements CalorimeterCell
-{
- // TODO implement
- // TODO first requires DetectorElement interface
- //public DetectorElement detectorElement()
- //{
- // return null;
- //}
-
- //public int hashCode()
- //{
- // return super.hashCode();
- //}
-
- IDDecoder decoder;
- LCMetaData data;
- CalorimeterType calType;
- long id;
- double energy;
- double time;
- double gain;
- double quality;
-
- // Other possible parameters ...
- //
- // deta
- // dphi
- // dx
- // dy
- // dz
- // eta
- // phi
- // r
- // x
- // y
- // z
- // SpacePoint (covers x,y,z,r,theta,phi)
- BaseCalorimeterCell(IDDecoder decoder,
- LCMetaData data,
- long id,
- double energy,
- double time,
- double gain,
- double quality)
- {
- this.decoder = decoder;
- this.data = data;
- this.id = id;
- this.energy = energy;
- this.time = time;
- this.gain = gain;
- this.quality = quality;
- this.calType = ((Calorimeter)decoder.getSubdetector()).getCalorimeterType();
- }
-
- void setCartesian(double x, double y, double z)
- {}
-
- void setSpherical(double eta, double phi, double r)
- {}
-
- public long cellId()
- {
- return id;
- }
-
- public double quality()
- {
- return this.quality;
- }
-
- public double gain()
- {
- return this.gain;
- }
-
- public double e()
- {
- return this.energy;
- }
-
- public double time()
- {
- return this.time;
- }
-
- public int compareTo(CalorimeterCell cell)
- {
- if (cell.cellId() == cellId()) return 0; else return -1;
- }
-
- public double distanceToCenter(SpacePoint point)
- {
- double x = point.x() - x();
- double y = point.y() - y();
- double z = point.z() - z();
- return sqrt(x*x + y*y + z*z);
- }
-
- // Uses cylindrical approximation to see if within theta, phi, r
- public boolean isInside(SpacePoint point)
- {
- double x = point.x();
- double y = point.y();
- double z = point.z();
- double r = sqrt(x * x + y * y);
- double theta = atan(r / z);
- if (theta < 0) theta += PI;
- double phi = point.phi();
- return (phi > phiMin() && phi < phiMax()) &&
- (theta > etaMin() && theta < etaMax()) &&
- (r > rMin() && r < rMax());
- }
-
- public boolean isNear(SpacePoint point, double tolerance)
- {
- return distanceToCenter(point) <= tolerance;
- }
-
- // Checks if point is within 10 cm of the cell center
- static private double distance_tolerance = 100.0;
- public boolean isNear(SpacePoint point)
- {
- return isNear(point, distance_tolerance);
- }
-
- // FIXME: Only works for decoders with explicit absorber field (which isn't currently set)
- public boolean isAbsorber()
- {
- return decoder.getValue("absorber") != 0;
- }
-
- public IDDecoder decoder()
- {
- return decoder;
- }
-
- public boolean isBarrel()
- {
- return decoder.getBarrelEndcapFlag().isBarrel();
- }
-
- public boolean isEndcap()
- {
- return decoder.getBarrelEndcapFlag().isEndcap();
- }
-
- public boolean isPositiveEndcap() {
- return decoder.getBarrelEndcapFlag().isEndcapNorth();
- }
-
- public boolean isNegativeEndcap() {
- return decoder.getBarrelEndcapFlag().isEndcapSouth();
- }
-
- public boolean isECAL()
- {
- return calType == ECAL;
- }
-
- public boolean isMUON()
- {
- return calType == MUON;
- }
-
- public boolean isFCAL()
- {
- return calType == FCAL;
- }
-
- public boolean isHCAL()
- {
- return calType == HCAL;
- }
-
- public boolean isLUMI()
- {
- return calType == LUMI;
- }
-
- public boolean hasHit()
- {
- return e() != 0;
- }
-
- // FIXME: Only works for decoders with explicit phi field.
- // Non-projective segmentations should still be able
- // to calculate this based on phi from xyz.
- public int iphi()
- {
- return decoder.getValue("phi");
- }
-
- // FIXME: Only works for decoders with explicit theta field
- // Non-projective segmentations should still be able
- // to calculate this based on theta from xyz.
- public int ieta()
- {
- return decoder.getValue("eta");
- }
-
- // FIXME: Only works for decoders with explicit x field
- public int ix()
- {
- return decoder.getValue("x");
- }
-
- // FIXME: Only works for decoders with explicit y field
- public int iy()
- {
- return decoder.getValue("y");
- }
-
- // FIXME: Only works for decoders with explicit z field
- public int iz()
- {
- return decoder.getValue("z");
- }
-
- // FIXME: Only works for decoders with explicit layer field
- public int layer()
- {
- return decoder.getValue("layer");
- }
-
- // FIXME: Only works for decoders with explicit module field
- public int module()
- {
- return decoder.getValue("module");
- }
-
- // FIXME: Only works for decoders with explicit row field
- public int row()
- {
- return decoder.getValue("row");
- }
-
- // FIXME: Only works for decoders with explicit section field
- public int section()
- {
- return decoder.getValue("section");
- }
-
- // FIXME: Only works for decoders with explicit stave field
- public int stave()
- {
- return decoder.getValue("stave");
- }
-
- // FIXME: Only works for decoders with explicit column field
- public int column()
- {
- return decoder.getValue("column");
- }
-
- public double phi()
- {
- return decoder.getPhi();
- }
-
- public double phiMax()
- {
- return phi() + dphi() / 2;
- }
-
- public double phiMin()
- {
- return phi() - dphi() / 2;
- }
-
- // FIXME: Only works for ProjectiveCylinder segmentation
- public double dphi()
- {
- ProjectiveCylinder prjCyl = (ProjectiveCylinder)decoder;
- return (2 * PI) / prjCyl.getPhiBins();
- }
-
- public double p()
- {
- return sqrt(x() * x() + y() * y() + z() * z());
- }
-
- public double pt()
- {
- return sqrt(x() * x() + y() * y());
- }
-
- public double ipt()
- {
- return 1.0 / pt();
- }
-
- public SpacePoint position()
- {
- double[] parr = decoder.getPosition();
- SpacePoint p = new CartesianPoint(parr[0],parr[1],parr[2]);
- return p;
- }
-
- public double r()
- {
- return p();
- }
-
- public double rMax()
- {
- // FIXME: Just an approximation and will be wrong for non-cylindrical
- return pt() + width() / 2;
- }
-
- public double rMin()
- {
- // FIXME: Just an approximation and will be wrong for non-cylindrical
- return pt() - width() / 2;
- }
-
- public double width()
- {
- return decoder.getSubdetector().getLayering().getLayer(layer()).getSensorThickness();
- }
-
- public Subdetector subdetector()
- {
- return decoder.getSubdetector();
- }
-
- public int system()
- {
- return decoder.getSystemID();
- }
-
- public double eta()
- {
- return decoder.getTheta();
- }
-
- public double etaMax()
- {
- return eta() + deta() / 2;
- }
-
- public double etaMin()
- {
- return eta() - deta() / 2;
- }
-
- public double deta()
- {
- // FIXME: Only works for ProjectiveCylinder
- ProjectiveCylinder seg = (ProjectiveCylinder)decoder;
- return (2 * PI) / seg.getThetaBins();
- }
-
- public int tower()
- {
- return decoder.getValue("tower");
- }
-
- public double x()
- {
- return decoder.getX();
- }
-
- public double y()
- {
- return decoder.getY();
- }
-
- public double z()
- {
- return decoder.getZ();
- }
-
- // FIXME: Only works for GridXYZ
- public double dx()
- {
- return ((GridXYZ)decoder).getGridSizeX();
- }
-
- // FIXME: Only works for GridXYZ.
- public double dy()
- {
- GridXYZ seg = (GridXYZ)decoder;
- return seg.getGridSizeY();
- }
-
- // FIXME: Only works for GridXYZ
- public double dz()
- {
- GridXYZ seg = (GridXYZ)decoder;
- return seg.getGridSizeZ();
- }
-
- public double phiCircumference()
- {
- return 2 * PI * pt();
- }
-
- public double thetaCircumference()
- {
- return 2 * PI * z();
- }
-
- public double phiFraction()
- {
- return dphi() / (2 * PI);
- }
-
- public double etaFraction()
- {
- return deta() / (2 * PI);
- }
-
- public double phiArc()
- {
- return phiCircumference() * phiFraction();
- }
-
- public double etaArc()
- {
- return thetaCircumference() * etaFraction();
- }
-
- public double samplingFraction()
- {
- //return SamplingFractionManager.defaultInstance().getSamplingFraction(SubdetectorLocator.locateSubdetector(data,cellId()));
- return 1.0;
- }
-
- // http://alxr.usatlas.bnl.gov/lxr/source/atlas/Calorimeter/CaloEvent/src/CaloCell.cxx#039
- public double cosTheta()
- {
- double aux = sqrt(1. - sinTheta() * sinTheta());
- if (eta() < 0) aux = -aux;
- return aux;
- }
-
- public double cotTheta()
- {
- double aux = sqrt(1. - sinTheta() * sinTheta());
- if (eta() < 0) aux = -aux;
- return aux / sinTheta();
- }
-
- // http://www.math.com/tables/trig/identities.htm
- public double sinTheta()
- {
- double sinTh = y() / p();
- if ( p() < 0.001)
- sinTh = 0;
- return sinTh;
- }
-
- public MCParticle getMCParticle(int index)
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- public int getMCParticleCount()
- {
- // TODO Auto-generated method stub
- return 0;
- }
-
- public int getPDG(int index)
- {
- // TODO Auto-generated method stub
- return 0;
- }
-
- public List<SpacePoint> getCellPointData()
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- // should get this from a compact parameter on the detector
- public boolean isAnalog()
- {
- // TODO Auto-generated method stub
- return false;
- }
-
- // should get this from a compact parameter on the detector
- public boolean isDigital()
- {
- // TODO Auto-generated method stub
- return false;
- }
-
- public CalorimeterCellNeighborhood neighbors(CalorimeterNeighborOptions opts)
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- public boolean inCalorimeter(Calorimeter cal)
- {
- return cal.getSystemID() == decoder.getSystemID();
- }
-
- public int density()
- {
- return 0;
- }
-}
GeomConverter/sandbox/identifier
diff -N CalorimeterCell.java
--- CalorimeterCell.java 23 Feb 2007 20:53:02 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,621 +0,0 @@
-package org.lcsim.identifier;
-
-import java.util.List;
-
-import org.lcsim.event.MCParticle;
-import org.lcsim.geometry.Calorimeter;
-import org.lcsim.geometry.IDDecoder;
-import org.lcsim.geometry.Subdetector;
-import org.lcsim.spacegeom.SpacePoint;
-
-/**
- *
- * An interface to Calorimeter cell detector description and hit data.
- *
- * CalorimeterCell uses, wraps, refers to, or replaces the following classes.
- *
- * @see org.lcsim.geometry.subdetector.BarrelEndcapFlag
- * @see org.lcsim.geometry.subdetector.Calorimeter
- * @see org.lcsim.geometry.subdetector.CalorimeterType
- * @see org.lcsim.event.CalorimeterHit
- * @see org.lcsim.event.RawCalorimeterHit
- * @see org.lcsim.event.SimCalorimeterHit
- * @see org.lcsim.geometry.Subdetector
- * @see org.lcsim.geometry.IDDecoder
- * @see org.lcsim.geometry.util.BaseIDDecoder
- * @see org.lcsim.geometry.CalorimeterIDDecoder
- * @see org.lcsim.geometry.segmentation
- * @see org.lcsim.geometry.subdetector.AbstractPolyhedraCalorimeter
- * @see org.lcsim.geometry.subdetector.EcalBarrel
- * @see org.lcsim.geometry.subdetector.AbstractTestBeam
- * @see org.lcsim.geometry.subdetector.CylindricalBarrelCalorimeter
- * @see org.lcsim.geometry.subdetector.CylindricalEndcapCalorimeter
- * @see org.lcsim.geometry.subdetector.PolyhedraBarrelCalorimeter
- * @see org.lcsim.geometry.subdetector.PolyhedraEndcapCalorimeter
- * @see org.lcsim.geometry.TestBeamCalorimeter
- *
- * For convenience, CalorimeterCell cell combines functionality
- * from these classes into a single "flattened" API so that users can avoid
- * lots of subcasting and/or method chaining in order to access the information
- * required for their analysis. It also replaces calls using "magic" field
- * strings, primarily from IDDecoder, with proper interface methods.
- *
- * Measurements, such as the position, are within a global coordinate
- * system based at (0,0,0), unless otherwise noted. Indices, however,
- * may refer to a local or global system. For instance, ix would probably
- * translate to local coordinates in a readout plate, while iphi is most
- * likely a global phi index.
- *
- * @author Jeremy McCormick
- *
- * FIXME: Many of the geometrical methods in CalorimeterCell should be moved to a DD object.
- *
- */
-public interface CalorimeterCell
-//extends IDetectorElement
-{
- /**
- * 64-bit identifier of this cell
- *
- * This is used as a hash by our current system, but it isn't one, really.
- * The interface should probably include a hashCode method, too.
- *
- * @see org.lcsim.event.CalorimeterHit.getCellId()
- */
- long cellId();
-
-
- /**
- * Hash code uniquely identifying the CalorimeterCell object
- *
- * Can be based on ATLAS's IdentifierHash
- *
- * (Java provides built-in hashing, but this needs support for hash back to id.)
- *
- */
- int hashCode();
-
- /**
- * This method returns 0 if the cells have matching ids. Otherwise, it
- * returns -1.
- */
- int compareTo(CalorimeterCell cell);
-
-
- /**
- * Energy deposition in the cell (GeV)
- *
- * @see CalorimeterHit.getRawEnergy()
- */
- double e();
-
- /**
- * Shortcut for energy != 0
- */
- boolean hasHit();
-
- /**
- * Time (nanoseconds)
- *
- * @see org.lcsim.event.CalorimeterHit.getTime()
- *
- */
- double time();
-
- /**
- * Quality of signal (time only?)
- */
- double quality();
-
- /**
- * Gain (in ADC counts?)
- */
- double gain();
-
- /**
- * Center position (mm)
- *
- * @see org.lcsim.event.CalorimeterHit.getPosition()
- * @see org.lcsim.geometry.IDDecoder.getPosition()
- */
- SpacePoint position();
-
- /**
- * X at cell center (mm)
- *
- * @see org.lcsim.geometry.IDDecoder.getX()
- *
- */
- double x();
-
- /**
- * Y at cell center (mm)
- *
- * @see org.lcsim.geometry.IDDecoder.getY()
- *
- */
- double y();
-
- /**
- * Z at cell center (mm)
- *
- * @see org.lcsim.geometry.IDDecoder.getZ()
- *
- */
- double z();
-
- /**
- * Theta at cell center (radians)
- *
- * @see IDDecoder.getTheta()
- *
- */
- double eta();
-
- /**
- * Phi at cell center (radians)
- *
- * @see IDDecoder.getPhi()
- *
- */
- double phi();
-
- /**
- * Size of the cell in x dim
- */
- public double dx();
-
- /**
- * Size of the cell in y dim
- */
- public double dy();
-
- /**
- * Size of the cell in z dim
- */
- public double dz();
-
- /**
- * Angle subtended in theta (radians)
- */
- double deta();
-
- /**
- * Angle subtended in theta (radians)
- */
- double dphi();
-
- /**
- * Distance to the cell from origin
- */
- double p();
-
- /**
- * Transverse distance (XY) to the cell from origin
- */
- double pt();
-
- /**
- * Inverse of pt
- *
- * Norman: "Related to curvature. High pT gives low curvature.
- * the errors are gaussian distributed if you plot it in terms of 1/pT."
- */
- double ipt();
-
- /**
- * Corner points of the cell's solid, in a LOCAL coordinate frame
- * (as if cell was at 0,0,0).
- *
- * FIXME: Put into DE
- *
- */
- public List<SpacePoint> getCellPointData();
-
-
- /**
- * Is the given point within tolerance of the cell center? (mm)
- */
- boolean isNear(SpacePoint point, double tolerance);
-
- /**
- * Version of isNear with a default tolerance of 10 cm.
- */
- boolean isNear(SpacePoint point);
-
- /**
- * Distance to cell center from point (mm)
- */
- double distanceToCenter(SpacePoint point);
-
- /**
- * Is the given point inside this cell? (mm)
- */
- boolean isInside(SpacePoint point);
-
- /**
- * sin of eta
- */
- double sinTheta();
-
- /**
- * cosine of eta
- */
- double cosTheta();
-
- /**
- * cotangent of eta
- */
- double cotTheta();
-
- /**
- * Minimum theta of the cell (radians)
- */
- double etaMin();
-
- /**
- * Maximum theta of the cell (radians)
- */
- double etaMax();
-
- /**
- * Distance along circumference in phi (cylindrical radius) covered by this cell (mm)
- */
- double etaArc();
-
- /**
- * Fraction of theta (360 degrees) covered by this cell
- */
- double etaFraction();
-
- /**
- * Minimum phi measurement of the cell (radians)
- */
- double phiMin();
-
- /**
- * Maximum phi measurement of the cell (radians)
- */
- double phiMax();
-
- /**
- * Distance along circumference covered by this cell in phi
- */
- double phiArc();
-
- /**
- * Fraction of full phi (360) covered by this cell
- */
- double phiFraction();
-
- /**
- * Radius to the cell midpoint (mm)
- */
- double r();
-
- /**
- * Minimum radius measurement (mm)
- */
- double rMin();
-
- /**
- * Maximum radius measurement (mm)
- */
- double rMax();
-
- /**
- * Width of the cell along the layering axis (mm)
- */
- double width();
-
- /**
- * Circumference of the circle defined by r and phi (mm)
- */
- double phiCircumference();
-
- /**
- * Circumference of the circle defined by r and theta (mm)
- */
- double thetaCircumference();
-
- /**
- * X bin value
- *
- * @see org.lcsim.geometry.IDDecoder.getValue()
- * @see org.lcsim.geometry.segmentation.GridXYZ.getXBin()
- *
- */
- int ix();
-
- /**
- * Y bin value
- *
- * @see org.lcsim.geometry.IDDecoder.getValue()
- * @see org.lcsim.geometry.segmentation.GridXYZ.getYBin()
- *
- */
- int iy();
-
- /**
- * Z bin value
- *
- * @see org.lcsim.geometry.IDDecoder.getValue()
- * @see org.lcsim.geometry.segmentation.GridXYZ.getZBin()
- *
- */
- int iz();
-
- /**
- * Theta bin value
- *
- * @see org.lcsim.geometry.IDDecoder.getValue()
- *
- */
- int ieta();
-
- /**
- * Phi bin value
- *
- * @see org.lcsim.geometry.IDDecoder.getValue()
- *
- */
- int iphi();
-
- /**
- * System number uniquely identifying the cell's Subdetector
- *
- * @see org.lcsim.geometry.IDDecoder.getSystemID()
- *
- */
- int system();
-
- /**
- * Section number of the calorimeter along the z axis
- *
- * @see org.lcsim.geometry.subdetector.AbstractPolyhedraCalorimeter
- * @see org.lcsim.geometry.subdetector.EcalBarrel
- *
- * Also see Mokka's HCAL models for an example of a calorimeter with sections along z.
- *
- * section applies directly only to those calorimeters that have some subdivision of their
- * envelope in the z direction, though basic cylindrical types could "fake it" based on
- * the value of iz() or z().
- *
- */
- int section();
-
- /**
- * Module number in calorimeter section
- *
- * @see org.lcsim.geometry.subdetector.AbstractPolyhedraCalorimeter
- * @see org.lcsim.geometry.subdetector.EcalBarrel
- *
- * Usually, there are as many modules as sides in the calorimeter's polyhedra envelope.
- *
- * Only applies to realistic polyhedra calorimeters, though cylindrical types
- * could "fake it" based on the value of iphi() or phi().
- *
- */
- int module();
-
- /**
- * Stave number in the module
- *
- * @see org.lcsim.geometry.subdetector.AbstractPolyhedraCalorimeter
- * @see org.lcsim.geometry.subdetector.EcalBarrel
- *
- * Mokka's current RPC HCAL is an example of a calorimeter with multiple staves per module.
- *
- */
- int stave();
-
- /**
- * Row number in a plate of cells
- *
- * This is primarily applicable to calorimeters with planar readout volumes,
- * such as those within trapezoidal staves. It could also apply to testbeams.
- */
- int row();
-
- /**
- * Column number in a plate of cells
- *
- * This is primarily applicable to calorimeters with planar readout volumes,
- * such as those within trapezoidal staves. It could also apply to testbeams.
- *
- */
- int column();
-
- /**
- *
- * Projective tower number, spanning all the calorimeter subsystems
- *
- * FIXME: Is tower a deprecated/superceded concept?
- *
- */
- int tower();
-
- /**
- * Is the cell flagged as an absorber layer that was made sensitive for debugging?
- *
- * There are possibly other ways to know whether a cell is actually from an absorber,
- * but an interface method is the most straightforward way for user's to access this
- * information.
- *
- */
- boolean isAbsorber();
-
- /**
- * Is the cell in a barrel?
- *
- * @see org.lcsim.geometry.IDDecoder.getBarrelEndcapFlag()
- * @see org.lcsim.geometry.subdetector.BarrelEndcapFlag.isBarrel()
- *
- */
- boolean isBarrel();
-
- /**
- * Is the cell in an endcap?
- *
- * @see org.lcsim.geometry.IDDecoder.getBarrelEndcapFlag()
- * @see org.lcsim.geometry.subdetector.BarrelEndcapFlag.isEndcap()
- */
- boolean isEndcap();
-
- /**
- *
- * Is the cell in the positive endcap?
- *
- * @see org.lcsim.geometry.IDDecoder.getBarrelEndcapFlag()
- * @see org.lcsim.geometry.subdetector.BarrelEndcapFlag.isEndcapNorth()
- *
- */
- boolean isPositiveEndcap();
-
- /**
- * Is the cell in the negative endcap?
- *
- * @see org.lcsim.geometry.IDDecoder.getBarrelEndcapFlag()
- * @see org.lcsim.geometry.subdetector.BarrelEndcapFlag.isEndcapNorth()
- *
- */
- boolean isNegativeEndcap();
-
- /**
- * Is the cell from an ECAL subdetector?
- *
- * @see org.lcsim.geometry.Calorimeter.getCalorimeterType()
- * @see org.lcsim.geometry.subdetector.CalorimeterType
- *
- */
- boolean isECAL();
-
- /**
- * Is the cell from an HCAL subdetector?
- *
- * @see org.lcsim.geometry.Calorimeter.getCalorimeterType()
- * @see org.lcsim.geometry.subdetector.CalorimeterType
- *
- */
- boolean isHCAL();
-
- /**
- * Is the cell from a MUON subdetector?
- *
- * @see org.lcsim.geometry.Calorimeter.getCalorimeterType()
- * @see org.lcsim.geometry.subdetector.CalorimeterType
- *
- */
- boolean isMUON();
-
- /**
- * Is the cell from a FWD subdetector? (forward calorimeter)
- *
- * @see org.lcsim.geometry.Calorimeter.getCalorimeterType()
- * @see org.lcsim.geometry.subdetector.CalorimeterType
- *
- */
- boolean isFCAL();
-
- /**
- * Is this cell from a LUMI subdetector? (luminosity monitor)
- *
- * @see org.lcsim.geometry.Calorimeter.getCalorimeterType()
- * @see org.lcsim.geometry.subdetector.CalorimeterType
- *
- */
- boolean isLUMI();
-
- /**
- * Is this cell from the given Calorimeter?
- * It checks that the SystemIDs are the same.
- */
- boolean inCalorimeter(Calorimeter cal);
-
- /**
- * Subdetector associated with this CalorimeterCell
- *
- * @see org.lcsim.geometry.Calorimeter.getCalorimeterType()
- * @see org.lcsim.geometry.subdetector.CalorimeterType
- *
- * FIXME: This breaks the usual OO heuristic that a contained object should not
- * reference its container.
- *
- * FIXME: Need to make sure that a Subdetector reference is not stored with each CalorimeterCell.
- *
- */
- Subdetector subdetector();
-
- /**
- * IDDecoder associated with this CalorimeterCell
- *
- * @see org.lcsim.event.CalorimeterHit.getIDDecoder()
- *
- * FIXME: Need to make sure that an IDDecoder reference is not stored with each CalorimeterCell.
- *
- */
- IDDecoder decoder();
-
- /**
- * Sampling fraction associated with this cell
- *
- * FIXME: Is this an appropriate per-cell measurement or should it be external functionality only?
- *
- */
- double samplingFraction();
-
- /**
- * Is this cell from a digital calorimeter?
- */
- boolean isDigital();
-
- /**
- * Is this cell from an analog calorimeter?
- */
- boolean isAnalog();
-
- /**
- * Layer number
- *
- * @see org.lcsim.geometry.IDDecoder.getLayer()
- *
- */
- int layer();
-
- /**
- * 4-vec functionality
- *
- * @see p()
- * @see pt()
- * @see ipt()
- *
- * http://alxr.usatlas.bnl.gov/lxr/source/atlas/Event/FourMom/FourMom/P4EEtaPhiMBase.h
- *
- */
-
- /**
- * Interface to MCParticles / MCTruth
- *
- * @see org.lcsim.event.SimCalorimeterHit
- *
- * FIXME: Maybe MCParticle relationships are best done with a derived class
- * or using an external relation or map.
- *
- */
- MCParticle getMCParticle(int index);
- int getMCParticleCount();
- int getPDG(int index);
-
- /**
- * Stub for neighbor finding
- *
- * http://alxr.usatlas.bnl.gov/lxr/source/atlas/Calorimeter/CaloIdentifier/CaloIdentifier/CaloNeighbours.h
- *
- */
- CalorimeterCellNeighborhood neighbors(CalorimeterNeighborOptions opts);
-
- /**
- * Measure of cell density
- */
- int density();
-}
GeomConverter/sandbox/identifier
diff -N CalorimeterCellNeighborhood.java
--- CalorimeterCellNeighborhood.java 23 Feb 2007 20:53:02 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,6 +0,0 @@
-package org.lcsim.identifier;
-
-public interface CalorimeterCellNeighborhood
-{
-
-}
GeomConverter/sandbox/identifier
diff -N CalorimeterNeighborOptions.java
--- CalorimeterNeighborOptions.java 23 Feb 2007 20:53:02 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,23 +0,0 @@
-package org.lcsim.identifier;
-// http://alxr.usatlas.bnl.gov/lxr/source/atlas/Calorimeter/CaloIdentifier/CaloIdentifier/LArNeighbours.h
-enum CalorimeterNeighborOptions
-{ /*
- prevInPhi = 0x0001,
- nextInPhi = 0x0002,
- prevInEta = 0x0004,
- nextInEta = 0x0008,
- faces2D = prevInPhi | nextInPhi | prevInEta | nextInEta,
- corners2D = 0x0010,
- all2D = corners2D|faces2D,
- prevInSamp = 0x0020,
- nextInSamp = 0x0040,
- upAndDown = prevInSamp|nextInSamp,
- prevSubDet = 0x0080,
- nextSubDet = 0x0100,
- all3D = all2D|prevInSamp|nextInSamp|upAndDown|prevSubDet|nextSubDet,
- corners3D = 0x0200,
- all3DwithCorners = all3D|corners3D,
- prevSuperCalo = 0x0400,
- nextSuperCalo = 0x0800,
- super3D = all3D|prevSuperCalo|nextSuperCalo*/
-};
CVSspam 0.2.8