Print

Print


Author: [log in to unmask]
Date: Sat Jan 24 10:27:51 2015
New Revision: 1991

Log: (empty)

Added:
    java/trunk/users/src/main/java/org/hps/users/luca/CalibClusterAnalyzerEngRunHist.java
Modified:
    java/trunk/users/src/main/java/org/hps/users/luca/CalibClusterAnalyzerEngRun.java

Modified: java/trunk/users/src/main/java/org/hps/users/luca/CalibClusterAnalyzerEngRun.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/CalibClusterAnalyzerEngRun.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/CalibClusterAnalyzerEngRun.java	Sat Jan 24 10:27:51 2015
@@ -9,11 +9,18 @@
 
 import org.lcsim.util.Driver;
 import hep.aida.IHistogram1D;
+import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Scanner;
 import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import org.hps.conditions.database.TableConstants;
 import org.hps.conditions.ecal.EcalChannel;
 import org.hps.conditions.ecal.EcalChannel.EcalChannelCollection;
@@ -42,23 +49,26 @@
     private FileWriter writer;
     private FileWriter writer2;
     private FileWriter writer3;
-    String outputFileName = "CalibClusterAnalyzerEngRunGTPtest.txt";
-    String outputFileName2 = "CalibClusterAnalyzerEngRunICtest.txt";
-    String outputFileName3 = "CalibClusterAnalyzerEngRunHIT.txt";
+    String outputFileName = "CalibClusterAnalyzerEngRunGTPtest2.txt";
+    String outputFileName2 = "CalibClusterAnalyzerEngRunICtest2.txt";
+    String outputFileName3 = "gains.txt";
     private EcalConditions ecalConditions = null;
-    private String ecalName = "Ecal";
+    final private String ecalName = "Ecal";
     private Subdetector ecal;
     private EcalChannelCollection channels= null;
