Print

Print


Commit in lcsim/src/org/lcsim/digisim on MAIN
DigiSimDriver.java+29-51.10 -> 1.11
DigiSimMain.java+107-1001.7 -> 1.8
+136-105
2 modified files
GL: Enable DigiSim to be used from JAS3

lcsim/src/org/lcsim/digisim
DigiSimDriver.java 1.10 -> 1.11
diff -u -r1.10 -r1.11
--- DigiSimDriver.java	18 Jul 2005 19:18:25 -0000	1.10
+++ DigiSimDriver.java	26 Jul 2005 23:58:41 -0000	1.11
@@ -13,7 +13,7 @@
  * both parameters and events from the framework.
  *
  * @author Guilherme Lima
- * @version $Id: DigiSimDriver.java,v 1.10 2005/07/18 19:18:25 tonyj Exp $
+ * @version $Id: DigiSimDriver.java,v 1.11 2005/07/26 23:58:41 lima Exp $
  */
 public class DigiSimDriver extends Driver {
 
@@ -28,7 +28,10 @@
     }
 
     /** Private constructor, not to be used */
-    private DigiSimDriver() { }
+    public DigiSimDriver() {
+      _name = new String("");
+      _digitizers = new Vector<Digitizer>();
+    }
 
     /**
      * Driver initialization.  Instantiates and initializes all
@@ -36,11 +39,14 @@
      * information, are stored in the same configuration file
      */
     public void init() {
-        // FIXME: This should be using conditions system
+	// FIXME: This should be using conditions system
+// 	System.out.println("DSDriver.init(): _name=<"+_name+">");
+	if(_name.equals("")) return;
+
 	// open released config file from lcsim.jar
-  	ConfigReader file = new ConfigReader(DigiSimDriver.class.getResourceAsStream(_name+".steer"));
+   	ConfigReader file = new ConfigReader(DigiSimDriver.class.getResourceAsStream(_name+".steer"));
 	// use local config file
-//      ConfigReader file = new ConfigReader(_name+".steer");
+// 	ConfigReader file = new ConfigReader(_name+".steer");
 
 	// read config file
 	Map<String,Vector<String>> sections = file.digiSimParse();
@@ -83,6 +89,12 @@
 
     /** Called for every event - the event loop */
     protected void process( EventHeader event ) {
+
+	if(_name.equals("")) {
+	    _name = event.getDetectorName();
+	    this.init();
+	}
+
 // 	System.out.println("DigiSimDriver::process()  "+ _name
 // 			   +" in event "+ evt.getEventNumber()
 // 			   +" (run "+ evt.getRunNumber() + ") ");
@@ -119,4 +131,16 @@
     /** modifiers */
     private Vector<Digitizer> _digitizers;
 //     private String _digisimURL = "http://nicadd.niu.edu/digisim/config/";
+
+    // static registration globals
+    private static boolean _gaindisc = GainDiscrimination.registerMe();
+    private static boolean _gaussnoise = GaussianNoise.registerMe();
+    private static boolean _exponoise = ExponentialNoise.registerMe();
+    private static boolean _hotcell = HotCell.registerMe();
+    private static boolean _deadcell = DeadCell.registerMe();
+    private static boolean _sipmsatur = SiPMSaturation.registerMe();
+    private static boolean _xtalk = Crosstalk.registerMe();
+    private static boolean _absdisc = AbsValueDiscrimination.registerMe();
+    private static boolean _gain = SmearedGain.registerMe();
+    private static boolean _timing = SmearedTiming.registerMe();
 }

lcsim/src/org/lcsim/digisim
DigiSimMain.java 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- DigiSimMain.java	20 Jul 2005 21:14:48 -0000	1.7
+++ DigiSimMain.java	26 Jul 2005 23:58:41 -0000	1.8
@@ -18,20 +18,33 @@
 import org.lcsim.digisim.DigiSimDriver;
 
 /**
- * The main driver for digitization simulation.
+ * The main driver for standalone digitization simulation
  *
  * @author Guilherme Lima
- * @version $Id: DigiSimMain.java,v 1.7 2005/07/20 21:14:48 lima Exp $
+ * @version $Id: DigiSimMain.java,v 1.8 2005/07/26 23:58:41 lima Exp $
  */
 public class DigiSimMain extends Driver {
 
   public DigiSimMain() {
+      this( new String[0] );
+  }
+
+  public DigiSimMain(String[] args) {
 
     // instantiate all needed drivers
-    String name = "SDJan03";
     _hitmgr = new CalHitMapDriver();
-    _digi = new DigiSimDriver(name);
+
+    if( args.length>0 ) {
+	// Config file given in CL.  Pass it to the driver
+	String name = args[0];
+	_digi = new DigiSimDriver(name);
+    }
+    else {
+	_digi = new DigiSimDriver();
+    }
+
     _calhit = new CalorimeterHitsDriver();
+
     _nevt = 0;
 
     // initialize data provider and digitizers
@@ -40,6 +53,13 @@
     _calhit.init();
   }
 
+    /** Debugging printout control */
+    public void setDebug() {
+	// format: "Digitizer:Modifier"
+//  	_digi.setDebug("EcalEndcapDigitizer:EMECcrosstalk", 1);
+//     	_digi.setDebug("HcalBarrDigitizer:HBExpoNoise", 1);
+    }
+
   //
   protected void process(final EventHeader event) {
     // event counter
@@ -59,105 +79,102 @@
 // 		       +" EM="+emhits.size()+", HAD="+hadhits.size());
 
     //.. test digisim works
-    // using fixed factors, compare sim and raw hits
     try {
+      // using fixed factors, compare sim and raw hits
       List<LCRelation> raw2simLinks
 	  = event.get( LCRelation.class, "EcalBarrRaw2sim" );
       for( LCRelation rel : raw2simLinks ) {
 	RawCalorimeterHit rawhit = (RawCalorimeterHit)rel.getFrom();
 	SimCalorimeterHit simhit = (SimCalorimeterHit)rel.getTo();
-	int simE = (int)(simhit.getEnergy()*1000000.0);
+	int simE = (int)(simhit.getEnergy()*100000000.0);
 	assert simE == rawhit.getAmplitude()
 	    : "Discrepancy on EcalBarr: simE=" + simE
 	    + ", rawE=" + rawhit.getAmplitude() ;
       }
+
+//       checkCrosstalk(event);
     }
     catch(IllegalArgumentException e) {
 	// no problem if data is not there
     }
+  }
 
-    // Test crosstalk modifier: Use fixed 10% values, check neighbours,
-    // weights, etc.
-    try {
-      List<SimCalorimeterHit> simhits
-	  = event.get(SimCalorimeterHit.class, "EcalEndcapHits");
-      List<RawCalorimeterHit> rawhits
-	  = event.get(RawCalorimeterHit.class, "EcalEndcapRawHits");
-      List<LCRelation> raw2simLinks
-	  = event.get(LCRelation.class, "EcalEndcapRaw2sim");
-
-      System.out.println("Checking crosstalk for EcalEndcaps...");
-      System.out.println("# hits:  sim="+( simhits==null? 0 : simhits.size() )
-			 +", raw="      +( rawhits==null? 0 : rawhits.size() )
-			 +" -  #links="+( raw2simLinks==null? 0: raw2simLinks.size()));
-
-      Map<Long,Double> weightMap = new HashMap<Long,Double>();
-      int ilink = 0;
-      for( LCRelation rel : raw2simLinks ) {
-	++ilink;
-	RawCalorimeterHit rawhit = (RawCalorimeterHit)rel.getFrom();
-	SimCalorimeterHit simhit = (SimCalorimeterHit)rel.getTo();
-
-	Long rawid = new Long(rawhit.getCellID());
-	long simid = (simhit!=null ? simhit.getCellID() : 0);
-	Double temp = weightMap.get(rawid);
-	if(temp==null) {
-	  temp = new Double( rel.getWeight() );
-	  weightMap.put( rawid, temp );
-	}
-	else {
-	  temp += rel.getWeight();
+    private void checkCrosstalk(final EventHeader event) {
+      // Test crosstalk modifier: Use fixed 10% values, check neighbours,
+      // weights, etc.
+      try {
+	List<SimCalorimeterHit> simhits
+	    = event.get(SimCalorimeterHit.class, "EcalEndcapHits");
+	List<RawCalorimeterHit> rawhits
+	    = event.get(RawCalorimeterHit.class, "EcalEndcapRawHits");
+	List<LCRelation> raw2simLinks
+	    = event.get(LCRelation.class, "EcalEndcapRaw2sim");
+
+	System.out.println("Checking crosstalk for EcalEndcaps...");
+	System.out.println("# hits:  sim="+( simhits==null? 0 : simhits.size() )
+			   +", raw="      +( rawhits==null? 0 : rawhits.size() )
+			   +" -  #links="+( raw2simLinks==null? 0: raw2simLinks.size()));
+
+	Map<Long,Double> weightMap = new HashMap<Long,Double>();
+	int ilink = 0;
+	for( LCRelation rel : raw2simLinks ) {
+	  ++ilink;
+	  RawCalorimeterHit rawhit = (RawCalorimeterHit)rel.getFrom();
+	  SimCalorimeterHit simhit = (SimCalorimeterHit)rel.getTo();
+
+	  Long rawid = new Long(rawhit.getCellID());
+	  long simid = (simhit!=null ? simhit.getCellID() : 0);
+	  Double temp = weightMap.get(rawid);
+	  if(temp==null) {
+	    temp = new Double( rel.getWeight() );
+	    weightMap.put( rawid, temp );
+	  }
+	  else {
+	      temp += rel.getWeight();
 //        double newval = temp.doubleValue() + rel.getWeight();
 //        weightMap.put( new Long(rawid), new Double(rel.getWeight()) );
-	}
+	  }
 
-	// discard links where simid==rawid or simid==zero
-	if(rawid==simid) {
-	  System.out.println("link "+ilink+" not crosstalk.");
-	  continue;
-	}
-	if(simid==0.0)   {
-	  System.out.println("link "+ilink+", simid=zero.");
-	  continue;
-	}
+	  // discard links where simid==rawid or simid==zero
+	  if(rawid==simid) {
+// 	  System.out.println("link "+ilink+" not crosstalk.");
+	    continue;
+	  }
+	  if(simid==0.0)   {
+// 	  System.out.println("link "+ilink+", simid=zero.");
+	    continue;
+	  }
 
-	// make sure sim,raw cells are good neighbors
+	  // make sure sim,raw cells are good neighbors
 //       IDDecoder decoder = new IDDecoder();
-	assert ((simid & 0x7f) == (rawid & 0x7f))
-	  : "link "+ilink+", layer discrepancy: "+ simid +" "+rawid;
-	assert ((simid & 0x1f80) == (rawid & 0x1f80))
-	  : "link "+ilink+", system+barrel discrepancy: "+ simid +" "+rawid;
-
-	// check theta,phi distance
-	int rawthe = (int)(rawid >> 32) & 0x7ff;
-	int simthe = (int)(simid >> 32) & 0x7ff;
-	int rawphi = (int)(rawid >> 43) & 0x7ff;
-	int simphi = (int)(simid >> 43) & 0x7ff;
-	int delthe = rawthe - simthe + 1;
-	int delphi = rawphi - simphi + 1;
-	assert ((delthe>=0) && (delthe<=2))
-	  : "link "+ilink+", theta discrepancy: "+ simid +" "+rawid;
-	assert ((delphi>=0) && (delphi<=2))
-	  : "link "+ilink+", phi discrepancy: "+ simid +" "+rawid;
-
-	int simE = (int)(simhit.getEnergy()*1000000.0);
-	int rawE = (int)(rawhit.getAmplitude());
-	System.out.println("X-check: simid="+Long.toHexString(simid)
-			 +", simE=" + simE
-			 + " - RawID="+Long.toHexString(rawid.longValue())
-			 +", rawE=" + rawE );
+	  assert ((simid & 0x7f) == (rawid & 0x7f))
+	    : "link "+ilink+", layer discrepancy: "+ simid +" "+rawid;
+	  assert ((simid & 0x1f80) == (rawid & 0x1f80))
+	    : "link "+ilink+", system+barrel discrepancy: "+ simid +" "+rawid;
+
+	  // check theta,phi distance
+	  int rawthe = (int)(rawid >> 32) & 0x7ff;
+	  int simthe = (int)(simid >> 32) & 0x7ff;
+	  int rawphi = (int)(rawid >> 43) & 0x7ff;
+	  int simphi = (int)(simid >> 43) & 0x7ff;
+	  int delthe = rawthe - simthe + 1;
+	  int delphi = rawphi - simphi + 1;
+	  assert ((delthe>=0) && (delthe<=2))
+	      : "link "+ilink+", theta discrepancy: "+ simid +" "+rawid;
+	  assert ((delphi>=0) && (delphi<=2))
+	      : "link "+ilink+", phi discrepancy: "+ simid +" "+rawid;
+
+	  int simE = (int)(simhit.getEnergy()*1000000.0);
+	  int rawE = (int)(rawhit.getAmplitude());
+	  System.out.println("X-check: simid="+Long.toHexString(simid)
+			     +", simE=" + simE
+			     + " - RawID="+Long.toHexString(rawid.longValue())
+			     +", rawE=" + rawE );
+	}
+      }
+      catch(IllegalArgumentException e) {
+	  // a collection requested does not exist in current event
       }
-    }
-    catch(IllegalArgumentException e) {
-	// a collection requested does not exist in current event
-    }
-  }
-
-    /** Debugging printout control */
-    public void setDebug() {
-	// format: "Digitizer:Modifier"
-//  	_digi.setDebug("EcalEndcapDigitizer:EMECcrosstalk", 1);
-//     	_digi.setDebug("HcalBarrDigitizer:HBExpoNoise", 1);
     }
 
     //***** FIELDS *****
@@ -169,18 +186,6 @@
     private DigiSimDriver _digi;
     private CalorimeterHitsDriver _calhit;
 
-    // static registration globals
-    private static boolean _gaindisc = GainDiscrimination.registerMe();
-    private static boolean _gaussnoise = GaussianNoise.registerMe();
-    private static boolean _exponoise = ExponentialNoise.registerMe();
-    private static boolean _hotcell = HotCell.registerMe();
-    private static boolean _deadcell = DeadCell.registerMe();
-    private static boolean _sipmsatur = SiPMSaturation.registerMe();
-    private static boolean _xtalk = Crosstalk.registerMe();
-    private static boolean _absdisc = AbsValueDiscrimination.registerMe();
-    private static boolean _gain = SmearedGain.registerMe();
-    private static boolean _timing = SmearedTiming.registerMe();
-
     //***** MAIN ENTRY POINT *****
 
     public static void main(String[] args) throws Exception {
@@ -191,22 +196,24 @@
       // setup input/outfile files
       File input = new File("inputfile");
       loop.setLCIORecordSource(input);
-      File output = new File("digisim.slcio");
 
       // drivers needed
-      DigiSimMain digidriver = new DigiSimMain();
-      loop.add( digidriver );
+      DigiSimMain digimain = new DigiSimMain(args);
+      loop.add( digimain );
+
+      // output file
+      File output = new File("digisim.slcio");
       loop.add( new LCIODriver(output) );
 
       // debugging control
-      digidriver.setDebug();
+      digimain.setDebug();
 
       // event loop
-      loop.loop(10); // -1 for all
+      loop.loop(-1); // -1 for all
       loop.dispose();
 
       org.lcsim.util.aida.AIDA.defaultInstance().saveAs("myhistos.aida");
-      System.out.println("Analyzed "+digidriver._nevt+" events");
+      System.out.println("Analyzed "+digimain._nevt+" events");
     }
 
     private void log(String text) {
CVSspam 0.2.8