1 /**************************************************************************
2 * This file is property of and copyright by the ALICE HLT Project *
3 * All rights reserved. *
5 * Primary Authors: Oystein Djuvsland *
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 **************************************************************************/
17 * @file AliHLTPHOSSanityInspector.cxx
18 * @author Oystein Djuvsland
20 * @brief Sanity inspector for PHOS HLT
23 // see header file for class documentation
25 // refer to README to build package
27 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
29 #include "AliHLTPHOSSanityInspector.h"
32 ClassImp(AliHLTPHOSSanityInspector);
35 AliHLTPHOSSanityInspector::AliHLTPHOSSanityInspector() :
39 //See header file for documentation
43 AliHLTPHOSSanityInspector::~AliHLTPHOSSanityInspector()
45 //See header file for documentation
51 AliHLTPHOSSanityInspector::CheckInsanity(const UInt_t* data, const Int_t N) const
53 //See header file for documentation
55 for(Int_t i = 1; i < N; i++)
57 if((((Int_t)data[i] - (Int_t)data[i-1]) > fMaxDifference) || (((Int_t)data[i-1] - (Int_t)data[i]) > fMaxDifference))
65 AliHLTPHOSSanityInspector::CheckInsanity(Int_t* data, Int_t N)
67 //See header file for documentation
68 for(Int_t i = 1; i < N; i++)
70 if((((Int_t)data[i] - (Int_t)data[i-1]) > fMaxDifference) || (((Int_t)data[i-1] - (Int_t)data[i]) > fMaxDifference))
79 AliHLTPHOSSanityInspector::CheckAndHealInsanity(UInt_t* data, Int_t N)
82 //See header file for documentation
88 //Require a stable start
89 if((((Int_t)data[0] - (Int_t)data[1]) > fMaxDifference) || (((Int_t)data[1] - (Int_t)data[0]) > fMaxDifference))
91 if((((Int_t)data[1] - (Int_t)data[2]) > fMaxDifference) || (((Int_t)data[2] - (Int_t)data[1]) > fMaxDifference))
95 for(Int_t i = 2; i < N - 3; i++)
97 if((((Int_t)data[i] - (Int_t)data[i+1]) > fMaxDifference) || (((Int_t)data[i+1] - (Int_t)data[i]) > fMaxDifference))
100 if((((Int_t)data[i] -(Int_t)data[i+1]) > fMaxDifference) || (((Int_t)data[i+1] - (Int_t)data[i]) > fMaxDifference))
103 if((((Int_t)data[i] - (Int_t)data[i+1]) > fMaxDifference) || (((Int_t)data[i+1] - (Int_t)data[i]) > fMaxDifference))
105 return -2; //Too crazy
107 data[i-1] = ((Int_t)data[i] + (Int_t)data[i-2])/2;
111 return -3; //Two spikes in a row?
117 if((((Int_t)data[N - 3] -(Int_t) data[N - 2]) > fMaxDifference) ||
118 (((Int_t)data[N - 2] - (Int_t)data[N - 3]) > fMaxDifference))
120 if((((Int_t)data[N - 2] - (Int_t)data[N - 1]) > fMaxDifference) ||
121 (((Int_t)data[N - 1] - (Int_t)data[N - 2]) > fMaxDifference))
123 data[N - 2] = ((Int_t)data[N - 3] + (Int_t)data[N - 1])/2;
130 if((((Int_t)data[N - 2] - (Int_t)data[N - 1]) > fMaxDifference) ||
131 (((Int_t)data[N - 1] - (Int_t)data[N - 2]) > fMaxDifference))
133 // (Int_t)data[N - 3] = (Int_t)data[N - 4] -(Int_t) data[N - 5] + (Int_t)data[N-4];
134 data[N - 1] = data[N - 2];
147 AliHLTPHOSSanityInspector::CheckAndHealInsanity(Int_t* data, Int_t N)
149 //See header file for documentation
155 if((((Int_t)data[0] - (Int_t)data[1]) > fMaxDifference) || (((Int_t)data[1] - (Int_t)data[0]) > fMaxDifference))
157 if((((Int_t)data[1] - (Int_t)data[2]) > fMaxDifference) || (((Int_t)data[2] - (Int_t)data[1]) > fMaxDifference))
161 for(Int_t i = 2; i < N - 3; i++)
163 if((((Int_t)data[i] - (Int_t)data[i+1]) > fMaxDifference) || (((Int_t)data[i+1] - (Int_t)data[i]) > fMaxDifference))
166 if((((Int_t)data[i] -(Int_t)data[i+1]) > fMaxDifference) || (((Int_t)data[i+1] - (Int_t)data[i]) > fMaxDifference))
169 if((((Int_t)data[i] - (Int_t)data[i+1]) > fMaxDifference) || (((Int_t)data[i+1] - (Int_t)data[i]) > fMaxDifference))
171 return -2; //Too crazy
173 data[i-1] = ((Int_t)data[i] + (Int_t)data[i-2])/2;
177 return -3; //Two spikes in a row?
183 if((((Int_t)data[N - 3] -(Int_t) data[N - 2]) > fMaxDifference) ||
184 (((Int_t)data[N - 2] - (Int_t)data[N - 3]) > fMaxDifference))
186 if((((Int_t)data[N - 2] - (Int_t)data[N - 1]) > fMaxDifference) ||
187 (((Int_t)data[N - 1] - (Int_t)data[N - 2]) > fMaxDifference))
189 data[N - 2] = ((Int_t)data[N - 3] + (Int_t)data[N - 1])/2;
196 if((((Int_t)data[N - 2] - (Int_t)data[N - 1]) > fMaxDifference) ||
197 (((Int_t)data[N - 1] - (Int_t)data[N - 2]) > fMaxDifference))
199 // (Int_t)data[N - 3] = (Int_t)data[N - 4] -(Int_t) data[N - 5] + (Int_t)data[N-4];
200 data[N - 1] = data[N - 2];