1 /**************************************************************************
2 * Copyright(c) 2006, ALICE Experiment at CERN, All rights reserved. *
4 * Author: Per Thomas Hille for the ALICE HLT Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 #include "AliHLTPHOSRawAnalyzerPeakFinder.h"
23 ClassImp(AliHLTPHOSRawAnalyzerPeakFinder)
26 AliHLTPHOSRawAnalyzerPeakFinder::AliHLTPHOSRawAnalyzerPeakFinder(const AliHLTPHOSRawAnalyzerPeakFinder&):AliHLTPHOSRawAnalyzer() , fTVectorPtr(0), fAVectorPtr(0), fTVectorSize(0), fAVectorSize(0)
34 * The AliHLTPHOSPeakfinder class is the class for extracting the basic signal parameters
35 * "timing" and "energy" from the PHOS raw data. Physical data will for a given readout channel be
36 * a sequense of ADC digitized 10 bit integer values, however for performance reasons all values used in
37 * calculation is of type double.
39 AliHLTPHOSRawAnalyzerPeakFinder::AliHLTPHOSRawAnalyzerPeakFinder():AliHLTPHOSRawAnalyzer(), fTVectorPtr(0), fAVectorPtr(0), fTVectorSize(0), fAVectorSize(0)
41 // cout <<"PeakFinder:You cannot invoke the Fitter without arguments"<<endl;;
46 AliHLTPHOSRawAnalyzerPeakFinder::~AliHLTPHOSRawAnalyzerPeakFinder()
49 } //end AliHLTPHOSRawAnalyzerPeakFinder
52 AliHLTPHOSRawAnalyzerPeakFinder::SetTVector(Double_t *tVec, Int_t size)
61 fTVectorPtr = new Double_t[size];
63 for(int i=0; i< size; i++)
65 fTVectorPtr[i] = tVec[i];
71 AliHLTPHOSRawAnalyzerPeakFinder::SetAVector(Double_t *aVec, Int_t size)
81 fAVectorPtr = new Double_t[size];
83 for(int i=0; i< size; i++)
85 fAVectorPtr[i] = aVec[i];
92 * Extraction of timing and energy using the Peakfinde Algorithm.
93 * The. The parameters "start" and "length" defines a sub array of the data array
94 * that will be used for the the fit. If start+length must not exeed the total length
95 * of the Data array. "start" must be chosen as close as possible to t0.
96 * The baseline must also be subtracted.
97 * The length of "tVector" and "aVector" mus be equal to length.
98 * "index + length" must not exeed the length of the data array set in the constructor.
99 * @param start the start index of the subarray of the data array.
100 * @param length the number of samples to use starting from index
101 * @param tVector the peakfinder vector for timing
102 * @param aVector the peakfinder vector for amplitude (energy)
105 AliHLTPHOSRawAnalyzerPeakFinder::Evaluate(int start, int length)
107 // printf("\n AliHLTPHOSRawAnalyzerPeakFinder::Evaluat from index %d to %d\n", start, start + length);
113 if(fTVectorPtr == 0 || fAVectorPtr == 0)
115 printf("\nError: the peakfinder vectors are not specified, aborting !!!\n");
120 if(length < fTVectorSize)
126 tmpLength = fTVectorSize;
129 printf("\nstart = %d, length = %d\n", start, tmpLength);
131 for(int i=0; i < tmpLength; i++)
133 cout <<fFloatDataPtr[i]<< " ";
134 fDAmpl += fAVectorPtr[i]*fFloatDataPtr[i];
139 for(int i=0; i < tmpLength; i++)
141 fDTof += fTVectorPtr[i]*fFloatDataPtr[i];
142 cout <<fFloatDataPtr[i]<< " ";
149 Double_t tmpMax = GetMaxValue(fFloatDataPtr, tmpLength);
156 fDTof = fDTof/fDAmpl;
160 cout <<" AliHLTPHOSRawAnalyzerPeakFinder: amplitude ="<<fDAmpl<< endl;
161 cout <<" AliHLTPHOSRawAnalyzerPeakFinder: time ="<<fDTof<< endl << endl;
163 } //end FitPeakFinder