Print

Print


Author: luca
Date: Fri Oct 31 04:35:56 2014
New Revision: 1363

Log: (empty)

Added:
    java/trunk/users/src/main/java/org/hps/users/luca/TruthReader.java
Modified:
    java/trunk/users/src/main/java/org/hps/users/luca/RawDataReader.java

Modified: java/trunk/users/src/main/java/org/hps/users/luca/RawDataReader.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/RawDataReader.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/RawDataReader.java	Fri Oct 31 04:35:56 2014
@@ -17,6 +17,8 @@
 import org.lcsim.util.Driver;
 import org.lcsim.lcio.LCIOConstants;
 import java.io.PrintWriter;
+import org.lcsim.geometry.IDDecoder;
+import org.lcsim.event.CalorimeterHit;
 
 /**
  *
@@ -28,7 +30,7 @@
     private FileWriter writer2;
     String outputFileName = "raw1.txt";
     String outputFileName2 = "raw2.txt";
-    String rawCollectionName;
+    String rawCollectionName="EcalReadoutHits";
     String ecalReadoutName = "EcalHits";
     String ecalCollectionName = "EcalCorrectedHits";
     double scale = 1.0;
@@ -88,24 +90,170 @@
     
     @Override
     public void process(EventHeader event) {
-        if (event.hasCollection(HPSRawCalorimeterHit.class, rawCollectionName)) {
-            // Get the list of ECal hits.
-            List<HPSRawCalorimeterHit> hits = event.get(HPSRawCalorimeterHit.class, rawCollectionName);
-            for(HPSRawCalorimeterHit hit : hits){
+        
+        if (event.hasCollection(RawCalorimeterHit.class, rawCollectionName)) {
+            // Get the list of ECal hits
+            
+            List<RawCalorimeterHit> hits = event.get(RawCalorimeterHit.class, rawCollectionName);
+            IDDecoder dec = event.getMetaData(hits).getIDDecoder();
+            for(RawCalorimeterHit hit : hits){ 
+                dec.setID(hit.getCellID());
+                int ix = dec.getValue("ix");
+                int iy = dec.getValue("iy");
+                int id=getCrystal(ix,iy);
                 try{
-                 writer.append(hit.getCellID()+" "+hit.getAmplitude());
+                 writer.append(id+" "+hit.getAmplitude() + " \n");
                 }
                 catch(IOException e){
     System.err.println("Error closing utput file for event display.");
 }
-            try{writer2.append(hit.getAnalogHit().getIdentifierFieldValue("ix") + " " + hit.getAnalogHit().getIdentifierFieldValue("iy") + " " + hit.getAnalogHit().getRawEnergy()+" \n");    
-               } 
-            
-            catch(IOException e){
-    System.err.println("Error closing utput file for event display.");
-}
+         
             }
         }
         else{System.out.println("NUOOO \n");}
-    }
-}
+        
+        if(event.hasCollection(CalorimeterHit.class, "EcalHits")){
+        List<CalorimeterHit> hits = event.get(CalorimeterHit.class, "EcalHits");
+        for(CalorimeterHit hit : hits){
+        int id=getCrystal(hit);
+        try{
+            writer2.append(id + " " + hit.getRawEnergy() + "\n");
+        }
+        catch(IOException e){System.err.println("Non riesco a scrivere raw2.");}    
+        }
+        }
+        else{System.out.println("NUOOO hits \n");}
+    }
+    
+    
+    public int getCrystal (CalorimeterHit hit){
+ int x,y,id=0;
+ x= (-1)*hit.getIdentifierFieldValue("ix");
+ y= hit.getIdentifierFieldValue("iy");
+ 
+ if(y==5){
+ if(x<0)
+ {id=x+24;}
+ else id= x+23;
+ }
+ 
+ else if(y==4)
+ {if(x<0){
+  id=x+70;}
+ else id=x+69;}
+ 
+ else if(y==3)
+ {if(x<0){
+  id=x+116;}
+ else id=x+115;}
+ 
+ else if(y==2)
+ {if(x<0){
+  id=x+162;}
+ else id=x+161;}
+ 
+ else if(y==1)
+ {x=-x;
+     if(x>0){
+  id=-x+208;}
+ else if(x==-1){id=208;}
+ else if(x<-1) id=-x+198;}
+ 
+  else if(y==-1)
+ {x=-x;
+     if(x>0){
+  id=-x+245;}
+ else if(x==-1 )id=245;
+ else if(x<-1){id=-x+235;}}
+ 
+ 
+ else if(y==-2)
+ {if(x<0){
+  id=x+282;}
+ else id=x+281;}
+ 
+  else if(y==-3)
+ {if(x<0){
+  id=x+328;}
+ else id=x+327;}
+ 
+ else if(y==-4)
+ {if(x<0){
+  id=x+374;}
+ else id=x+373;}
+ 
+ else if(y==-5)
+ {if(x<0){
+  id=x+420;}
+ else id=x+419;}
+ 
+ return id;
+ 
+ }
+    
+    public int getCrystal (int ix, int iy){
+ 
+ int x,y,id=0;
+ x= (-1)*ix;
+ y= iy;
+ 
+ if(y==5){
+ if(x<0)
+ {id=x+24;}
+ else id= x+23;
+ }
+ 
+ else if(y==4)
+ {if(x<0){
+  id=x+70;}
+ else id=x+69;}
+ 
+ else if(y==3)
+ {if(x<0){
+  id=x+116;}
+ else id=x+115;}
+ 
+ else if(y==2)
+ {if(x<0){
+  id=x+162;}
+ else id=x+161;}
+ 
+ else if(y==1)
+ {x=-x;
+     if(x>0){
+  id=-x+208;}
+ else if(x==-1){id=208;}
+ else if(x<-1) id=-x+198;}
+ 
+  else if(y==-1)
+ {x=-x;
+     if(x>0){
+  id=-x+245;}
+ else if(x==-1 )id=245;
+ else if(x<-1){id=-x+235;}}
+ 
+ 
+ else if(y==-2)
+ {if(x<0){
+  id=x+282;}
+ else id=x+281;}
+ 
+  else if(y==-3)
+ {if(x<0){
+  id=x+328;}
+ else id=x+327;}
+ 
+ else if(y==-4)
+ {if(x<0){
+  id=x+374;}
+ else id=x+373;}
+ 
+ else if(y==-5)
+ {if(x<0){
+  id=x+420;}
+ else id=x+419;}
+ 
+ return id;
+ 
+ }
+}

Added: java/trunk/users/src/main/java/org/hps/users/luca/TruthReader.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/TruthReader.java	(added)
+++ java/trunk/users/src/main/java/org/hps/users/luca/TruthReader.java	Fri Oct 31 04:35:56 2014
@@ -0,0 +1,64 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package org.hps.users.luca;
+import hep.aida.IHistogram1D;
+import hep.aida.IHistogram2D;
+import java.io.IOException;
+import java.util.*;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.EnumSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Queue;
+import org.hps.readout.ecal.ClockSingleton;
+import org.hps.readout.ecal.TriggerDriver;
+
+import org.hps.recon.ecal.ECalUtils;
+import org.hps.recon.ecal.HPSEcalCluster;
+import org.lcsim.event.SimCalorimeterHit; 
+import org.lcsim.event.EventHeader;
+import org.lcsim.geometry.Detector;
+import org.lcsim.util.aida.AIDA;
+import org.lcsim.util.Driver;
+import hep.aida.*;
+
+import java.io.FileWriter;
+import org.lcsim.event.CalorimeterHit;
+/**
+ * This driver is supposed to read the truth information out of a SLIC output about the energy deposition in a given crystal
+ * @author Luca
+ */
+public class TruthReader extends Driver {
+ AIDA aida = AIDA.defaultInstance();
+ IHistogram1D Ene=aida.histogram1D("Clusters energy with Luca's trigger",300, 0, 1);
+ private FileWriter writer;
+ @Override
+    public void startOfData() {
+    try{
+    //initialize the writers
+    writer=new FileWriter("verita.txt");
+    writer.write("");
+    }   
+    catch(IOException e ){ System.err.println("Error initializing output file for event display.");}
+    
+    }
+ @Override  
+ public void process (EventHeader event){
+     if(event.hasCollection(SimCalorimeterHit.class, "EcalHits")){
+     List<SimCalorimeterHit> hits=event.get(SimCalorimeterHit.class, "EcalHits");
+        for(SimCalorimeterHit hit : hits){
+            try{writer.append(hit.getCorrectedEnergy() + " " + hit.getRawEnergy() + " " + hit.getContributedEnergy(0) + "\n");}
+            catch(IOException e ){System.out.println("non riesco a scrivere perché sei stupido");}
+     
+        }  
+     
+     }
+         
+ }
+    
+}