Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-03 08:20:57

0001 #include "runningMean.h"
0002 
0003 runningMean::runningMean()
0004 {
0005   refArray = nullptr;
0006 }
0007 
0008 runningMean::~runningMean()
0009 {
0010   if (refArray) delete [] refArray;
0011 }
0012 
0013 int runningMean::setRefArray(const double darr[])
0014 {
0015   int i;
0016   if (refArray ==nullptr) 
0017     {
0018       refArray = new double[getNumberofChannels()];
0019     }
0020 
0021   for (i=0; i< getNumberofChannels(); i++) refArray[i] = darr[i];
0022 
0023   return 0;
0024 }
0025 
0026 int runningMean::setRefChannel(const int channel, const double refvalue)
0027 {
0028   int i;
0029   if (refArray ==nullptr) 
0030     {
0031       refArray = new double[getNumberofChannels()];
0032       for (i=0; i< getNumberofChannels(); i++) refArray[i] = 0;
0033     }
0034   
0035   if (channel < 0 || channel >= getNumberofChannels() ) return -1;
0036   refArray[channel] = refvalue;
0037   
0038   return 0;
0039 }
0040 
0041 int runningMean::setAsReference()
0042 {
0043   int i;
0044   if (refArray ==nullptr) 
0045     {
0046       refArray = new double[getNumberofChannels()];
0047     }
0048   for (i=0; i< getNumberofChannels(); i++) refArray[i] = getMean(i);
0049   return 0;
0050 }
0051 
0052 double runningMean::getReference(const int channel) const
0053 {
0054   if (refArray ==nullptr) return 0;
0055 
0056   if (channel < 0 || channel >= getNumberofChannels() ) return 0;
0057   return refArray[channel];
0058 }
0059 
0060 double runningMean::getPercentDeviation(const int channel) const
0061 {
0062   if (refArray ==nullptr) return 0;
0063 
0064    if (channel < 0 || channel >= getNumberofChannels() ) return 0;
0065 
0066    if (getReference(channel) == 0.) return 0.;
0067    return ( 100.* ( getMean(channel) - getReference(channel) ) / getReference(channel) );
0068 }
0069