+    double[] gain=new double[442];
+    
+    //double[] mygains={0.17,0.181,0.155,0.196,0.178,0.182,0.187,0.172,0.198,0.175,0.191,0.22864,0.219093,0.224226,0.187811,0.205535,0.217383,0.206476,0.197209,0.209896,0.229483,0.225912,0.167822,0.227948,0.232701,0.205919,0.180198,0.176,0.179,0.18,0.191,0.187,0.12,0.12,0.218,0.204,0.105,0.118,0.194,0.171,0.148,0.12,0.193,0.196,0.115,0.126,0.188,0.183,0.182,0.176,0.183,0.174,0.178,0.169,0.207395,0.245306,0.222105,0.220242,0.21169,0.208066,0.193918,0.212912,0.206663,0.185503,0.215672,0.233315,0.179415,0.197367,0.229924,0.223594,0.195459,0.20715,0.216598,0.212833,0.182,0.183,0.173,0.139,0.116,0.12,0.232,0.375,0.117,0.123,0.183,0.175,0.119,0.121,0.216,0.207,0.105,0.112,0.2,0.177,0.174,0.184,0.168,0.165,0.171,0.168,0.16,0.237196,0.216983,0.191974,0.223878,0.227687,0.190862,0.200952,0.220365,0.223872,0.231075,0.229662,0.231524,0.211966,0.22114,0.214275,0.202543,0.214011,0.223159,0.196,0.184,0.169,0.179,0.168,0.115,0.119,0.196,0.194,0.12,0.114,0.178,0.183,0.126,0.126,0.171,0.215,0
 .116,0.119,0.189,0.165,0.164,0.19,0.178,0.166,0.181,0.171,0.240076,0.209051,0.24329,0.225717,0.241676,0.221112,0.244575,0.203469,0.239822,0.232453,0.2686,0.2045,0.210024,0.180782,0.205848,0.236478,0.221362,0.215202,0.220609,0.196,0.173,0.179,0.187,0.181,0.107,0.102,0.201,0.214,0.107,0.123,0.167,0.189,0.115,0.116,0.2,0.188,0.098,0.124,0.159,0.174,0.167,0.204,0.178,0.176,0.176,0.18,0.167,0.188952,0.20986,0.211494,0.227115,0.326532,0.236429,0.188189,0.18143,0.211053,0.173,0.176,0.172,0.174,0.193,0.133,0.122,0.188,0.212,0.127,0.113,0.186,0.171,0.133,0.125,0.176,0.197,0.094,0.113,0.189,0.168,0.183,0.168,0.195,0.2,0.19,0.183,0.229883,0.207711,0.236336,0.185985,0.235952,0.215961,0.205741,0.146512,0.159686,0.213107,0.192,0.151,0.115,0.187,0.202,0.131,0.139,0.204,0.174,0.128,0.122,0.181,0.184,0.133,0.127,0.179,0.19,0.173,0.183,0.185,0.173,0.166,0.178,0.187,0.183,0.194,0.198,0.224021,0.262922,0.191143,0.188164,0.246592,0.229807,0.228564,0.246168,0.271616,0.208531,0.2492,0.234327,0.182
 15,0.204872,0.197765,0.224463,0.131451,0.12417,0.18939,0.201661,0.113,0.117,0.2,0.186,0.137,0.121,0.177,0.165,0.13,0.133,0.174,0.166,0.132,0.131,0.19,0.162,0.177,0.177,0.178,0.187,0.195,0.175,0.19,0.211,0.182,0.162,0.220277,0.191209,0.218454,0.213889,0.224527,0.235918,0.190844,0.241915,0.211924,0.257578,0.201244,0.211065,0.217196,0.232198,0.215907,0.214647,0.120287,0.144153,0.208125,0.182,0.124,0.219,0.185,0.182,0.101,0.126,0.189,0.173,0.118,0.114,0.172,0.179,0.147,0.119,0.186,0.176,0.159,0.173,0.187,0.181,0.172,0.167,0.18,0.175,0.171,0.182,0.187,0.200199,0.216328,0.191837,0.209114,0.25346,0.211998,0.182641,0.200406,0.204201,0.191989,0.246661,0.23143,0.149329,0.185368,0.203758,0.13947,0.15364,0.17,0.178,0.124,0.115,0.185,0.2,0.122,0.107,0.189,0.185,0.111,0.128,0.177,0.177,0.116,0.114,0.198,0.179,0.188,0.191,0.19,0.184,0.187,0.186,0.197,0.171,0.199,0.192,0.178,0.165,0.207939,0.198116,0.189537,0.229394,0.230347,0.220014,0.205517,0.184679,0.220733,0.208228,0.240808,0.21955,0.24
 7955,0.212554,0.135822,0.146155,0.186,0.178,0.138,0.12,0.197,0.188,0.113,0.114,0.165,0.184,0.098,0.119,0.18,0.168,0.14,0.113,0.182,0.187,0.183,0.166};
     
     public void setEnergyThreshold (double threshold){
     this.energyThreshold=threshold;
        }
   
   public void setOutputFileName(String outputFileName){
-  this.outputFileName = outputFileName;
+  this.outputFileName = "CalibClusterAna_GTP_ComRun_"+outputFileName+".txt";
   }
   public void setOutputFileName2(String outputFileName2){
-  this.outputFileName2 = outputFileName2;
+  this.outputFileName2 = "CalibClusterAna_IC_ComRun_"+outputFileName2+".txt";
   }
   public void setOutputFileName3(String outputFileName3){
   this.outputFileName3 = outputFileName3;
@@ -77,13 +87,12 @@
         
         
         
-         ecalConditions = ConditionsManager.defaultInstance().getCachedConditions(EcalConditions.class, TableConstants.ECAL_CONDITIONS).getCachedData();
+        ecalConditions = ConditionsManager.defaultInstance().getCachedConditions(EcalConditions.class, TableConstants.ECAL_CONDITIONS).getCachedData();
          channels = ecalConditions.getChannelCollection();
     }  
    @Override   
 public void startOfData(){
-    
-    
+   
     
     try{
     //initialize the writers
@@ -102,8 +111,15 @@
 
 
 
-public void endOfData(){
-  
+    @Override
+    public void endOfData(){
+  for(int t=0;t<442;t++){
+      int id =t+1;
+      try{  writer3.append(id + " " + gain[t] + "\n");}
+      catch(IOException e){
+    System.err.println("Error closing utput file for event display.");}
+     
+  }
     try{
 //close the file writer.
     writer.close();
@@ -124,15 +140,16 @@
         {List<Cluster> clusters= event.get(Cluster.class,"EcalClustersGTP");
          for(Cluster cluster : clusters){
            int idBack;
-           int idFront;
-           idFront=getCrystalFront(cluster);
-           idBack=getCrystal(cluster);
+           
+           
+           idBack=getDBID(cluster);
            //EcalChannelCollection channels = ecalConditions.getChannelCollection();
            EcalChannel channel = channels.findGeometric(cluster.getCalorimeterHits().get(0).getCellID());
            EcalChannelConstants channelConstants = ecalConditions.getChannelConstants(channel);
-          //. System.out.println(channelConstants.getGain().getGain() + " ot asil cristallo " + idBack+  " \n ");
+           //System.out.println(channelConstants.getGain().getGain() + " ot asil cristallo " + idBack+  " \n ");
+           gain[idBack-1]=channelConstants.getGain().getGain();
            try{
-            writer.append(idBack + " " + idFront + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getCalorimeterHits().get(0).getCorrectedEnergy() + " " + cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")+" " +cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy") +  " " + channelConstants.getGain().getGain() + "\n");
+            writer.append(idBack + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getCalorimeterHits().get(0).getCorrectedEnergy() + " " + cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")+" " +cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy") +  " " + channelConstants.getGain().getGain() + "\n");
             }
            catch(IOException e ){System.err.println("Error writing to output for event display");}   
          }
@@ -143,13 +160,13 @@
         ClusterUtilities.sortReconClusterHits(clusters); 
          for(Cluster cluster : clusters){
          EcalChannel channel = channels.findGeometric(cluster.getCalorimeterHits().get(0).getCellID());
-           EcalChannelConstants channelConstants = ecalConditions.getChannelConstants(channel);    
+         EcalChannelConstants channelConstants = ecalConditions.getChannelConstants(channel);    
            int idBack;
            int idFront;
-           idFront=getCrystalFront(cluster);
-           idBack=getCrystal(cluster);
+          // idFront=getCrystalFront(cluster);
+           idBack=getDBID(cluster);
            try{
-            writer2.append(idBack + " "+ idFront + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getCalorimeterHits().get(0).getCorrectedEnergy() + " " + cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")+" " +cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy") + " " + channelConstants.getGain().getGain() + "\n");
+            writer2.append(idBack + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getCalorimeterHits().get(0).getCorrectedEnergy() + " " + cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")+" " +cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy") + " " + channelConstants.getGain().getGain() + "\n");
             }
            catch(IOException e ){System.err.println("Error writing to output for event display");}   
          }
@@ -174,7 +191,36 @@
     
     }
     
- 
+    
+  public int getDBID ( Cluster cluster ){
+    int xx=  cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+    int yy=cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
+    int XOFFSET=23;
+    int YOFFSET=5;
+    int ix = xx<0 ? xx+XOFFSET : xx+XOFFSET-1;
+    int iy = yy<0 ? yy+YOFFSET : yy+YOFFSET-1;
+    int dbid = ix + 2*XOFFSET*(YOFFSET*2-iy-1) + 1;
+    if      (yy ==  1 && xx>-10){ dbid-=9;}
+    else if (yy == -1 && xx<-10) {dbid-=9;}
+    else if (yy < 0){dbid-=18;}
+   return dbid;
+}
+  
+public int getDBID ( CalorimeterHit hit ){
+    int xx=  hit.getIdentifierFieldValue("ix");
+    int yy=  hit.getIdentifierFieldValue("iy");
+    int XOFFSET=23;
+    int YOFFSET=5;
+    int ix = xx<0 ? xx+XOFFSET : xx+XOFFSET-1;
+    int iy = yy<0 ? yy+YOFFSET : yy+YOFFSET-1;
+    int dbid = ix + 2*XOFFSET*(YOFFSET*2-iy-1) + 1;
+    if      (yy ==  1 && xx>-10){ dbid-=9;}
+    else if (yy == -1 && xx<-10) {dbid-=9;}
+    else if (yy < 0){dbid-=18;}
+   return dbid;
+}  
+    
+ /*
  public int getCrystal (Cluster cluster){
  int x,y,id=0;
  x= cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
@@ -302,7 +348,9 @@
  
  return id;
  
- } 
+ } */
+    
+    /*
     
   public int getCrystalFront (Cluster cluster){
  int x,y,id=0;
@@ -367,7 +415,9 @@
  
  return id;
  
- }   
+ }   */
+    
+    /*
     public int getCrystalFront (CalorimeterHit hit){
  int x,y,id=0;
  x= (-1)*hit.getIdentifierFieldValue("ix");
@@ -431,5 +481,5 @@
  
  return id;
  
- }   
+ }   */
 }

