CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

EcalFenixAmplitudeFilter Class Reference

calculates .... for Fenix strip, barrel input: 18 bits output: 18 bits More...

#include <EcalFenixAmplitudeFilter.h>

List of all members.

Public Member Functions

 EcalFenixAmplitudeFilter ()
virtual void process (std::vector< int > &addout, std::vector< int > &output)
void setParameters (uint32_t raw, const EcalTPGWeightIdMap *ecaltpgWeightMap, const EcalTPGWeightGroup *ecaltpgWeightGroup)
virtual ~EcalFenixAmplitudeFilter ()

Private Member Functions

int process ()
int setInput (int input)

Private Attributes

int buffer_ [5]
int inputsAlreadyIn_
int shift_
int weights_ [5]

Detailed Description

calculates .... for Fenix strip, barrel input: 18 bits output: 18 bits

\ class EcalFenixAmplitudeFilter

Definition at line 17 of file EcalFenixAmplitudeFilter.h.


Constructor & Destructor Documentation

EcalFenixAmplitudeFilter::EcalFenixAmplitudeFilter ( )

Definition at line 8 of file EcalFenixAmplitudeFilter.cc.

  :inputsAlreadyIn_(0), shift_(6) {
  }
EcalFenixAmplitudeFilter::~EcalFenixAmplitudeFilter ( ) [virtual]

Definition at line 12 of file EcalFenixAmplitudeFilter.cc.

                                                   {
}

Member Function Documentation

int EcalFenixAmplitudeFilter::process ( ) [private]

Definition at line 56 of file EcalFenixAmplitudeFilter.cc.

References buffer_, i, inputsAlreadyIn_, convertSQLitetoXML_cfg::output, shift_, and weights_.

Referenced by process(), and EcalFenixStrip::process_part1().

{
  //UB FIXME: 5
  if(inputsAlreadyIn_<5) return 0;
  int output=0;
  for(int i=0; i<5; i++)
    {
      output+=(weights_[i]*buffer_[i])>>shift_;
    }
  if(output<0) output=0;
  if(output>0X3FFFF)  output=0X3FFFF;
  return output;
}
void EcalFenixAmplitudeFilter::process ( std::vector< int > &  addout,
std::vector< int > &  output 
) [virtual]

Definition at line 35 of file EcalFenixAmplitudeFilter.cc.

References buffer_, i, inputsAlreadyIn_, process(), and setInput().

{
  // test
  inputsAlreadyIn_=0;
  for (unsigned int i =0;i<5;i++) buffer_[i]=0;//FIXME: 5
  
  // test end
  
  for (unsigned int i =0;i<addout.size();i++){
    
    setInput(addout[i]);
    output[i]=process();
  }
  // shift the result by 1!
  for (unsigned int i=0 ; i<(output.size());i++){
    if (i!=output.size()-1) output[i]=output[i+1];
    else output[i]=0;
  }  
  return;
}
int EcalFenixAmplitudeFilter::setInput ( int  input) [private]

Definition at line 15 of file EcalFenixAmplitudeFilter.cc.

References buffer_, gather_cfg::cout, i, collect_tpl::input, and inputsAlreadyIn_.

Referenced by process().

{
  if(input>0X3FFFF)
    {
      std::cout<<"ERROR IN INPUT OF AMPLITUDE FILTER"<<std::endl;
      return -1;
    }
  if(inputsAlreadyIn_<5)
    {
      buffer_[inputsAlreadyIn_]=input;
      inputsAlreadyIn_++;
    }
  else
    {
      for(int i=0; i<4; i++) buffer_[i]=buffer_[i+1];
      buffer_[4]=input;
    }
  return 1;
}
void EcalFenixAmplitudeFilter::setParameters ( uint32_t  raw,
const EcalTPGWeightIdMap ecaltpgWeightMap,
const EcalTPGWeightGroup ecaltpgWeightGroup 
)

Definition at line 70 of file EcalFenixAmplitudeFilter.cc.

References i, runTheMatrix_dev::raw, and weights_.

Referenced by EcalFenixStrip::process_part1().

{
  uint32_t params_[5];
  const EcalTPGGroups::EcalTPGGroupsMap & groupmap = ecaltpgWeightGroup -> getMap();
  EcalTPGGroups::EcalTPGGroupsMapItr it = groupmap.find(raw);
  if (it!=groupmap.end()) {
    uint32_t weightid =(*it).second;
    const EcalTPGWeightIdMap::EcalTPGWeightMap & weightmap = ecaltpgWeightMap -> getMap();
    EcalTPGWeightIdMap::EcalTPGWeightMapItr itw = weightmap.find(weightid);
    (*itw).second.getValues(params_[0],params_[1],params_[2],params_[3],params_[4]);
    // we have to transform negative coded in 7 bits into negative coded in 32 bits
    // maybe this should go into the getValue method??
    for (int i=0;i<5;++i){
      weights_[i] = (params_[i] & 0x40) ?    (int)( params_[i] | 0xffffffc0) : (int)(params_[i]);
    }
  }
  else edm::LogWarning("EcalTPG")<<" could not find EcalTPGGroupsMap entry for "<<raw;
}

Member Data Documentation

Definition at line 23 of file EcalFenixAmplitudeFilter.h.

Referenced by process(), and setInput().

Definition at line 22 of file EcalFenixAmplitudeFilter.h.

Referenced by process(), and setInput().

Definition at line 25 of file EcalFenixAmplitudeFilter.h.

Referenced by process().

Definition at line 24 of file EcalFenixAmplitudeFilter.h.

Referenced by process(), and setParameters().