Skip to content

Channel offsets causes SVT readout simulation to crash #806

@omar-moreno

Description

@omar-moreno

Issues

  • When retrieving the hit queues (see SVTReadoutDriver::process), the index used maps directly to the channel ID of a hit. For the thin sensors, this is no longer valid because of the channel offset and leads to the following error
java.lang.ArrayIndexOutOfBoundsException: Index 510 out of bounds for length 510
	at org.hps.readout.svt.SVTReadoutDriver.process(SVTReadoutDriver.java:274)
	at org.lcsim.util.Driver.doProcess(Driver.java:261)
	at org.lcsim.util.Driver.processChildren(Driver.java:271)
	at org.lcsim.util.Driver.process(Driver.java:187)
	at org.lcsim.util.DriverAdapter.recordSupplied(DriverAdapter.java:74)
	at org.freehep.record.loop.DefaultRecordLoop.consumeRecord(DefaultRecordLoop.java:832)
	at org.freehep.record.loop.DefaultRecordLoop.loop(DefaultRecordLoop.java:668)
	at org.freehep.record.loop.DefaultRecordLoop.execute(DefaultRecordLoop.java:566)
	at org.lcsim.util.loop.LCSimLoop.loop(LCSimLoop.java:152)
	at org.lcsim.job.JobControlManager.run(JobControlManager.java:949)
	at org.hps.job.JobManager.main(JobManager.java:33)
org.lcsim.job:SEVERE A fatal error occurred when running the job.
java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException: Index 510 out of bounds for length 510
	at org.lcsim.util.loop.LCSimLoop.handleClientError(LCSimLoop.java:194)
	at org.freehep.record.loop.DefaultRecordLoop.consumeRecord(DefaultRecordLoop.java:834)
	at org.freehep.record.loop.DefaultRecordLoop.loop(DefaultRecordLoop.java:668)
	at org.freehep.record.loop.DefaultRecordLoop.execute(DefaultRecordLoop.java:566)
	at org.lcsim.util.loop.LCSimLoop.loop(LCSimLoop.java:152)
	at org.lcsim.job.JobControlManager.run(JobControlManager.java:949)
	at org.hps.job.JobManager.main(JobManager.java:33)
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 510 out of bounds for length 510
	at org.hps.readout.svt.SVTReadoutDriver.process(SVTReadoutDriver.java:274)
	at org.lcsim.util.Driver.doProcess(Driver.java:261)
	at org.lcsim.util.Driver.processChildren(Driver.java:271)
	at org.lcsim.util.Driver.process(Driver.java:187)
	at org.lcsim.util.DriverAdapter.recordSupplied(DriverAdapter.java:74)
	at org.freehep.record.loop.DefaultRecordLoop.consumeRecord(DefaultRecordLoop.java:832)
	... 5 more
  • Another issue related to this occurs when processing the hit queues after a trigger signal is received (see SVTReadoutDriver::getOnTriggerData). Currently, the hit queues are retrieved by index where the max is equal to the total number of channels in a sensor. The same index is used to retrieve the pedestals and noise from the conditions database and also used to create the channel ID. For thin sensors, using the index will lead to the retrieval of the wrong condition because of the channel offset. The channel ID will also be wrong because of this.

Solution

Apply a channel offset when hits from a L0/L1 sensor are being processed.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions