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");}
+
+ }
+
+ }
+
+ }
+
+}
|