Change of naming convention from Analyzer to RawAnalyser for classes that analyses...
[u/mrichter/AliRoot.git] / HLT / PHOS / AliHLTPHOSRawAnalyzerPeakFinder.cxx
1
2 /**************************************************************************
3  * Copyright(c) 2006, ALICE Experiment at CERN, All rights reserved.      *
4  *                                                                        *
5  * Author: Per Thomas Hille for the ALICE HLT Project.                    *
6  * Contributors are mentioned in the code where appropriate.              *
7  *                                                                        *
8  * Permission to use, copy, modify and distribute this software and its   *
9  * documentation strictly for non-commercial purposes is hereby granted   *
10  * without fee, provided that the above copyright notice appears in all   *
11  * copies and that both the copyright notice and this permission notice   *
12  * appear in the supporting documentation. The authors make no claims     *
13  * about the suitability of this software for any purpose. It is          *
14  * provided "as is" without express or implied warranty.                  *
15  **************************************************************************/
16
17 #include "AliHLTPHOSRawAnalyzerPeakFinder.h"
18 #include <iostream>
19
20 using std::cout;
21 using std::endl;
22
23 ClassImp(AliHLTPHOSRawAnalyzerPeakFinder) 
24
25
26 AliHLTPHOSRawAnalyzerPeakFinder::AliHLTPHOSRawAnalyzerPeakFinder(const AliHLTPHOSRawAnalyzerPeakFinder&):AliHLTPHOSRawAnalyzer(),tVector(0), aVector(0)
27 {
28
29 }
30
31
32 /**
33  * The AliHLTPHOSPeakfinder class is the class for extracting the basic signal parameters
34  * "timing" and "energy" from the PHOS raw data. Physical data will for a given readout channel be
35  * a sequense of ADC digitized 10 bit integer values, however for performance reasons all values used in
36  * calculation is of type double.
37  **/
38 AliHLTPHOSRawAnalyzerPeakFinder::AliHLTPHOSRawAnalyzerPeakFinder():AliHLTPHOSRawAnalyzer(),tVector(0), aVector(0) 
39 {
40   cout <<"You cannot invoke the Fitter without arguments"<<endl;;
41 }
42
43
44
45 AliHLTPHOSRawAnalyzerPeakFinder::~AliHLTPHOSRawAnalyzerPeakFinder()
46 {
47
48 } //end AliHLTPHOSRawAnalyzerPeakFinder
49
50 void 
51 AliHLTPHOSRawAnalyzerPeakFinder::SetTVector(double *tVec)
52 {
53   tVector = tVec;
54 }
55
56 void
57 AliHLTPHOSRawAnalyzerPeakFinder::SetAVector(double *aVec)
58 {
59   aVector = aVec;
60
61 }
62
63 /**
64 * Extraction of timing and energy using the Peakfinde Algorithm.
65 * The. The parameters "start" and "length" defines a sub array  of the data array
66 * that will be used for the the fit. If start+length must not exeed the total length
67 * of the Data array. "start" must be chosen as close as possible to t0.
68 * The baseline must also be subtracted.
69 * The length of "tVector" and "aVector" mus be equal to length.
70 * "index + length" must not exeed the length of the data array set in the constructor.
71 * @param start the start index of the subarray of the data array. 
72 * @param length the number of samples to use starting from index 
73 * @param tVector the peakfinder vector for timing
74 * @param aVector the peakfinder vector for amplitude (energy)
75 **/
76 void 
77 AliHLTPHOSRawAnalyzerPeakFinder::Evaluate(int start, int length)
78 {
79   fDTof = 0;
80   fDAmpl = 0;
81
82   if(tVector == 0 || aVector == 0)
83     {
84       printf("\nError: the peakfinder vectors are not specified, aborting !!!\n");
85     }
86   else
87     {
88
89       printf("\nstart = %d, length = %d\n", start, length);   
90       double tmpTime[1008];
91       
92       for(int i=0; i < length; i++)
93         {  
94           fDAmpl += aVector[i]*fFloatDataPtr[i];    
95         }
96   
97       for(int i=0; i < length; i++)
98         {   
99           tmpTime[i] = tVector[i]*fFloatDataPtr[i];
100           fDTof = fDTof + tmpTime[i]; 
101         }
102
103       fDTof = fDTof/fDAmpl;
104     }
105   //thats all 
106 } //end FitPeakFinder
107
108
109
110