Added: java/trunk/users/src/main/java/org/hps/users/luca/CalibClusterAnalyzerEngRunHist.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/CalibClusterAnalyzerEngRunHist.java	(added)
+++ java/trunk/users/src/main/java/org/hps/users/luca/CalibClusterAnalyzerEngRunHist.java	Sat Jan 24 10:27:51 2015
@@ -0,0 +1,469 @@
+/*
+ * 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 org.lcsim.util.Driver;
+import hep.aida.IHistogram1D;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Scanner;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.hps.conditions.database.TableConstants;
+import org.hps.conditions.ecal.EcalChannel;
+import org.hps.conditions.ecal.EcalChannel.EcalChannelCollection;
+import org.hps.conditions.ecal.EcalChannelConstants;
+import org.hps.conditions.ecal.EcalConditions;
+import org.hps.readout.ecal.FADCEcalReadoutDriver;
+import org.hps.readout.ecal.RingBuffer;
+import org.hps.recon.ecal.cluster.ClusterUtilities;
+import org.lcsim.conditions.ConditionsManager;
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
+import org.lcsim.event.EventHeader;
+import org.lcsim.geometry.Detector;
+import org.lcsim.geometry.Subdetector;
+import org.lcsim.geometry.subdetector.HPSEcal3;
+import org.lcsim.util.aida.AIDA;
+
+
+/**
+ *
+ * @author Luca
+ */
+public class CalibClusterAnalyzerEngRunHist extends Driver  {
+    double energyThreshold=0;
+    protected String clusterCollectionName = "EcalClustersGTP";
+    protected String clusterCollectionName2 = "EcalClustersIC";
+    
+    private EcalConditions ecalConditions = null;
+    final private String ecalName = "Ecal";
+    private Subdetector ecal;
+    private EcalChannelCollection channels= null;
+    double[] gain=new double[442];
+    
+    //istogrammu
+    AIDA aida = AIDA.defaultInstance();
+   
+    ArrayList<IHistogram1D> ICHists = new ArrayList<IHistogram1D>(442);
+    ArrayList<IHistogram1D> ICSeedHists = new ArrayList<IHistogram1D>(442);
+    ArrayList<IHistogram1D> GTPHists = new ArrayList<IHistogram1D>(442);
+    ArrayList<IHistogram1D> GTPSeedHists = new ArrayList<IHistogram1D>(442);
+    IHistogram1D ICEneTot = aida.histogram1D("IC Clusters Energy", 200, 0.0,2.5);
+    //double[] mygains={0.17,0.181,0.155,0.196,0.178,0.182,0.187,0.172,0.198,0.175,0.191,0.22864,0.219093,0.224226,0.187811,0.205535,0.217383,0.206476,0.197209,0.209896,0.229483,0.225912,0.167822,0.227948,0.232701,0.205919,0.180198,0.176,0.179,0.18,0.191,0.187,0.12,0.12,0.218,0.204,0.105,0.118,0.194,0.171,0.148,0.12,0.193,0.196,0.115,0.126,0.188,0.183,0.182,0.176,0.183,0.174,0.178,0.169,0.207395,0.245306,0.222105,0.220242,0.21169,0.208066,0.193918,0.212912,0.206663,0.185503,0.215672,0.233315,0.179415,0.197367,0.229924,0.223594,0.195459,0.20715,0.216598,0.212833,0.182,0.183,0.173,0.139,0.116,0.12,0.232,0.375,0.117,0.123,0.183,0.175,0.119,0.121,0.216,0.207,0.105,0.112,0.2,0.177,0.174,0.184,0.168,0.165,0.171,0.168,0.16,0.237196,0.216983,0.191974,0.223878,0.227687,0.190862,0.200952,0.220365,0.223872,0.231075,0.229662,0.231524,0.211966,0.22114,0.214275,0.202543,0.214011,0.223159,0.196,0.184,0.169,0.179,0.168,0.115,0.119,0.196,0.194,0.12,0.114,0.178,0.183,0.126,0.126,0.171,0.215,0
 .116,0.119,0.189,0.165,0.164,0.19,0.178,0.166,0.181,0.171,0.240076,0.209051,0.24329,0.225717,0.241676,0.221112,0.244575,0.203469,0.239822,0.232453,0.2686,0.2045,0.210024,0.180782,0.205848,0.236478,0.221362,0.215202,0.220609,0.196,0.173,0.179,0.187,0.181,0.107,0.102,0.201,0.214,0.107,0.123,0.167,0.189,0.115,0.116,0.2,0.188,0.098,0.124,0.159,0.174,0.167,0.204,0.178,0.176,0.176,0.18,0.167,0.188952,0.20986,0.211494,0.227115,0.326532,0.236429,0.188189,0.18143,0.211053,0.173,0.176,0.172,0.174,0.193,0.133,0.122,0.188,0.212,0.127,0.113,0.186,0.171,0.133,0.125,0.176,0.197,0.094,0.113,0.189,0.168,0.183,0.168,0.195,0.2,0.19,0.183,0.229883,0.207711,0.236336,0.185985,0.235952,0.215961,0.205741,0.146512,0.159686,0.213107,0.192,0.151,0.115,0.187,0.202,0.131,0.139,0.204,0.174,0.128,0.122,0.181,0.184,0.133,0.127,0.179,0.19,0.173,0.183,0.185,0.173,0.166,0.178,0.187,0.183,0.194,0.198,0.224021,0.262922,0.191143,0.188164,0.246592,0.229807,0.228564,0.246168,0.271616,0.208531,0.2492,0.234327,0.182
 15,0.204872,0.197765,0.224463,0.131451,0.12417,0.18939,0.201661,0.113,0.117,0.2,0.186,0.137,0.121,0.177,0.165,0.13,0.133,0.174,0.166,0.132,0.131,0.19,0.162,0.177,0.177,0.178,0.187,0.195,0.175,0.19,0.211,0.182,0.162,0.220277,0.191209,0.218454,0.213889,0.224527,0.235918,0.190844,0.241915,0.211924,0.257578,0.201244,0.211065,0.217196,0.232198,0.215907,0.214647,0.120287,0.144153,0.208125,0.182,0.124,0.219,0.185,0.182,0.101,0.126,0.189,0.173,0.118,0.114,0.172,0.179,0.147,0.119,0.186,0.176,0.159,0.173,0.187,0.181,0.172,0.167,0.18,0.175,0.171,0.182,0.187,0.200199,0.216328,0.191837,0.209114,0.25346,0.211998,0.182641,0.200406,0.204201,0.191989,0.246661,0.23143,0.149329,0.185368,0.203758,0.13947,0.15364,0.17,0.178,0.124,0.115,0.185,0.2,0.122,0.107,0.189,0.185,0.111,0.128,0.177,0.177,0.116,0.114,0.198,0.179,0.188,0.191,0.19,0.184,0.187,0.186,0.197,0.171,0.199,0.192,0.178,0.165,0.207939,0.198116,0.189537,0.229394,0.230347,0.220014,0.205517,0.184679,0.220733,0.208228,0.240808,0.21955,0.24
 7955,0.212554,0.135822,0.146155,0.186,0.178,0.138,0.12,0.197,0.188,0.113,0.114,0.165,0.184,0.098,0.119,0.18,0.168,0.14,0.113,0.182,0.187,0.183,0.166};
