/*
* 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.jlab.hipo.io;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author gavalian
*/
public class HipoFileInfo {
List fileRecords = new ArrayList();
private int numberOfEvents = 0;
private int currentRecord = 0;
private int currentEvent = 0;
private int currentRecordLastEvent = 0;
private int currentRecordFirstEvent = 0;
public HipoFileInfo(){
}
public void addRecord(HipoRecordHeader header){
this.fileRecords.add(header);
}
public void clear(){
this.fileRecords.clear();
this.currentEvent =0;
this.currentRecord = 0;
this.currentRecordFirstEvent =0;
this.currentRecordLastEvent =0;
}
public void reset(){
currentEvent = 0;
currentRecord = 0;
currentRecordLastEvent = 0;
currentRecordFirstEvent = 0;
numberOfEvents = 0;
if(fileRecords.size()>0){
currentRecordLastEvent = fileRecords.get(0).getNumberOfEvents()-1;
for(int i = 0; i < fileRecords.size(); i++){
numberOfEvents += fileRecords.get(i).getNumberOfEvents();
}
}
}
private void incrementRecord(){
currentRecord++;
this.currentRecordFirstEvent = this.currentRecordLastEvent+1;
this.currentRecordLastEvent =
this.currentRecordFirstEvent +
fileRecords.get(currentRecord).getNumberOfEvents()-1;
}
public void setEvent(int index){
if(index>currentEvent){
if(index <= currentRecordLastEvent){
currentEvent = index;
} else {
currentEvent = index;
while(currentEvent>currentRecordLastEvent){
this.incrementRecord();
}
}
}
}
public int getRecord(){
return this.currentRecord;
}
public int getEventOffset(){
return (currentEvent - currentRecordFirstEvent);
}
public static void main(String[] args){
String filename = "/Users/gavalian/Work/Software/Release-4a.0/COATJAVA/coatjava/clas12dst_000809.hipo";
//HipoBenchmark.recordReadingBenchmark(filename);
//HipoBenchmark.eventReadingBenchmark(filename);
HipoReader reader = new HipoReader();
reader.open(filename);
int nevents = reader.getEventCount();
System.out.println(" N# = " + nevents);
for(int i = 42000000; i < nevents; i++){
reader.getFileInfo().setEvent(i);
System.out.println(" I = " + i
+ " RECORD = " + reader.getFileInfo().getRecord()
+ " OFFSET = " + reader.getFileInfo().getEventOffset());
}
}
}
Ads help maintain this website.