1 added + 17 modified, total 18 files
GeomConverter/src/org/lcsim/detector
diff -u -r1.28 -r1.29
--- DetectorElement.java 23 May 2007 00:09:15 -0000 1.28
+++ DetectorElement.java 25 May 2007 20:16:26 -0000 1.29
@@ -13,7 +13,7 @@
* Implementation of {@link IDetectorElement}.
*
* @author Jeremy McCormick
- * @version $Id: DetectorElement.java,v 1.28 2007/05/23 00:09:15 jeremy Exp $
+ * @version $Id: DetectorElement.java,v 1.29 2007/05/25 20:16:26 jeremy Exp $
*/
public class DetectorElement
extends Named
@@ -546,4 +546,20 @@
this.parameters = parameters;
}
+ /**
+ * Default implementation of {@link IDetectorElement#findDetectorElement(IIdentifier)}.
+ * Specific types of {@link IDetectorElement}s can override the default scheme.
+ */
+ public IDetectorElementContainer findDetectorElement(IIdentifier id)
+ {
+ IDetectorElementContainer search = DetectorElementStore.getInstance().find(id);
+ for (IDetectorElement de : search)
+ {
+ if (!isDescendant(de))
+ {
+ search.remove(de);
+ }
+ }
+ return search;
+ }
}
\ No newline at end of file
GeomConverter/src/org/lcsim/detector
diff -u -r1.6 -r1.7
--- DetectorElementContainer.java 23 May 2007 00:09:15 -0000 1.6
+++ DetectorElementContainer.java 25 May 2007 20:16:26 -0000 1.7
@@ -13,38 +13,83 @@
extends ArrayList<IDetectorElement>
implements IDetectorElementContainer
{
- public IDetectorElement get(String name)
+ public IDetectorElementContainer find(String name)
{
- IDetectorElement search=null;
+ IDetectorElementContainer matches = new DetectorElementContainer();
for ( IDetectorElement de : this )
{
- if ( de.getName().equals(name))
+ if (de.getName().equals(name))
{
- search = de;
- break;
+ matches.add(de);
}
}
- return search;
+ return matches;
}
-
- public boolean contains(String name)
+
+ public IDetectorElementContainer find(IIdentifier id)
{
- return get(name) != null;
+ IDetectorElementContainer matches = new DetectorElementContainer();
+ if (id != null)
+ {
+ for (IDetectorElement de : this)
+ {
+ if (de.getIdentifier() != null)
+ {
+ if (de.getIdentifier().equals(id))
+ {
+ matches.add(de);
+ }
+ }
+ }
+ }
+ return matches;
}
-
- public boolean add(IDetectorElement de)
+
+ public IDetectorElementContainer find(Class<? extends IDetectorElement> klass)
{
- if ( contains(de) )
+ DetectorElementContainer matches = new DetectorElementContainer();
+ for (IDetectorElement de : this)
+ {
+ for (Class checkClass : de.getClass().getClasses() )
+ {
+ if (checkClass.equals(klass))
+ {
+ matches.add(de);
+ }
+ }
+ }
+ return matches;
+ }
+
+ /**
+ * Current implementation does not allow duplicate name, id, or object.
+ */
+ public boolean add(IDetectorElement de)
+ {
+ if (de == null)
{
- throw new IllegalArgumentException("The DetectorElement <"+de.getName()+"> is already registered!");
+ throw new IllegalArgumentException("The DetectorElement argument points to null!");
}
-
- if ( get(de.getName()) != null )
+
+ if (contains(de))
{
- throw new IllegalArgumentException("There is already a DetectorElement called <"+de.getName()+"> in this container!");
+ throw new IllegalArgumentException("The DetectorElement called <"+de.getName()+"> is already registered!");
+ }
+
+ if (find(de.getName()).size() > 0)
+ {
+ throw new IllegalArgumentException("Duplicate DetectorElement name <"+de.getName()+">.");
}
- super.add(de);
+ if (de.getIdentifier() != null)
+ {
+ if (find(de.getIdentifier()).size() > 0)
+ {
+ throw new IllegalArgumentException("Duplicate identifier <"+de.getIdentifier().toString()+">.");
+ }
+ }
+
+ super.add(de);
return true;
}
}
\ No newline at end of file
GeomConverter/src/org/lcsim/detector
diff -u -r1.4 -r1.5
--- DetectorElementStore.java 23 May 2007 00:09:15 -0000 1.4
+++ DetectorElementStore.java 25 May 2007 20:16:26 -0000 1.5
@@ -22,23 +22,28 @@
return store;
}
- public IDetectorElement findDetectorElement(IIdentifier id)
- {
- return cache.get(id.getValue());
- }
-
public boolean add(IDetectorElement de)
- {
- if ( de.getIdentifier() != null )
+ {
+ IIdentifier id = de.getIdentifier();
+ if (id != null)
{
- if ( cache.get( de.getIdentifier() ) != null )
+ if (cache.get(id.getValue()) == null)
+ {
+ cache.put(id.getValue(), de);
+ }
+ else
{
- throw new IllegalArgumentException("The identifier <" + de.getIdentifier().toString() + "> on DetectorElement <" + de.getName() + "> already exists.");
+ throw new IllegalArgumentException("Already have cached DetectorElement for id <"+de.getIdentifier()+">.");
}
- cache.put(de.getIdentifier().getValue(), de);
}
- super.add(de);
return true;
}
+ public IDetectorElementContainer find(IIdentifier id)
+ {
+ IDetectorElementContainer match = new DetectorElementContainer();
+ IDetectorElement lookup = cache.get(id.getValue());
+ if (lookup != null) match.add(lookup);
+ return match;
+ }
}
\ No newline at end of file
GeomConverter/src/org/lcsim/detector
diff -u -r1.18 -r1.19
--- IDetectorElement.java 9 May 2007 00:59:57 -0000 1.18
+++ IDetectorElement.java 25 May 2007 20:16:26 -0000 1.19
@@ -26,7 +26,7 @@
*
* @author jeremym
* @author tknelson
- * @version $Id: IDetectorElement.java,v 1.18 2007/05/09 00:59:57 jeremy Exp $
+ * @version $Id: IDetectorElement.java,v 1.19 2007/05/25 20:16:26 jeremy Exp $
*/
public interface IDetectorElement
extends IIdentifiable, INamed
@@ -115,7 +115,14 @@
* or <code>null</code> if point is not contained within
* this DetectorElement or its children.
*/
- public IDetectorElement findDetectorElement(Hep3Vector globalPoint);
+ public IDetectorElement findDetectorElement(Hep3Vector globalPoint);
+
+ /**
+ * Locate a child detector element by {@link IIdentifier}.
+ * @param id The <code>IIdentifier</code> of the <code>DetectorElement</code>.
+ * @return The matching <code>IDetectorElement</code> to the ID.
+ */
+ public IDetectorElementContainer findDetectorElement(IIdentifier id);
/**
* Get the readout associated with this DetectorElement,
GeomConverter/src/org/lcsim/detector
diff -u -r1.7 -r1.8
--- IDetectorElementContainer.java 23 May 2007 00:09:15 -0000 1.7
+++ IDetectorElementContainer.java 25 May 2007 20:16:26 -0000 1.8
@@ -17,26 +17,33 @@
* @see java.util.ArrayList
*
* @author Jeremy McCormick
- * @version $Id: IDetectorElementContainer.java,v 1.7 2007/05/23 00:09:15 jeremy Exp $
+ * @version $Id: IDetectorElementContainer.java,v 1.8 2007/05/25 20:16:26 jeremy Exp $
*/
public interface IDetectorElementContainer
extends List<IDetectorElement>
-{
+{
/**
- * Get a DetectorElement by name.
+ * Find an {@link IDetectorElement} by class.
+ * @param klass The class.
+ * @return A <code>List</code> of <code>DetectorElement</code> objects with matching class.
+ */
+ public IDetectorElementContainer find(Class<? extends IDetectorElement> klass);
+
+ /**
+ * Find an {@link IDetectorElement} by name.
*
* @param name The name of the DetectorElement.
* @return The DetectorElement matching name or
* <code>null</code> if none exists.
*/
- public IDetectorElement get(String name);
+ public IDetectorElementContainer find(String name);
/**
- * True if contains a DetectorElement with matching name.
+ * Find an {@link IDetectorElement} by {@link IIdentifier}.
*
- * @param name The name of the DetectorElement.
- * @return True if contains a DetectorElement with
- * matching name; False if it does not.
+ * @param id The id of the DetectorElement.
+ * @return The DetectorElement matching id or
+ * <code>null</code> if none exists.
*/
- public boolean contains(String name);
-}
+ public IDetectorElementContainer find(IIdentifier id);
+}
\ No newline at end of file
GeomConverter/src/org/lcsim/detector
diff -u -r1.4 -r1.5
--- IDetectorElementStore.java 23 May 2007 00:09:15 -0000 1.4
+++ IDetectorElementStore.java 25 May 2007 20:16:26 -0000 1.5
@@ -1,19 +1,15 @@
package org.lcsim.detector;
-import org.lcsim.detector.identifier.IIdentifier;
-
/**
- * The {@link IDetectorElementStore} is a registry of
- * all {@link IDetectorElement}s in the current detector.
+ * The {@link IDetectorElementStore} is an {@link IDetectorElementContainer}
+ * containing all {@link IDetectorElement}s in the current detector.
*
* @see IDetectorElement
* @see IObjectStore
*
* @author jeremym
- * @version $Id: IDetectorElementStore.java,v 1.4 2007/05/23 00:09:15 jeremy Exp $
+ * @version $Id: IDetectorElementStore.java,v 1.5 2007/05/25 20:16:26 jeremy Exp $
*/
public interface IDetectorElementStore
extends IDetectorElementContainer
-{
- public IDetectorElement findDetectorElement(IIdentifier id);
-}
\ No newline at end of file
+{}
\ No newline at end of file
GeomConverter/src/org/lcsim/detector
diff -u -r1.1 -r1.2
--- IParametersStore.java 22 May 2007 20:02:03 -0000 1.1
+++ IParametersStore.java 25 May 2007 20:16:26 -0000 1.2
@@ -1,13 +1,18 @@
package org.lcsim.detector;
/**
- * Access to {@link IParameter} objects for the current detector.
+ * Access to all {@link IParameters} objects for the current detector.
*
* @author Jeremy McCormick
- * @version $Id: IParametersStore.java,v 1.1 2007/05/22 20:02:03 jeremy Exp $
+ * @version $Id: IParametersStore.java,v 1.2 2007/05/25 20:16:26 jeremy Exp $
*/
public interface IParametersStore
extends IObjectStore<IParameters>
{
- public IParameters getParameters(String name);
+ /**
+ * Get a set of parameters by name.
+ * @param name The name of the parameter set.
+ * @return The parameters.
+ */
+ public IParameters get(String name);
}
\ No newline at end of file
GeomConverter/src/org/lcsim/detector
diff -u -r1.1 -r1.2
--- ParametersStore.java 22 May 2007 20:02:03 -0000 1.1
+++ ParametersStore.java 25 May 2007 20:16:26 -0000 1.2
@@ -1,10 +1,10 @@
package org.lcsim.detector;
/**
- * Implementation of [log in to unmask]
+ * Implementation of {@link IParametersStore}.
*
* @author Jeremy McCormick
- * @version $Id: ParametersStore.java,v 1.1 2007/05/22 20:02:03 jeremy Exp $
+ * @version $Id: ParametersStore.java,v 1.2 2007/05/25 20:16:26 jeremy Exp $
*/
public class ParametersStore
extends ObjectStore<IParameters>
@@ -20,7 +20,7 @@
return store;
}
- public IParameters getParameters(String name)
+ public IParameters get(String name)
{
for (IParameters p : this)
{
GeomConverter/src/org/lcsim/detector/converter
diff -u -r1.2 -r1.3
--- XMLConverter.java 22 May 2007 20:02:04 -0000 1.2
+++ XMLConverter.java 25 May 2007 20:16:26 -0000 1.3
@@ -6,9 +6,7 @@
/**
*
* A generic interface for converting from JDOM/XML
- * to runtime objects. The method {@link #convert(Element)}
- * will be called for all elements with a name that matchs
- * {@link #getElementName()}.
+ * to runtime objects.
*
* The activate method does not return a specific type. It
* can create one or more Java objects, but these must be
GeomConverter/src/org/lcsim/detector/converter/compact
diff -u -r1.18 -r1.19
--- DetectorConverter.java 22 May 2007 20:02:04 -0000 1.18
+++ DetectorConverter.java 25 May 2007 20:16:26 -0000 1.19
@@ -165,7 +165,7 @@
((DetectorElement)subdet.getDetectorElement()).setIdentifierHelper( new IdentifierHelper( iddict ) );
// Set the Parameters.
- ((DetectorElement)subdet.getDetectorElement()).setParameters(ParametersStore.getInstance().getParameters(subdet.getName()));
+ ((DetectorElement)subdet.getDetectorElement()).setParameters(ParametersStore.getInstance().get(subdet.getName()));
}
}
}
GeomConverter/src/org/lcsim/detector/converter/compact
diff -u -r1.18 -r1.19
--- SiTrackerBarrelConverter.java 23 May 2007 00:09:16 -0000 1.18
+++ SiTrackerBarrelConverter.java 25 May 2007 20:16:26 -0000 1.19
@@ -10,7 +10,6 @@
import org.jdom.DataConversionException;
import org.jdom.Element;
-import org.lcsim.detector.DetectorElement;
import org.lcsim.detector.IDetectorElement;
import org.lcsim.detector.ILogicalVolume;
import org.lcsim.detector.IPhysicalVolume;
@@ -30,6 +29,7 @@
import org.lcsim.detector.solids.ISolid;
import org.lcsim.detector.solids.Tube;
import org.lcsim.detector.tracker.silicon.ChargeCarrier;
+import org.lcsim.detector.tracker.silicon.DeSiTrackerBarrel;
import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.detector.tracker.silicon.SiStrips;
import org.lcsim.detector.tracker.silicon.SiTrackerBarrelLayer;
@@ -44,7 +44,7 @@
{
public void convert( Subdetector subdet, Detector detector)
{
- subdet.setDetectorElement( new DeSubdetector( detector, subdet ) );
+ subdet.setDetectorElement( new DeSiTrackerBarrel( subdet.getName(), detector.getDetectorElement()));
Map<String, ILogicalVolume> modules = buildModules(subdet);
GeomConverter/src/org/lcsim/detector/identifier
diff -u -r1.5 -r1.6
--- IIdentifiable.java 22 May 2007 20:02:05 -0000 1.5
+++ IIdentifiable.java 25 May 2007 20:16:26 -0000 1.6
@@ -2,11 +2,11 @@
/**
* A mix-in interface for objects that have an associated {@link IIdentifier},
- * corresponding {@IExpandedIdentifier}, and an {@link IIdentifierHelper}
+ * corresponding {@link IExpandedIdentifier}, and an {@link IIdentifierHelper}
* for performing pack and unpack operations on these objects.
*
* @author Jeremy McCormick
- * @version $Id: IIdentifiable.java,v 1.5 2007/05/22 20:02:05 jeremy Exp $
+ * @version $Id: IIdentifiable.java,v 1.6 2007/05/25 20:16:26 jeremy Exp $
*/
public interface IIdentifiable
{
GeomConverter/src/org/lcsim/detector/identifier
diff -u -r1.5 -r1.6
--- IIdentifierDictionary.java 22 May 2007 20:02:05 -0000 1.5
+++ IIdentifierDictionary.java 25 May 2007 20:16:26 -0000 1.6
@@ -3,11 +3,11 @@
import java.util.Map;
/**
- * Holds an ordered and mapped list of {@IIdentifierField} objects
- * that define the fields of an [log in to unmask]
+ * Holds an ordered and mapped list of {@link IIdentifierField} objects
+ * that define the fields of an {@link IIdentifier}.
*
* @author Jeremy McCormick
- * @version $Id: IIdentifierDictionary.java,v 1.5 2007/05/22 20:02:05 jeremy Exp $
+ * @version $Id: IIdentifierDictionary.java,v 1.6 2007/05/25 20:16:26 jeremy Exp $
*/
public interface IIdentifierDictionary
{
GeomConverter/src/org/lcsim/detector/identifier
diff -u -r1.4 -r1.5
--- IIdentifierField.java 19 May 2007 00:39:51 -0000 1.4
+++ IIdentifierField.java 25 May 2007 20:16:26 -0000 1.5
@@ -6,7 +6,7 @@
* an ordered collection of these fields.
*
* @author Jeremy McCormick
- * @version $Id: IIdentifierField.java,v 1.4 2007/05/19 00:39:51 jeremy Exp $
+ * @version $Id: IIdentifierField.java,v 1.5 2007/05/25 20:16:26 jeremy Exp $
*/
public interface IIdentifierField
{
@@ -74,8 +74,8 @@
/**
* Pack a single value of this field into a {@link IIdentifier}.
*
- * @param value
- * @return
+ * @param value A value to pack into this field.
+ * @return An identifier with the packed value.
*/
public IIdentifier pack( int value );
@@ -93,7 +93,7 @@
*
* @param id The <code>ExpandedIdentifier</code>.
* @return The field value.
- * @throw IllegalArgumentException if field index is not valid for the id.
+ * @throws IllegalArgumentException if field index is not valid for the id.
*/
public int getFieldValue( IExpandedIdentifier id );
}
\ No newline at end of file
GeomConverter/src/org/lcsim/detector/tracker/silicon
diff -N DeSiTrackerBarrel.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ DeSiTrackerBarrel.java 25 May 2007 20:16:27 -0000 1.1
@@ -0,0 +1,40 @@
+package org.lcsim.detector.tracker.silicon;
+
+import org.lcsim.detector.DetectorElement;
+import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.IDetectorElementContainer;
+import org.lcsim.detector.identifier.IExpandedIdentifier;
+import org.lcsim.detector.identifier.IIdentifier;
+import org.lcsim.detector.identifier.IIdentifierHelper;
+
+/**
+ * A {@link IDetectorElement} for SiTrackerBarrel.
+ *
+ * @author Jeremy McCormick
+ * @version $Id: DeSiTrackerBarrel.java,v 1.1 2007/05/25 20:16:27 jeremy Exp $
+ */
+
+public class DeSiTrackerBarrel
+extends DetectorElement
+{
+ public DeSiTrackerBarrel(String name, IDetectorElement parent)
+ {
+ super(name, parent);
+ }
+
+ public IDetectorElementContainer findDetectorElement(IIdentifier id)
+ {
+ // Get the IdentifierHelper.
+ IIdentifierHelper helper = getIdentifierHelper();
+
+ // Make an expanded identifier containing only geometric fields.
+ IExpandedIdentifier expId =
+ helper.unpack(id, 0, helper.getIdentifierDictionary().getFieldIndex("side") - 1);
+
+ // Repack the Identifier.
+ IIdentifier geomId = helper.pack(expId);
+
+ // Use super method once non-geometric fields have been stripped out.
+ return super.findDetectorElement(geomId);
+ }
+}
\ No newline at end of file
GeomConverter/src/org/lcsim/detector/tracker/silicon
diff -u -r1.8 -r1.9
--- SiSensor.java 23 May 2007 00:09:16 -0000 1.8
+++ SiSensor.java 25 May 2007 20:16:27 -0000 1.9
@@ -513,10 +513,9 @@
/**
* Make an {@link IIdentifier} for a given strip number and side number.
*
- * @author Jeremy McCormick
- * @param stripNumber The strip number, which should be from 1 to nstrips-1.
+ * @param stripNumber The strip number, which should be from 1 to nstrips - 1.
* @param sideNumber The side number, which should be 1 or -1.
- * @return A 64-bit Identifier for the strip.
+ * @return A 64-bit A packed id for the strip.
*/
public IIdentifier makeStripId( int stripNumber, int sideNumber )
{
GeomConverter/test/org/lcsim/detector
diff -u -r1.13 -r1.14
--- SimpleDetectorTest.java 16 May 2007 23:27:38 -0000 1.13
+++ SimpleDetectorTest.java 25 May 2007 20:16:27 -0000 1.14
@@ -300,7 +300,6 @@
{
DummyDE(IPhysicalVolumePath support)
{
- //super("dummy",null,support,null);
super("dummy");
setSupport(support);
}
GeomConverter/test/org/lcsim/detector/converter/compact
diff -u -r1.10 -r1.11
--- DetectorConverterTest.java 9 May 2007 00:59:59 -0000 1.10
+++ DetectorConverterTest.java 25 May 2007 20:16:27 -0000 1.11
@@ -11,6 +11,7 @@
import junit.framework.TestCase;
import junit.framework.TestSuite;
+import org.lcsim.detector.DetectorElementContainer;
import org.lcsim.detector.IDetectorElement;
import org.lcsim.detector.IGeometryInfo;
import org.lcsim.detector.IPhysicalVolume;
@@ -73,11 +74,13 @@
// Check for top-level DEs that should have been built.
for ( String de : des )
{
+ IDetectorElement search = deDetector.getChildren().find(de).get(0);
+
// Check that the DE was created.
- assertTrue("The expected DetectorElement <" + de + "> is missing!", deDetector.getChildren().get(de) != null);
+ assertTrue("The expected DetectorElement <" + de + "> is missing!", search != null);
- // Check that the DeDetector is findable from this DE.
- List<DeDetector> detectorSearch = deDetector.getChildren().get(de).findAncestors(DeDetector.class);
+ // Check that the DeDetector is findable from this node.
+ List<DeDetector> detectorSearch = search.findAncestors(DeDetector.class);
assertTrue( detectorSearch.size() == 1);
assertTrue( detectorSearch.get(0).getName().equals("test_detector"));
}
CVSspam 0.2.8