+    
+    public void setEnergyThreshold (double threshold){
+    this.energyThreshold=threshold;
+       }
+  
+  
+  
+  
+/*  
+@Override
+    public void detectorChanged(Detector detector) {
+        // Get the Subdetector.
+        ecal = detector.getSubdetector(ecalName);
+        
+      /*  // ECAL combined conditions object.
+        ecalConditions = ConditionsManager.defaultInstance()
+                .getCachedConditions(EcalConditions.class, TableConstants.ECAL_CONDITIONS).getCachedData();*/
+        
+        
+        
+     /*   ecalConditions = ConditionsManager.defaultInstance().getCachedConditions(EcalConditions.class, TableConstants.ECAL_CONDITIONS).getCachedData();
+         channels = ecalConditions.getChannelCollection();
+    }  */
+   @Override   
+public void startOfData(){
+   //initialize histograms  
+      for(int t=0; t<442; t++){
+      String cristallo=String.valueOf(t+1);  
+      String GTPhistName="GTP Cluster Energy(Run)" + cristallo;
+      String GTPSeedHistName="GTP Seed Energy(Run)"+ cristallo;
+      String IChistName="IC Cluster Energy(Run)" + cristallo;
+      String ICSeedHistName="IC Seed Energy(Run)"+ cristallo;
+      
+      IHistogram1D GTPseedhisto=aida.histogram1D(GTPSeedHistName, 200, 0.0,2.5);
+      IHistogram1D GTPclushisto=aida.histogram1D(GTPhistName, 200, 0.0,2.5);
+      IHistogram1D ICseedhisto=aida.histogram1D(ICSeedHistName, 200, 0.0,2.5);
+      IHistogram1D ICclushisto=aida.histogram1D(IChistName, 200, 0.0,2.5);
+     
+      GTPHists.add(GTPclushisto);
+      GTPSeedHists.add(GTPseedhisto);
+      ICHists.add(ICclushisto);
+      ICSeedHists.add(ICseedhisto);
+      }
+    
+    
+}
+
+
+
+    @Override
+    public void endOfData(){
+ 
+} 
+    @Override
+    public void process (EventHeader event){
+        
+       // EcalConditions ecalConditions = ConditionsManager.defaultInstance().getCachedConditions(EcalConditions.class, TableConstants.ECAL_CONDITIONS).getCachedData();
+       // EcalChannelCollection channels = ecalConditions.getChannelCollection();
+        //here it writes the GTP clusters info
+        if(event.hasCollection(Cluster.class,"EcalClustersGTP"))
+        {List<Cluster> clusters= event.get(Cluster.class,"EcalClustersGTP");
+         for(Cluster cluster : clusters){
+           int idBack;
+           
+           
+           idBack=getDBID(cluster);
+           //EcalChannelCollection channels = ecalConditions.getChannelCollection();
+         //  EcalChannel channel = channels.findGeometric(cluster.getCalorimeterHits().get(0).getCellID());
+        //   EcalChannelConstants channelConstants = ecalConditions.getChannelConstants(channel);
+           //System.out.println(channelConstants.getGain().getGain() + " ot asil cristallo " + idBack+  " \n ");
+         //  gain[idBack-1]=channelConstants.getGain().getGain();
+          /* try{
+            writer.append(idBack + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getCalorimeterHits().get(0).getCorrectedEnergy() + " " + cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")+" " +cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy") +  " " + channelConstants.getGain().getGain() + "\n");
+            }
+           catch(IOException e ){System.err.println("Error writing to output for event display");}   
+           */
+           
+           //riempio gli istogrammi
+           GTPHists.get(idBack -1).fill(cluster.getEnergy());
+           GTPSeedHists.get(idBack-1).fill(cluster.getCalorimeterHits().get(0).getCorrectedEnergy());
+         }
+        }
+        
+        
+        //here it writes the ICCluster info
+        if(event.hasCollection(Cluster.class,"EcalClustersIC"))
+        {List<Cluster> clusters= event.get(Cluster.class,"EcalClustersIC");
+       // ClusterUtilities.sortReconClusterHits(clusters); 
+         for(Cluster cluster : clusters){
+        // EcalChannel channel = channels.findGeometric(cluster.getCalorimeterHits().get(0).getCellID());
+       //  EcalChannelConstants channelConstants = ecalConditions.getChannelConstants(channel);    
+           int idBack;
+         
+           idBack=getDBID(cluster);
+          /* try{
+            writer2.append(idBack + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getCalorimeterHits().get(0).getCorrectedEnergy() + " " + cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")+" " +cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy") + " " + channelConstants.getGain().getGain() + "\n");
+            }
+           catch(IOException e ){System.err.println("Error writing to output for event display");}   
+         }*/
+           ICEneTot.fill(cluster.getEnergy());
+          ICHists.get(idBack -1).fill(cluster.getEnergy());
+          ICSeedHists.get(idBack-1).fill(cluster.getCalorimeterHits().get(0).getCorrectedEnergy()); 
+           
+        }
+        
+        
+    
+        }
+        else{System.out.println("non ci sono gli IC \n");}
+    }
+    
+    
+  public int getDBID ( Cluster cluster ){
+    int xx=  cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+    int yy=cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
+    int XOFFSET=23;
+    int YOFFSET=5;
+    int ix = xx<0 ? xx+XOFFSET : xx+XOFFSET-1;
+    int iy = yy<0 ? yy+YOFFSET : yy+YOFFSET-1;
+    int dbid = ix + 2*XOFFSET*(YOFFSET*2-iy-1) + 1;
+    if      (yy ==  1 && xx>-10){ dbid-=9;}
+    else if (yy == -1 && xx<-10) {dbid-=9;}
+    else if (yy < 0){dbid-=18;}
+   return dbid;
+}
+  
+public int getDBID ( CalorimeterHit hit ){
+    int xx=  hit.getIdentifierFieldValue("ix");
+    int yy=  hit.getIdentifierFieldValue("iy");
+    int XOFFSET=23;
+    int YOFFSET=5;
+    int ix = xx<0 ? xx+XOFFSET : xx+XOFFSET-1;
+    int iy = yy<0 ? yy+YOFFSET : yy+YOFFSET-1;
+    int dbid = ix + 2*XOFFSET*(YOFFSET*2-iy-1) + 1;
+    if      (yy ==  1 && xx>-10){ dbid-=9;}
+    else if (yy == -1 && xx<-10) {dbid-=9;}
+    else if (yy < 0){dbid-=18;}
+   return dbid;
+}  
+    
+ /*
+ public int getCrystal (Cluster cluster){
+ int x,y,id=0;
+ x= cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+ y= cluster.getCalorimeterHits().get(0).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 (CalorimeterHit hit){
+ int x,y,id=0;
+ x= 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 getCrystalFront (Cluster cluster){
+ int x,y,id=0;
+ x= (-1)*cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+ y= cluster.getCalorimeterHits().get(0).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 getCrystalFront (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;
+ 
+ }   */
+}