1 // $Id: AliHLTPHOSSanityInspector.cxx 35107 2009-09-30 01:45:06Z phille $
3 /**************************************************************************
4 * This file is property of and copyright by the ALICE HLT Project *
5 * All rights reserved. *
7 * Primary Authors: Oystein Djuvsland *
9 * Permission to use, copy, modify and distribute this software and its *
10 * documentation strictly for non-commercial purposes is hereby granted *
11 * without fee, provided that the above copyright notice appears in all *
12 * copies and that both the copyright notice and this permission notice *
13 * appear in the supporting documentation. The authors make no claims *
14 * about the suitability of this software for any purpose. It is *
15 * provided "as is" without express or implied warranty. *
16 **************************************************************************/
19 * @file AliHLTCaloSanityInspector.cxx
20 * @author Oystein Djuvsland
22 * @brief Sanity inspector for Calo HLT
25 // see header file for class documentation
27 // refer to README to build package
29 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
31 #include "AliHLTCaloSanityInspector.h"
34 ClassImp(AliHLTCaloSanityInspector);
37 AliHLTCaloSanityInspector::AliHLTCaloSanityInspector() :
41 //See header file for documentation
45 AliHLTCaloSanityInspector::~AliHLTCaloSanityInspector()
47 //See header file for documentation
53 AliHLTCaloSanityInspector::CheckInsanity(const UInt_t* data, const Int_t N) const
55 //See header file for documentation
57 for(Int_t i = 1; i < N; i++)
59 if((((Int_t)data[i] - (Int_t)data[i-1]) > fMaxDifference) || (((Int_t)data[i-1] - (Int_t)data[i]) > fMaxDifference))
67 AliHLTCaloSanityInspector::CheckInsanity(Int_t* data, Int_t N)
69 //See header file for documentation
70 for(Int_t i = 1; i < N; i++)
72 if((((Int_t)data[i] - (Int_t)data[i-1]) > fMaxDifference) || (((Int_t)data[i-1] - (Int_t)data[i]) > fMaxDifference))
81 AliHLTCaloSanityInspector::CheckAndHealInsanity(UInt_t* data, Int_t N)
84 //See header file for documentation
90 //Require a stable start
91 if((((Int_t)data[0] - (Int_t)data[1]) > fMaxDifference) || (((Int_t)data[1] - (Int_t)data[0]) > fMaxDifference))
93 if((((Int_t)data[1] - (Int_t)data[2]) > fMaxDifference) || (((Int_t)data[2] - (Int_t)data[1]) > fMaxDifference))
97 for(Int_t i = 2; i < N - 3; i++)
99 if((((Int_t)data[i] - (Int_t)data[i+1]) > fMaxDifference) || (((Int_t)data[i+1] - (Int_t)data[i]) > fMaxDifference))
102 if((((Int_t)data[i] -(Int_t)data[i+1]) > fMaxDifference) || (((Int_t)data[i+1] - (Int_t)data[i]) > fMaxDifference))
105 if((((Int_t)data[i] - (Int_t)data[i+1]) > fMaxDifference) || (((Int_t)data[i+1] - (Int_t)data[i]) > fMaxDifference))
107 return -2; //Too crazy
109 data[i-1] = ((Int_t)data[i] + (Int_t)data[i-2])/2;
113 return -3; //Two spikes in a row?
119 if((((Int_t)data[N - 3] -(Int_t) data[N - 2]) > fMaxDifference) ||
120 (((Int_t)data[N - 2] - (Int_t)data[N - 3]) > fMaxDifference))
122 if((((Int_t)data[N - 2] - (Int_t)data[N - 1]) > fMaxDifference) ||
123 (((Int_t)data[N - 1] - (Int_t)data[N - 2]) > fMaxDifference))
125 data[N - 2] = ((Int_t)data[N - 3] + (Int_t)data[N - 1])/2;
132 if((((Int_t)data[N - 2] - (Int_t)data[N - 1]) > fMaxDifference) ||
133 (((Int_t)data[N - 1] - (Int_t)data[N - 2]) > fMaxDifference))
135 // (Int_t)data[N - 3] = (Int_t)data[N - 4] -(Int_t) data[N - 5] + (Int_t)data[N-4];
136 data[N - 1] = data[N - 2];
149 AliHLTCaloSanityInspector::CheckAndHealInsanity(Int_t* data, Int_t N)
151 //See header file for documentation
157 if((((Int_t)data[0] - (Int_t)data[1]) > fMaxDifference) || (((Int_t)data[1] - (Int_t)data[0]) > fMaxDifference))
159 if((((Int_t)data[1] - (Int_t)data[2]) > fMaxDifference) || (((Int_t)data[2] - (Int_t)data[1]) > fMaxDifference))
163 for(Int_t i = 2; i < N - 3; i++)
165 if((((Int_t)data[i] - (Int_t)data[i+1]) > fMaxDifference) || (((Int_t)data[i+1] - (Int_t)data[i]) > fMaxDifference))
168 if((((Int_t)data[i] -(Int_t)data[i+1]) > fMaxDifference) || (((Int_t)data[i+1] - (Int_t)data[i]) > fMaxDifference))
171 if((((Int_t)data[i] - (Int_t)data[i+1]) > fMaxDifference) || (((Int_t)data[i+1] - (Int_t)data[i]) > fMaxDifference))
173 return -2; //Too crazy
175 data[i-1] = ((Int_t)data[i] + (Int_t)data[i-2])/2;
179 return -3; //Two spikes in a row?
185 if((((Int_t)data[N - 3] -(Int_t) data[N - 2]) > fMaxDifference) ||
186 (((Int_t)data[N - 2] - (Int_t)data[N - 3]) > fMaxDifference))
188 if((((Int_t)data[N - 2] - (Int_t)data[N - 1]) > fMaxDifference) ||
189 (((Int_t)data[N - 1] - (Int_t)data[N - 2]) > fMaxDifference))
191 data[N - 2] = ((Int_t)data[N - 3] + (Int_t)data[N - 1])/2;
198 if((((Int_t)data[N - 2] - (Int_t)data[N - 1]) > fMaxDifference) ||
199 (((Int_t)data[N - 1] - (Int_t)data[N - 2]) > fMaxDifference))
201 // (Int_t)data[N - 3] = (Int_t)data[N - 4] -(Int_t) data[N - 5] + (Int_t)data[N-4];
202 data[N - 1] = data[N - 2];