Changeset 7867
- Timestamp:
- 08/08/06 17:51:35 (18 years ago)
- Location:
- trunk/MagicSoft/Mars
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Mars/Changelog
r7865 r7867 28 28 * msignal/MExtractedSignalCam.cc: 29 29 - some update to returning the hi-/lo-gain ratio 30 31 * mbase/MMath.[h,cc]: 32 - new functions MedianDev 33 34 * mhist/MHCamera.[h,cc]: 35 - new function GetMedian 36 - new function GetMedianDev 30 37 31 38 -
trunk/MagicSoft/Mars/NEWS
r7850 r7867 8 8 - general: Fixed some warnings thrown if more warnings are switched 9 9 on in the compiler 10 11 - general: Added a function to MMath which returns the Median of 12 the distribution abs(y[i]-median), which is somehow the median 13 counterpart of the rms. 10 14 11 15 - showplot: -
trunk/MagicSoft/Mars/mbase/MMath.cc
r7672 r7867 161 161 } 162 162 163 // ------------------------------------------------------------------------ 164 // 165 // Return the median value of the distribution of abs(a[i]-Median) 166 // 167 template <class Size, class Element> 168 Double_t MMath::MedianDevImp(Size n, const Element *a) 169 { 170 // Get median of distribution 171 const Double_t med = TMath::Median(n, a); 172 173 // Allocate space for distribution 174 Double_t *arr = new Double_t[n]; 175 176 // Create the abs(a[i]-med) distribution 177 for (int i=0; i<n; i++) 178 arr[i] = TMath::Abs(a[i]-med); 179 180 // FIXME: GausProb() is a workaround. It should be taken into account in Median! 181 const Double_t rc = TMath::Median(n, arr); 182 183 // delete space 184 delete arr; 185 186 // return result 187 return rc; 188 } 189 190 // ------------------------------------------------------------------------ 191 // 192 // Return the median value of the distribution of abs(a[i]-Median) 193 // 194 Double_t MMath::MedianDev(Long64_t n, const Short_t *a) 195 { 196 return MedianDevImp(n, a); 197 } 198 199 // ------------------------------------------------------------------------ 200 // 201 // Return the median value of the distribution of abs(a[i]-Median) 202 // 203 Double_t MMath::MedianDev(Long64_t n, const Int_t *a) 204 { 205 return MedianDevImp(n, a); 206 } 207 208 // ------------------------------------------------------------------------ 209 // 210 // Return the median value of the distribution of abs(a[i]-Median) 211 // 212 Double_t MMath::MedianDev(Long64_t n, const Float_t *a) 213 { 214 return MedianDevImp(n, a); 215 } 216 217 // ------------------------------------------------------------------------ 218 // 219 // Return the median value of the distribution of abs(a[i]-Median) 220 // 221 Double_t MMath::MedianDev(Long64_t n, const Double_t *a) 222 { 223 return MedianDevImp(n, a); 224 } 225 226 // ------------------------------------------------------------------------ 227 // 228 // Return the median value of the distribution of abs(a[i]-Median) 229 // 230 Double_t MMath::MedianDev(Long64_t n, const Long_t *a) 231 { 232 return MedianDevImp(n, a); 233 } 234 235 // ------------------------------------------------------------------------ 236 // 237 // Return the median value of the distribution of abs(a[i]-Median) 238 // 239 Double_t MMath::MedianDev(Long64_t n, const Long64_t *a) 240 { 241 return MedianDevImp(n, a); 242 } 243 163 244 // -------------------------------------------------------------------------- 164 245 // -
trunk/MagicSoft/Mars/mbase/MMath.h
r7719 r7867 18 18 19 19 Double_t GaussProb(Double_t x, Double_t sigma=1, Double_t mean=0); 20 21 template <class Size, class Element> Double_t MedianDevImp(Size n, const Element *a); 22 Double_t MedianDev(Long64_t n, const Short_t *a); 23 Double_t MedianDev(Long64_t n, const Int_t *a); 24 Double_t MedianDev(Long64_t n, const Float_t *a); 25 Double_t MedianDev(Long64_t n, const Double_t *a); 26 Double_t MedianDev(Long64_t n, const Long_t *a); 27 Double_t MedianDev(Long64_t n, const Long64_t *a); 20 28 21 29 Double_t Significance(Double_t s, Double_t b); -
trunk/MagicSoft/Mars/mhist/MHCamera.cc
r7829 r7867 84 84 85 85 #include "MArrayD.h" 86 #include "MMath.h" // MMath::GaussProb 86 87 87 88 #define kItemsLegend 48 // see SetPalette(1,0) … … 312 313 for (Int_t idx=0; idx<fNcells-2; idx++) 313 314 arr[idx] ? SetUsed(idx) : ResetUsed(idx); 315 } 316 317 // ------------------------------------------------------------------------ 318 // 319 // Return the median value on the y-axis (profile option is correctly taken 320 // into account) 321 // 322 Stat_t MHCamera::GetMedian() const 323 { 324 // Just for speed reasons 325 if (!TestBit(kProfile)) 326 return TMath::Median(GetSize()-2, GetArray()+1); 327 328 // Copy profiled data into new array (FIXME: Should we take errors into account?) 329 TArrayD arr(fNcells-2); 330 for (int i=1; i<fNcells-1; i++) 331 arr[i-1] = GetBinContent(i); 332 333 // return Median of the profile data 334 return TMath::Median(arr.GetSize(), arr.GetArray()); 335 } 336 337 // ------------------------------------------------------------------------ 338 // 339 // Return the median value (divided by MMath::GausProb(1.0)) of the 340 // distribution of abs(y[i]-Median). This is my Median equivalent of the RMS 341 // 342 Stat_t MHCamera::GetMedianDev() const 343 { 344 // Just for speed reasons 345 if (!TestBit(kProfile)) 346 return MMath::MedianDev(GetSize()-2, GetArray()+1); 347 348 // Copy profiled data into new array (FIXME: Should we take errors into account?) 349 TArrayD arr(fNcells-2); 350 for (int i=1; i<fNcells-1; i++) 351 arr[i-1] = GetBinContent(i); 352 353 // return MedianDev of the profile data 354 return MMath::MedianDev(arr.GetSize(), arr.GetArray())/MMath::GaussProb(1.0); 314 355 } 315 356 -
trunk/MagicSoft/Mars/mhist/MHCamera.h
r7823 r7867 240 240 Stat_t GetMean(Int_t=0) const { return GetMeanSectors(TArrayI(), TArrayI(), kFALSE); } 241 241 Stat_t GetRMS(Int_t=0) const { return GetRmsSectors(TArrayI(), TArrayI(), kFALSE); } 242 243 Stat_t GetMedian() const; 244 Stat_t GetMedianDev() const; 242 245 243 246 Stat_t GetMeanSector(Int_t sector, Int_t aidx, Bool_t all=kFALSE) const
Note:
See TracChangeset
for help on using the changeset viewer.