LISTSERV mailing list manager LISTSERV 16.5

Help for HPS-SVN Archives


HPS-SVN Archives

HPS-SVN Archives


HPS-SVN@LISTSERV.SLAC.STANFORD.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

HPS-SVN Home

HPS-SVN Home

HPS-SVN  February 2015

HPS-SVN February 2015

Subject:

r2063 - /java/trunk/users/src/main/java/org/hps/users/celentan/LedAnalysis.java

From:

[log in to unmask]

Reply-To:

Notification of commits to the hps svn repository <[log in to unmask]>

Date:

Fri, 6 Feb 2015 18:06:22 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (204 lines)

Author: [log in to unmask]
Date: Fri Feb  6 10:06:18 2015
New Revision: 2063

Log:
LedAnalysis driver, work in progress

Added:
    java/trunk/users/src/main/java/org/hps/users/celentan/LedAnalysis.java

Added: java/trunk/users/src/main/java/org/hps/users/celentan/LedAnalysis.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/celentan/LedAnalysis.java	(added)
+++ java/trunk/users/src/main/java/org/hps/users/celentan/LedAnalysis.java	Fri Feb  6 10:06:18 2015
@@ -0,0 +1,188 @@
+package org.hps.users.celentan;
+
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+import org.lcsim.geometry.Detector;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawCalorimeterHit;
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.base.BaseRawCalorimeterHit;
+
+import hep.aida.IHistogram1D;
+import hep.aida.IHistogram2D;
+import hep.aida.IPlotter;
+import hep.aida.IPlotterStyle;
+import hep.aida.IPlotterFactory;
+import hep.aida.IHistogramFactory;
+import hep.aida.ICloud1D;
+import hep.aida.ICloud2D;
+
+
+import org.hps.recon.ecal.ECalUtils;
+import org.hps.monitoring.ecal.plots.EcalMonitoringUtilities;
+import org.hps.conditions.database.DatabaseConditionsManager;
+import org.hps.conditions.database.TableConstants;
+import org.hps.conditions.ecal.EcalChannel;
+import org.hps.conditions.ecal.EcalChannel.EcalChannelCollection;
+import org.hps.conditions.ecal.EcalConditions;
+import org.hps.conditions.ecal.EcalLed;
+import org.hps.conditions.ecal.EcalLed.EcalLedCollection;
+import org.lcsim.conditions.ConditionsManager.ConditionsNotFoundException;
+
+public class LedAnalysis extends Driver{
+	
+	private static final int NUM_CHANNELS = 11 * 47;
+	
+	String inputCollectionRaw = "EcalReadoutHits";
+	String inputCollection = "EcalCalHits";	
+	AIDA aida;
+		
+	DatabaseConditionsManager conditionsManager;
+	
+	EcalChannelCollection ChannelCollection;	
+    EcalLedCollection LedCollection;
+    Map < Integer,Integer > LedTopMap;
+    Map < Integer,Integer > LedBotMap;
+    
+    private int id,row,column,chid,ledid,driverid;
+    private int eventN = 0;
+	private int nDrivers = 8;
+	private int nSteps = 56;
+	private  int[][] LEDStep = new int[][]{
+			//first 4 are the flasher1 sequence, TOP controller 
+			{2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,434,44,45,46,47,48,49,50,51,52,53,54,55,56,-1},
+			{57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,-1},
+			{112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,136,137,138,130,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168}, //missing 135 is ok
+			{169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,-1},
+			//second 4 are the flasher2 sequence, BOTTOM controller 
+			{2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,434,44,45,46,47,48,49,50,51,52,53,54,55,56,-1},	
+			{57,58,59,60,61,62,63,64,65,66,67,68,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113}, //missing 69 is OK
+			{114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,130,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,-1},	
+			{169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,-1},
+			};
+			
+	private int[] iStep = new int[nDrivers];
+	private int[] nEvents = new int[NUM_CHANNELS];
+	//Histograms
+	private ArrayList<IHistogram1D> hRaw;
+	private ArrayList<ICloud1D> hStrip;
+	
+	@Override
+	protected void detectorChanged(Detector detector) {
+		System.out.println("LedAnalysis::Detector changed was called");
+
+		// Setup conditions
+		
+		conditionsManager = DatabaseConditionsManager.getInstance();
+
+	    LedTopMap = new HashMap< Integer , Integer >(); //key: ecal channel ID. Value: 
+	    LedBotMap = new HashMap< Integer , Integer >();	
+		
+        ChannelCollection = conditionsManager.getCachedConditions(EcalChannel.EcalChannelCollection.class, "ecal_channels").getCachedData();	
+		LedCollection = conditionsManager.getConditionsData(EcalLedCollection.class, TableConstants.ECAL_LEDS);
+		
+		for (EcalChannel channel : ChannelCollection){
+			chid = channel.getChannelId();
+			for (EcalLed Led : LedCollection) {    	
+				if (Led.getEcalChannelId()==chid){
+					if (channel.getY()>0){
+						LedTopMap.put( chid , Led.getLedNumber() );
+					}
+					else if (channel.getY()<0){
+						LedBotMap.put( chid , Led.getLedNumber() );
+					}
+				}
+			}
+		}
+		
+		
+		// Setup plots
+		aida = AIDA.defaultInstance();
+		aida.tree().cd("/");
+		
+	  //  IPlotterFactory factory= aida.analysisFactory().createPlotterFactory("ECAL DAQ Plots");
+		
+		hRaw = new ArrayList<IHistogram1D>(NUM_CHANNELS);
+		hStrip = new ArrayList<ICloud1D>(NUM_CHANNELS);
+		
+		
+		
+		for (int ii=0;ii<NUM_CHANNELS;ii++){
+			int row = EcalMonitoringUtilities.getRowFromHistoID(ii);
+			int column = EcalMonitoringUtilities.getColumnFromHistoID(ii);
+			
+			// Initialize the histograms for the current crystal channel.
+			hRaw.add(aida.histogram1D("h1_"+ii, 1000, -1,30));
+			hStrip.add(aida.cloud1D("strip_"+ii,100000));
+		}
+		
+	}		
+	     
+	@Override
+	public void process(EventHeader event) {
+		eventN++;
+		if (event.hasCollection(CalorimeterHit.class, inputCollection)) {
+			//List<BaseRawCalorimeterHit> hits = event.get(BaseRawCalorimeterHit.class, inputCollectionRaw);
+			List<CalorimeterHit> hits = event.get(CalorimeterHit.class, inputCollection);
+			for (CalorimeterHit hit : hits) {
+			
+				column = hit.getIdentifierFieldValue("ix");
+				row = hit.getIdentifierFieldValue("iy");
+				id = EcalMonitoringUtilities.getHistoIDFromRowColumn(row, column);
+							
+				//find the LED
+				chid = ChannelCollection.findGeometric(hit.getCellID()).getChannelId();
+				if (row>0){
+					ledid=LedTopMap.get(chid);
+				}
+				else if (row<0){
+					ledid=LedBotMap.get(chid);
+				}
+				driverid=getDriver(ledid);
+				if (row<0) driverid+=4;
+				
+				/*First, check if this led is the one in the NEXT step. Therefore, increment by 1 the step*/
+				if (iStep[driverid]<(nSteps-1)){
+					if (ledid==LEDStep[driverid][iStep[driverid]+1]){
+						iStep[driverid]++;
+						System.out.println("LedAnalysis:: increment step "+driverid+" "+ledid+" "+column+" "+row+" "+id);
+					}	
+				}
+				/*Case 1: this led is the one in the corresponding step*/;
+				if (ledid==LEDStep[driverid][iStep[driverid]]){
+					hRaw.get(id).fill(hit.getCorrectedEnergy());
+					hStrip.get(id).fill(nEvents[id],hit.getCorrectedEnergy());
+					nEvents[id]++;
+				}
+				else{	/*Case 2: this led is not one in the corresponding step (but maybe is the neighborhood??Ctalk??)*/;
+					
+				}
+				
+		   }		
+	   }		
+	}
+	@Override
+	public void endOfData() {
+		System.out.println("LedAnalysis::end of data");
+	}	
+	
+	/**
+	 * This function returns the driver number (from 0 to 3) given the LED id.
+	 * @param led
+	 * @return
+	 */
+	public int getDriver(int led){
+		int ret=-1;	
+		if ((led>=2)&&(led<56)) ret=0;
+		else if ((led>=56)&&(led<112)) ret=1;
+		else if ((led>=112)&&(led<168)) ret=2;
+		else if ((led>=168)&&(led<224)) ret=3;
+		return ret;
+	}
+}	

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

November 2017
August 2017
July 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013

ATOM RSS1 RSS2



LISTSERV.SLAC.STANFORD.EDU

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager

Privacy Notice, Security Notice and Terms of Use