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