Print

Print


Commit in GeomConverter/sandbox on MAIN
detector/IDigitContainer.java+7added 1.1
        /IMaterialMixture.java+14added 1.1
        /IDetectorElement.java+97-281.1 -> 1.2
        /IPosition.java+1-101.1 -> 1.2
        /IReadout.java+2-21.1 -> 1.2
Box.java-661.1 removed
PadLayout2D.java-1001.1 removed
RotationMatrix3D.java-2301.1 removed
SiTrackerBarrelLayerVolume.java-641.1 removed
identifier/BaseCalorimeterCell.java-5331.1 removed
          /CalorimeterCell.java-6211.1 removed
          /CalorimeterCellNeighborhood.java-61.1 removed
          /CalorimeterNeighborOptions.java-231.1 removed
+121-1683
2 added + 8 removed + 3 modified, total 13 files
JM: sandbox cleanup

GeomConverter/sandbox/detector
IDigitContainer.java added at 1.1
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
IMaterialMixture.java added at 1.1
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
IDetectorElement.java 1.1 -> 1.2
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
IPosition.java 1.1 -> 1.2
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
IReadout.java 1.1 -> 1.2
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
Box.java removed after 1.1
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
PadLayout2D.java removed after 1.1
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
RotationMatrix3D.java removed after 1.1
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
SiTrackerBarrelLayerVolume.java removed after 1.1
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
BaseCalorimeterCell.java removed after 1.1
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
CalorimeterCell.java removed after 1.1
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
CalorimeterCellNeighborhood.java removed after 1.1
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
CalorimeterNeighborOptions.java removed after 1.1
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