diff --git a/dump.cc b/dump.cc
index aeb9ef1d7e662a50c350240441c0d4e803097608..965167ede67a7a022e3c62a1ed46c05423b5be1f 100644
--- a/dump.cc
+++ b/dump.cc
@@ -58,12 +58,17 @@ int main (int argc, char **argv) {
//
// File reading and processing
//
+ double rt=0., ft=0., tt=0.;
cerr << "Reading file" << endl;
while(NbPulses!=-1) {
NbPulses=Input.ReadOneSecond(&Data,Pulse,MAXPULSEPERSEC);
- for (int j=CHANNELS-1; j>=0; j--)
- cout << Pulse[0].IsTriggered(j) << " ";
- cout << endl;
+ for (int i=0; i<NbPulses; i++) {
+ rt = Pulse[i].GetRiseTime(2);
+ ft = Pulse[i].GetFallTime(2);
+ tt = Pulse[i].GetFullTime(2);
+ if (rt>0 && ft>0)
+ cout << rt << " " << ft << " " << tt << endl;
+ }
}
return 0;
}
diff --git a/lago_data.h b/lago_data.h
index c5f582542ed171c9c0b75bfbdf5e2b2b842416dd..ebf05b1d08ee59ffd979da398fe4d67c53a60dae 100644
--- a/lago_data.h
+++ b/lago_data.h
@@ -139,7 +139,55 @@ class LagoEvent {
return charge;
}
- void dump() {
+ double GetTfraction(int channel, int fraction) {
+ if (fraction < 10 || fraction > 100)
+ return -1;
+ double charge = (double) GetCharge(channel);
+ if (!charge)
+ return -2;
+ int i=0;
+ double s = 0.;
+ double dy = 0.;
+ double x = 0.;
+ double limit = fraction / 100.;
+ for (i=0; i<currentbinfilled; i++) {
+ dy = 1.0 * (trace[channel][i] - BASELINE) / charge;
+ s += dy;
+ if (s >= limit)
+ break;
+ }
+ if (!i)
+ return -3;
+ if (!dy)// no changes from previous bin? should not happen thanks to the equal sign in the comparisson, but just in case
+ return ((i-1.)*BIN); // return previous bin
+ x = (1.0 * i - ((s - limit) / dy)) * BIN;
+ return x;
+ }
+
+ double GetCharTime(int channel, int up, int low) {
+ if (up < low)
+ return -1; // stupid user
+ double Tu=GetTfraction(channel,up);
+ double Tl=GetTfraction(channel,low);
+ if (Tu >= 0 && Tl >= 0)
+ return (Tu-Tl);
+ else
+ return -1;
+ }
+
+ double GetRiseTime (int channel) {
+ return GetCharTime(channel,50,10);
+ }
+
+ double GetFallTime (int channel) {
+ return GetCharTime(channel,90,50);
+ }
+
+ double GetFullTime (int channel) {
+ return GetCharTime(channel,90,10);
+ }
+
+ void dump() {
std::cout
<< "# trg: " << trigger << " cnt: " << counter << " clk: " << clockcount << " "
<< std::endl;
diff --git a/lago_defs.h b/lago_defs.h
index b33a19360a184d9fa6c29c943c5f414b924cd4bd..d3d5044fe17b9d09f5789022cb5cb791fcc2ca78 100644
--- a/lago_defs.h
+++ b/lago_defs.h
@@ -38,5 +38,6 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
#define CHANNELS 3
#define TRACELEN 12
#define BASELINE 50
+#define BIN 25.
#endif