Print

Print


Commit in lcsim/src/org/lcsim/recon/cluster/density on MAIN
DirectedTreeClusterer.java+3-41.3 -> 1.4
DTreeAnalysis.java+81-541.3 -> 1.4
+84-58
2 modified files
GL: add endcap clustering

lcsim/src/org/lcsim/recon/cluster/density
DirectedTreeClusterer.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- DirectedTreeClusterer.java	27 Dec 2005 16:33:50 -0000	1.3
+++ DirectedTreeClusterer.java	30 Dec 2005 22:02:58 -0000	1.4
@@ -60,11 +60,11 @@
         if(_runPar.ClusterSeparately()) {
             _calType = "EM";
 	    processCollection(event, embName, embhitmap);
-//  	    processCollection(event, emeName, emehitmap);
+  	    processCollection(event, emeName, emehitmap);
 
             _calType = "HD";
 	    processCollection(event, hdbName, hdbhitmap);
-//  	    processCollection(event, hdeName, hdehitmap);
+  	    processCollection(event, hdeName, hdehitmap);
         }
         else {
 	  assert false : "Sorry, single-pass clustering unavailable for now.";
@@ -305,7 +305,6 @@
 	  caTrees.get(i).add(ihit);
 	  for(int j=0;j<startingPoints.size();j++) {
             CalorimeterHit parentHit = branches.get(j).lastElement();
-//	      if(_evtnum==81) System.out.println(myhit1+" "+parentHit+" "+startingPoints.size()+" "+j);
 	    if(parentHit.equals(ihit)) {
 	      for( CalorimeterHit jhit : branches.get(j) ) {
 		if(!caTrees.get(i).contains(jhit)){
@@ -370,7 +369,7 @@
 	  recoClusColl = clusBuilder.makeClusters( trees );
       if (recoClusColl.size() > 0) {
 	  String newName = new String(colName+"DTreeClusters");
-	  event.put( newName, recoClusColl );
+	  event.put( newName, recoClusColl, Cluster.class, (1<<31) );
       }
 
 //       int nhits = hitmap.size();

lcsim/src/org/lcsim/recon/cluster/density
DTreeAnalysis.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- DTreeAnalysis.java	27 Dec 2005 16:33:50 -0000	1.3
+++ DTreeAnalysis.java	30 Dec 2005 22:02:58 -0000	1.4
@@ -21,7 +21,7 @@
 
 public class DTreeAnalysis extends Driver {
 
-    private int _debug=0;
+    private int _debug=1;
 
     public DTreeAnalysis() {
         _runPar = RunControlParameters.getInstance();
@@ -65,12 +65,16 @@
 
         if(_runPar.ClusterSeparately()){
             _calType = "EM";
+	    _nClusEM = 0;  _nMCClusEM = 0;
  	    processCollection(event,embName,embhitmap);
-//  	    processCollection(event,emeName,emehitmap);
+  	    processCollection(event,emeName,emehitmap);
 
             _calType = "HD";
+	    _nClusHD = 0; _nMCClusHD = 0;
  	    processCollection(event,hdbName,hdbhitmap);
-//  	    processCollection(event,hdeName,hdehitmap);
+  	    processCollection(event,hdeName,hdehitmap);
+
+	    finalizeTuple();
         }
         else {
 	  assert false : "Sorry, single-pass clustering unavailable for now.";
@@ -128,31 +132,34 @@
 
 	// Fill tuples with reco info
         int tag = 0;
+	if(_calType=="EM") tag = _nClusEM;
+	if(_calType=="HD") tag = _nClusHD;
 	Map<CalorimeterHit,Integer> recTagMap
 	    = new HashMap<CalorimeterHit,Integer>();
 	for(BasicCluster clust : recon ) {
             List<CalorimeterHit> cellVec = clust.getCalorimeterHits();
-// 	    System.out.println(tag+" "+cellVec.size());
+//  	    System.out.println("reco tag: "+tag+", #hits="+cellVec.size());
 	    if(cellVec.size()==0)
 		System.out.println("*** bad cellVec in "+_calType);
 	    for(CalorimeterHit ihit : cellVec) {
 		Integer tagObject = new Integer(tag);
-//  		System.out.println("putting <"+MyTools.printID(ihit.getCellID())+" -> "+tagObject+">");
+//   		System.out.println("putting <"+MyTools.printID(ihit.getCellID())+" -> "+tagObject+">");
 		recTagMap.put(ihit,tagObject);
                 double[] pos = ihit.getPosition();
 		double cdens = _loader.getDensity(ihit);
 		long jid = ihit.getCellID();
-		int ily1 = MyTools.getLayer(jid);
-		int iz = MyTools.getThetaBin(jid);
-		int iphi = MyTools.getPhiBin(jid);
 		decoder.setID( ihit.getCellID() );
-		int ily = decoder.getValue(0);
-		int iu = decoder.getValue(3);
-		int iv = decoder.getValue(4);
-// 		System.out.println("ilay="+ily1+" "+ily+", iu="+iphi+" "+iu+", iv="+iz+" "+iv);
-		assert ily==ily1 : "problem in layer index";
-		assert iphi==iu : "problem in phi/iU index";
-		assert iz==iv : "problem in iz/iV index";
+		int ily = decoder.getValue(0); // layer
+		int iu = decoder.getValue(3);  // either theta, phi or x
+		int iv = decoder.getValue(4);  // either phi, z or y
+
+// 		int ily1 = MyTools.getLayer(jid);
+// 		int iz = MyTools.getThetaBin(jid);
+// 		int iphi = MyTools.getPhiBin(jid);
+//  		System.out.println("ilay="+ily1+" "+ily+", iu="+iphi+" "+iu+", iv="+iz+" "+iv);
+// 		assert ily==ily1 : "problem in layer index";
+// 		assert iphi==iu : "problem in phi/iU index";
+// 		assert iz==iv : "problem in iz/iV index";
 
 		ITuple cellFolder = null;
 		if(_calType=="EM") cellFolder = emCellFolder;
@@ -184,32 +191,38 @@
             }
             tag++;
 	}
+	if(_calType=="EM") _nClusEM = tag;
+	if(_calType=="HD") _nClusHD = tag;
+// 	System.out.println("calType="+_calType+", tag="+tag+", nrecoEM="+_nClusEM+", nrecoHD="+_nClusHD);
 
 	// Fill tuples with MC info
         tag = 0;
+	if(_calType=="EM") tag = _nMCClusEM;
+	if(_calType=="HD") tag = _nMCClusHD;
 	for( BasicCluster clust : mctruth ) {
 	  for( CalorimeterHit ihit : clust.getCalorimeterHits() ) {
 	    Integer tagObject = recTagMap.get(ihit);
-// 	    System.out.println("getting: "+ihit+" -> "+tagObject);
 
   	    int rtag = -1;
   	    if(tagObject!=null) rtag = tagObject.intValue();
 // 	    int rtag = tagObject.intValue();
+// 	    System.out.println("getting <"+MyTools.printID(ihit.getCellID())+" -> "+rtag+">");
 	    double[] pos = ihit.getPosition();
 	    double cdens = _loader.getDensity(ihit);
 	    if(cdens==0) continue;  // skip hits below energy cut
 	    long jid = ihit.getCellID();
-	    int ily1 = MyTools.getLayer(jid);
-	    int iz = MyTools.getThetaBin(jid);
-	    int iphi = MyTools.getPhiBin(jid);
 	    decoder.setID( ihit.getCellID() );
-	    int ily = decoder.getValue(0);
-	    int iu = decoder.getValue(3);
-	    int iv = decoder.getValue(4);
-// 	    System.out.println("ilay="+ily1+" "+ily+", iu="+iz+" "+iu+", iv="+iphi+" "+iv);
-	    assert ily==ily1 : "problem in layer index";
-	    assert iphi==iv : "problem in phi/iV index";
-	    assert iz==iu : "problem in iz/iU index";
+	    int ily = decoder.getValue(0); // layer
+	    int iu = decoder.getValue(3);  // either theta, phi or x
+	    int iv = decoder.getValue(4);  // either phi, z or y
+
+// 	    int ily1 = MyTools.getLayer(jid);
+// 	    int iz = MyTools.getThetaBin(jid);
+// 	    int iphi = MyTools.getPhiBin(jid);
+//  	    System.out.println("ilay="+ily1+" "+ily+", iu="+iz+" "+iu+", iv="+iphi+" "+iv);
+// 	    assert ily==ily1 : "problem in layer index";
+// 	    assert iphi==iv : "problem in phi/iV index";
+// 	    assert iz==iu : "problem in iz/iU index";
 
 	    double cellR = Math.sqrt(pos[0]*pos[0]+pos[1]*pos[1]);
 	    double theta = Math.atan2(cellR,pos[2]);
@@ -234,7 +247,7 @@
 	      mcCellFolder.fill(2,(float)pos[1]);
 	      mcCellFolder.fill(3,(float)pos[2]);
 	      mcCellFolder.fill(4,(float) cdens);
-// 	      System.out.println("Gtag="+tag+", Rtag="+rtag);
+//  	      System.out.println("Gtag="+tag+", Rtag="+rtag);
 	      mcCellFolder.fill(5,tag);
 	      mcCellFolder.fill(6,rtag);
 	      mcCellFolder.fill(7,ily);
@@ -284,32 +297,33 @@
 	    tag++;
 	  }
 	}
-
-        if(_calType=="EM"){
-	  int nreco = recon.size();
-          _tupleEM.fill(0,nreco);
-	  _tupleEM.fill(3,_evtnum);
-	  _tupleEM.addRow();
-	  _tupleMCem.fill(0,mctruth.size());
-	  _tupleMCem.fill(3,_evtnum);
-	  _tupleMCem.addRow();
-	  System.out.println("Adding nclusEM="+recon.size());
-	  _tupleEvt.fill(0,_evtnum);
-	  _tupleEvt.addRow();
-        }
-        if(_calType=="HD"){
-          _tupleHD.fill(0,recon.size());
-	  _tupleHD.fill(3,_evtnum);
-	  _tupleHD.addRow();
-	  _tupleMChd.fill(0,mctruth.size());
-	  _tupleMChd.fill(3,_evtnum);
-	  _tupleMChd.addRow();
-	  System.out.println("Adding nclusHD="+recon.size());
-        }
+	if(_calType=="EM") _nMCClusEM = tag;
+	if(_calType=="HD") _nMCClusHD = tag;
+// 	System.out.println("calType="+_calType+", tag="+tag+", nMCEM="+_nMCClusEM+", nMCHD="+_nMCClusHD);
 
 	recTagMap.clear();
     }
 
+    public void finalizeTuple() {
+	// EM
+	_tupleEM.fill(0,_nClusEM);
+	_tupleEM.fill(3,_evtnum);
+	_tupleEM.addRow();
+	_tupleMCem.fill(0,_nMCClusEM);
+	_tupleMCem.fill(3,_evtnum);
+	_tupleMCem.addRow();
+	// HD
+	_tupleHD.fill(0,_nClusHD);
+	_tupleHD.fill(3,_evtnum);
+	_tupleHD.addRow();
+	_tupleMChd.fill(0,_nMCClusHD);
+	_tupleMChd.fill(3,_evtnum);
+	_tupleMChd.addRow();
+	// event
+	_tupleEvt.fill(0,_evtnum);
+	_tupleEvt.addRow();
+    }
+
     private void processCollection(EventHeader event, String colName,
 				   Map<Long,CalorimeterHit> hitmap)
     {
@@ -363,15 +377,26 @@
       }
       int nNNclus = nnClusColl==null ? 0 : nnClusColl.size();
 
+      // Analyze DirectedTree clusters
+      int dthits=0;
+      for( BasicCluster iclus : recoClusColl ) {
+	double pos[] = iclus.getPosition();
+	List<CalorimeterHit> iHits = iclus.getCalorimeterHits();
+	dthits += iHits.size(); // includes hits below threshold
+      }
+      int nDTclus = recoClusColl==null ? 0 : recoClusColl.size();
+
       if(_debug>0) {
-	System.out.println(" Comparing cheat clusters: "
-			   +" cheater="+nclusCheat
-			   +" NN="+nNNclus
+	System.out.println(" Comparing #clusters: "
+			   +" MCclus="+nclusCheat
+			   +" NNclus="+nNNclus
+			   +" DTclus="+nDTclus
 			   );
 	System.out.println(" Comparing total #hits: "
 			   +" in event: "+hitmap.size()
-			   +", in MCClusters="+mchits
-			   +", in NNClusters="+nnhits );
+			   +", in MCclus="+mchits
+			   +", in NNclus="+nnhits
+			   +", in DTclus="+dthits );
       }
 
       int nhits = hitmap.size();
@@ -419,4 +444,6 @@
     private ClusterBuilder clusBuilder = new ClusterBuilder();
     private int layerIndex, uIndex, vIndex;
     private double _emEcut, _hdEcut;
+
+    private int _nClusEM,_nMCClusEM,_nClusHD,_nMCClusHD;
 }
CVSspam 0.2.8