176f19ba949e11dc5b61b4b4a78484c24fb865ae
[u/mrichter/AliRoot.git] / HLT / PHOS / AliHLTPHOSRawAnalyzer.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 "AliHLTPHOSRawAnalyzer.h"
17 //#include <iostream>
18
19 //using std::cout;
20 //using std::endl;
21
22 AliHLTPHOSRawAnalyzer:: AliHLTPHOSRawAnalyzer(): AliHLTPHOSBase(), fIntDataPtr(0), fSampleFrequency(10), fTau(2), fDTof(99999), fDAmpl(99999)
23 {
24  fIntDataPtr = new UInt_t[1008];
25 }
26
27 AliHLTPHOSRawAnalyzer::~AliHLTPHOSRawAnalyzer()
28 {
29   delete[] fIntDataPtr;
30 }
31
32
33
34 /**
35 * Main constructor
36 * @param dtaPtr Data array for wich a subarray will be taken to perform the fit
37 * @param fs the sampling frequency in entities of MHz. Needed in order to calculate physical time
38 **/
39 AliHLTPHOSRawAnalyzer::AliHLTPHOSRawAnalyzer(double *dtaPtr, double fs): AliHLTPHOSBase(), fIntDataPtr(0), fSampleFrequency(10), fTau(2), fDTof(99999), fDAmpl(99999), fStartIndex(0)
40 {
41   fSampleFrequency = fs;
42 } //end  
43
44
45 /**
46 * Attemps to level the basline to zero.
47 * The baseline will be calculated from the pretrigger samples and subtracted from the 
48 * data array. 
49 * If pretrigger samples are not present then the basline correction will be incorrect. 
50 * @param dataPtr array for wich to correct the basline 
51 * @param N the number of pretrigger samples used to calculate the baseline.
52 **/
53 void 
54 AliHLTPHOSRawAnalyzer::BaselineCorrection(double *dataPtr, int N)
55 {
56   cout << "Baseline correction not yet implemeted" << endl;
57 } //end BaselineCorrection
58
59
60 /**
61 * Shifts the baseline with the amount given by baselineValue
62 * If pretrigger samples are not present then the basline correction will be incorrect. 
63 * @param dataPtr array for wich to correct the basline 
64 * @param baselineValue the basline value to subtract..
65 **/
66 void 
67 AliHLTPHOSRawAnalyzer::BaselineCorrection(double *dataPtr, double baselineValue)
68 {
69   printf("\nbaselineValue = %f\n", baselineValue);
70   cout << "Baseline correction not yet implemeted" << endl;
71 } //end BaslineCorrection
72
73
74 /**
75  * Gives the timing in entities of sample indexes
76  * Physical time is found by multiplying  with the sampling intervall (Ts).
77  **/
78 float
79 AliHLTPHOSRawAnalyzer::GetTiming() const 
80 {
81   return fDTof;
82 } //end GetTiming
83
84
85 /**
86  * Gives the time in entities of ADC channels (quantization levels).  
87  * Absolute enrgy is found by multiplying with offline calibration constants.
88  **/
89 float
90 AliHLTPHOSRawAnalyzer::GetEnergy() const
91 {
92   return fDAmpl;
93 } //end GetEnergy
94
95
96 /**
97  * Set data array. Overrides data data array set in the constructor.
98  **/
99 void 
100 AliHLTPHOSRawAnalyzer::SetData(UInt_t *data)
101 {
102   fIntDataPtr = data;
103 }
104
105 /**
106  * Set data array. Overrides data data array set in the constructor.
107  **/
108 void 
109 AliHLTPHOSRawAnalyzer::SetData(double *data)
110 {
111   fFloatDataPtr = data;
112 }
113
114
115
116 void 
117 AliHLTPHOSRawAnalyzer::SetSampleFreq(double freq)
118 {
119   fSampleFrequency = freq;
120 }
121
122 int 
123 AliHLTPHOSRawAnalyzer::FindStartIndex(double treshold)
124 {
125   cout << "Find Start index not yet implemented" << endl;
126   return 0;
127 } //end FindStartIndex
128
129
130 /**
131  * This function applies only to the Chi and Least mean square fit. An initial guess is made
132  * based on the average of the first 5 samples and the first value exeeding this value.
133  **/
134 void 
135 AliHLTPHOSRawAnalyzer::MakeInitialGuess()
136 {
137   cout << "Make initial guess not yet implemeted" << endl;
138 }
139
140
141 /**
142  * This function applies only to the Chi and Least mean square fit. An initial guess is made
143  * based on the average of the first 5 samples and the first value exeeding threshold + this value.
144  * @param treshold The index of the first value above treshold is ntaken to be the first value.
145  **/
146 void 
147 AliHLTPHOSRawAnalyzer::MakeInitialGuess(int treshold)
148 {
149   cout << "Make initial guess not yet implemeted" << endl;  
150 }
151
152 void
153 AliHLTPHOSRawAnalyzer::SetStartIndex(int index)
154 {
155   fStartIndex = index;
156 }
157
158
159
160 void 
161 AliHLTPHOSRawAnalyzer::SetTVector(Double_t *tVector, Int_t size)
162 {
163   cout <<"ERROR: AliHLTPHOSRawAnalyzer::SetTVector:  You cannot set the peakfindervector here, must be set in derived class peakfinder"<<endl;
164 }
165
166
167
168 void
169 AliHLTPHOSRawAnalyzer::SetAVector(Double_t *aVector, Int_t size)
170 {
171  cout <<"ERROR: AliHLTPHOSRawAnalyzer::SetAVector:  You cannot set the peakfindervector here, must be set in derived class peakfinder"<<endl;
172 }
173
174 /*
175 UInt_t
176 AliHLTPHOSRawAnalyzer::GetMaxValue(UInt_t *dta, Int_t size) const
177 {
178
179   Double_t tmpMax = 0;
180
181   for(int i = 0; i < size; i++)
182     {
183       if(dta[i] > tmpMax)
184         {
185           tmpMax = dta[i];
186         }
187     }
188   
189   return tmpMax;
190
191 }
192 */