]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EMCAL/AliCaloRawAnalyzer.cxx
#95494: Change AliLog message in AliAltroRawStreamV3.cxx (additional reduction of...
[u/mrichter/AliRoot.git] / EMCAL / AliCaloRawAnalyzer.cxx
index d74b1994a42f9b7f7d45a241aab054c5a078bc52..bdec18b523c47ffd4c60f83b5a787fb5d2892cd4 100644 (file)
@@ -45,13 +45,19 @@ AliCaloRawAnalyzer::AliCaloRawAnalyzer(const char *name, const char *nameshort)
   fNsamplePed(3),
   fIsZerosupressed( false ),
   fVerbose( false ),
-  fAlgo(Algo::kNONE)
+  fAlgo(Algo::kNONE), 
+  fL1Phase(0),
+  fAmp(0),
+  fTof(0),
+  fTau( EMCAL::TAU )
 {
   //Comment 
   snprintf(fName, 256,"%s", name);
   snprintf(fNameShort,256, "%s", nameshort);
-    
-  for(int i=0; i < MAXSAMPLES; i++ )
+  //  sprintf(fName ,"%s", name);
+  // sprintf(fNameShort, "%s", nameshort);
+  
+  for(int i=0; i < ALTROMAXSAMPLES; i++ )
     {
       fReversed[i] = 0;
     }
@@ -67,7 +73,7 @@ void
 AliCaloRawAnalyzer::SetTimeConstraint(const int min, const int max ) 
 {
   //Require that the bin if the maximum ADC value is between min and max (timebin)
-  if(  ( min > max ) || min > MAXSAMPLES  || max > MAXSAMPLES  )
+  if(  ( min > max ) || min > ALTROMAXSAMPLES  || max > ALTROMAXSAMPLES  )
     {
       AliWarning( Form( "Attempt to set Invalid time bin range (Min , Max) = (%d, %d), Ingored",  min, max ) ); 
     }
@@ -97,39 +103,39 @@ AliCaloRawAnalyzer::Max(const UShort_t *data, const int length ) const
 
 
 void 
-AliCaloRawAnalyzer::SelectSubarray( const Double_t *fData, const int length, const short maxindex, int *const first,  int *const last ) const
+AliCaloRawAnalyzer::SelectSubarray( const Double_t *data, const int length, const short maxindex,int *const first,  int *const last, const int cut) const
 {
   //Selection of subset of data from one bunch that will be used for fitting or
   //Peak finding.  Go to the left and right of index of the maximum time bin
   //Until the ADC value is less that fFitArrayCut, or derivative changes sign (data jump)
   int tmpfirst =  maxindex;
   int tmplast  =  maxindex;
-  Double_t prevFirst =  fData[maxindex];
-  Double_t prevLast  =  fData[maxindex];  
+  Double_t prevFirst =  data[maxindex];
+  Double_t prevLast  =  data[maxindex];  
   bool firstJump = false;
   bool lastJump = false;
 
-  while( (tmpfirst >= 0) && (fData[tmpfirst] >= fFitArrayCut) && (!firstJump) ) 
+  while( (tmpfirst >= 0) && (data[tmpfirst] >= cut ) && (!firstJump) ) 
     {
       // jump check:
       if (tmpfirst != maxindex) { // neighbor to maxindex can share peak with maxindex
-       if (fData[tmpfirst] >= prevFirst) {
+       if ( data[tmpfirst] >= prevFirst) {
          firstJump = true;
        }
       }
-      prevFirst = fData[tmpfirst];
+      prevFirst = data[tmpfirst];
       tmpfirst -- ;
     }
   
-  while( (tmplast < length) && (fData[tmplast] >= fFitArrayCut) && (!lastJump) ) 
+  while( (tmplast < length) && (data[tmplast] >=  cut ) && (!lastJump) ) 
     {
       // jump check:
       if (tmplast != maxindex) { // neighbor to maxindex can share peak with maxindex
-       if (fData[tmplast] >= prevLast) {
+       if ( data[tmplast] >= prevLast) {
          lastJump = true;
        }
       }
-      prevLast = fData[tmplast];
+      prevLast = data[tmplast];
       tmplast ++;
     }
 
@@ -238,7 +244,7 @@ AliCaloRawAnalyzer::CheckBunchEdgesForMax( const AliCaloBunchInfo *const bunch )
 
 
 int 
-AliCaloRawAnalyzer::SelectBunch( const vector<AliCaloBunchInfo> &bunchvector,short *const maxampbin, short *const maxamplitude ) const
+AliCaloRawAnalyzer::SelectBunch( const vector<AliCaloBunchInfo> &bunchvector, short *const maxampbin, short *const maxamplitude )
 {
   //We select the bunch with the highest amplitude unless any time constraints is set
   short max = -1;
@@ -249,7 +255,7 @@ AliCaloRawAnalyzer::SelectBunch( const vector<AliCaloBunchInfo> &bunchvector,sho
   for(unsigned int i=0; i < bunchvector.size(); i++ )
     {
       max = Max(  &bunchvector.at(i), &indx ); // CRAP PTH, bug fix, trouble if more than one bunches  
-      if( IsInTimeRange( indx) )
+      if( IsInTimeRange( indx, fMaxTimeIndex, fMinTimeIndex) )
        {
          if( max > maxall )
            {
@@ -273,19 +279,19 @@ AliCaloRawAnalyzer::SelectBunch( const vector<AliCaloBunchInfo> &bunchvector,sho
 
 
 bool 
-AliCaloRawAnalyzer::IsInTimeRange( const int maxindex  ) const
+AliCaloRawAnalyzer::IsInTimeRange( const int maxindex, const int maxtindx, const int mintindx ) const
 {
   // Ckeck if the index of the max ADC vaue is consistent with trigger.
-  if( ( fMinTimeIndex  < 0 && fMaxTimeIndex  < 0) ||fMaxTimeIndex  < 0 )
+  if( ( mintindx  < 0 && maxtindx   < 0) ||maxtindx  < 0 )
     {
       return true; 
     }
-  return ( maxindex < fMaxTimeIndex ) && ( maxindex > fMinTimeIndex  ) ? true : false;
+  return ( maxindex < maxtindx ) && ( maxindex > mintindx  ) ? true : false;
 }
 
 
 void 
-AliCaloRawAnalyzer::PrintBunches( const vector<AliCaloBunchInfo> &bvctr ) const
+AliCaloRawAnalyzer::PrintBunches( const vector<AliCaloBunchInfo> &bvctr ) 
 {
   //comment
   cout << __FILE__ << __LINE__<< "*************** Printing Bunches *******************" << endl;
@@ -301,7 +307,7 @@ AliCaloRawAnalyzer::PrintBunches( const vector<AliCaloBunchInfo> &bvctr ) const
 
 
 void 
-AliCaloRawAnalyzer::PrintBunch( const AliCaloBunchInfo &bunch ) const
+AliCaloRawAnalyzer::PrintBunch( const AliCaloBunchInfo &bunch )
 {
   //comment
   cout << __FILE__ << ":" << __LINE__ << endl;
@@ -320,7 +326,7 @@ Double_t
 AliCaloRawAnalyzer::CalculateChi2(const Double_t amp, const Double_t time,
                                  const Int_t first, const Int_t last,
                                  const Double_t adcErr, 
-                                 const Double_t tau)
+                                 const Double_t tau) const
 {
   //   Input:
   //   amp   - max amplitude;
@@ -405,43 +411,35 @@ AliCaloRawAnalyzer::CalculateMeanAndRMS(const Int_t first, const Int_t last,
 
 
 
-// AliCaloFitResults
-// AliCaloRawAnalyzer::Evaluate( const vector<AliCaloBunchInfo>  &/*bunchvector*/, const UInt_t /*altrocfg1*/,  const UInt_t /*altrocfg2*/)
-// { // method to do the selection of what should possibly be fitted
-//   // not implemented for base class
-//   cout << __FILE__ << ":" << __LINE__ << " " << endl;
-  
-//   return AliCaloFitResults( 0, 0 );
-// }
-
-
-
 int
-AliCaloRawAnalyzer::PreFitEvaluateSamples( const vector<AliCaloBunchInfo>  &bunchvector, const UInt_t altrocfg1,  const UInt_t altrocfg2, Int_t & index, Float_t & maxf, short & maxamp, short & maxrev, Float_t & ped, int & first, int & last)
+AliCaloRawAnalyzer::PreFitEvaluateSamples( const vector<AliCaloBunchInfo>  &bunchvector, const UInt_t altrocfg1,  
+                                          const UInt_t altrocfg2, Int_t & index, Float_t & maxf, short & maxamp, 
+                                          short & maxrev, Float_t & ped, int & first, int & last,const int acut )
 { // method to do the selection of what should possibly be fitted
   int nsamples  = 0;
   short maxampindex = 0;
   index = SelectBunch( bunchvector,  &maxampindex,  &maxamp ); // select the bunch with the highest amplitude unless any time constraints is set
 
   
-  if( index >= 0 && maxamp >= fAmpCut) // something valid was found, and non-zero amplitude
+  if( index >= 0 && maxamp >= acut ) // something valid was found, and non-zero amplitude
     {
       // use more convenient numbering and possibly subtract pedestal
       ped  = ReverseAndSubtractPed( &(bunchvector.at(index)),  altrocfg1, altrocfg2, fReversed  );
       maxf = TMath::MaxElement( bunchvector.at(index).GetLength(),  fReversed );
       
-      if ( maxf >= fAmpCut ) // possibly significant signal
+      if ( maxf >= acut  ) // possibly significant signal
        {
          // select array around max to possibly be used in fit
          maxrev = maxampindex - bunchvector.at(index).GetStartBin(); 
-         SelectSubarray( fReversed,  bunchvector.at(index).GetLength(),  maxrev, &first, &last);
+         SelectSubarray( fReversed,  bunchvector.at(index).GetLength(),  maxrev, &first, &last, acut );
 
          // sanity check: maximum should not be in first or last bin
          // if we should do a fit
-         if (first!=maxrev && last!=maxrev) {
-           // calculate how many samples we have 
-           nsamples =  last - first + 1;         
-         }
+         if (first!=maxrev && last!=maxrev) 
+           {
+             // calculate how many samples we have 
+             nsamples =  last - first + 1;       
+           }
        }
     }