CMS 3D CMS Logo

Public Member Functions | Public Attributes | Private Member Functions | Private Attributes

pftools::CaloBox Class Reference

#include <CaloBox.h>

List of all members.

Public Member Functions

 CaloBox (double centerEta, double centerPhi, double dEta, double dPhi, unsigned nEta, unsigned nPhi)
std::ostream & dump (std::ostream &stream, double norm=1.0, std::string rowDelim="\n") const
const std::map< std::pair< int,
int >, double > & 
energies () const
bool fill (double eta, double phi, double energy)
void reset ()
void test ()
virtual ~CaloBox ()

Public Attributes

double centerEta_
double centerPhi_
double dEta_
double dPhi_
int etaNegBound_
int etaPosBound_
unsigned nEta_
unsigned nPhi_
int phiNegBound_
int phiPosBound_

Private Member Functions

 CaloBox ()

Private Attributes

std::map< std::pair< int, int >
, double > 
energies_

Detailed Description

Definition at line 17 of file CaloBox.h.


Constructor & Destructor Documentation

CaloBox::CaloBox ( double  centerEta,
double  centerPhi,
double  dEta,
double  dPhi,
unsigned  nEta,
unsigned  nPhi 
)

Definition at line 15 of file CaloBox.cc.

References gather_cfg::cout, etaNegBound_, etaPosBound_, nEta_, nPhi_, phiNegBound_, phiPosBound_, and reset().

                                              :
        centerEta_(centerEta), centerPhi_(centerPhi), dEta_(dEta), dPhi_(dPhi),
                        nEta_(nEta), nPhi_(nPhi) {
        if (nEta_ % 2 != 1) {
                cout << __PRETTY_FUNCTION__
                                << ": should use odd numbers for nEta and nPhi as CaloBox won't be symmetric otherwise!\n";
                etaPosBound_ = (nEta / 2);
                etaNegBound_ = -1 * static_cast<int> ((nEta / 2) + 1);

        } else {
                etaPosBound_ = (nEta - 1) / 2;
                etaNegBound_ = -1 * static_cast<int> ((nEta - 1) / 2);
        }

        if (nPhi_ % 2 != 1) {
                cout << __PRETTY_FUNCTION__
                                << ": should use odd numbers for nEta and nPhi as CaloBox won't be symmetric otherwise!\n";

                phiPosBound_ = (nPhi / 2);
                phiNegBound_ = -1 * static_cast<int> ((nPhi / 2) + 1);
        } else {
                phiPosBound_ = (nPhi - 1) / 2;
                phiNegBound_ = -1 * static_cast<int> ((nPhi - 1) / 2);
        }

        reset();

        //cout << "CaloBox with n+ " << etaPosBound_ << ", n- " << etaNegBound_
        //              << ", p+ " << phiPosBound_ << ", p-" << phiNegBound_ << "\n";

}
CaloBox::~CaloBox ( ) [virtual]

Definition at line 57 of file CaloBox.cc.

                  {

}
pftools::CaloBox::CaloBox ( ) [private]

Member Function Documentation

std::ostream& pftools::CaloBox::dump ( std::ostream &  stream,
double  norm = 1.0,
std::string  rowDelim = "\n" 
) const

Referenced by pftools::operator<<().

const std::map<std::pair<int, int>, double>& pftools::CaloBox::energies ( ) const [inline]

Definition at line 41 of file CaloBox.h.

References energies_.

                                                                  {
                return energies_;
        }
bool CaloBox::fill ( double  eta,
double  phi,
double  energy 
)

Definition at line 61 of file CaloBox.cc.

References centerEta_, centerPhi_, dEta_, dPhi_, energies_, relval_parameters_module::energy, etaNegBound_, etaPosBound_, combine::key, phiNegBound_, and phiPosBound_.

Referenced by test().

                                                        {
        int etaDiv = static_cast<int>(floor((eta - centerEta_ + dEta_ / 2.0) / dEta_));
        int phiDiv = static_cast<int>(floor((phi - centerPhi_ + dPhi_ / 2.0) / dPhi_));
        //cout << "Testing for " << etaDiv << ", " << phiDiv << "\n";

        if (etaDiv >= 0 && etaDiv > etaPosBound_)
                return false;
        if (etaDiv < 0 && etaDiv < etaNegBound_)
                return false;
        if (phiDiv >= 0 && phiDiv > phiPosBound_)
                return false;
        if (phiDiv < 0 && phiDiv < phiNegBound_)
                return false;

        pair<int, int> key(etaDiv, phiDiv);

        energies_[key] += energy;
        return true;

}
void CaloBox::reset ( void  )

Definition at line 48 of file CaloBox.cc.

References trackerHits::c, energies_, etaNegBound_, etaPosBound_, phiNegBound_, phiPosBound_, pos, and csvReporter::r.

Referenced by CaloBox().

                    {
        for (int r = phiPosBound_; r >= phiNegBound_; --r) {
                for (int c = etaNegBound_; c <= etaPosBound_; ++c) {
                        std::pair<int, int> pos(c, r);
                        energies_[pos] = 0.0;
                }
        }
}
void CaloBox::test ( void  )

Definition at line 103 of file CaloBox.cc.

References prof2calltree::count, gather_cfg::cout, fill(), and convertSQLiteXML::ok.

                   {

        CaloBox cb(0.0, 0.0, 1.0, 1.0, 5, 5);

        unsigned count(0);
        bool ok(false);

        ok = cb.fill(2, 1, 10);
        if (!ok)
                cout << "Box fill failed! Count = " << count << "\n";
        ++count;

        ok = cb.fill(-1, 2, 20);
        if (!ok)
                cout << "Box fill failed! Count = " << count << "\n";
        ++count;

        ok = cb.fill(-2, 5, 10);
        if (!ok)
                cout << "Box fill failed! Count = " << count << "\n";
        ++count;

        ok = cb.fill(0.1, 1.3, 10);
        if (!ok)
                cout << "Box fill failed! Count = " << count << "\n";
        ++count;

        ok = cb.fill(-1.4, 1.6, 10);
        if (!ok)
                cout << "Box fill failed! Count = " << count << "\n";
        ++count;

        cout << cb;

}

Member Data Documentation

Definition at line 27 of file CaloBox.h.

Referenced by fill(), and pftools::operator<<().

Definition at line 28 of file CaloBox.h.

Referenced by fill(), and pftools::operator<<().

Definition at line 29 of file CaloBox.h.

Referenced by fill().

Definition at line 30 of file CaloBox.h.

Referenced by fill().

std::map<std::pair<int, int>, double> pftools::CaloBox::energies_ [private]

Definition at line 48 of file CaloBox.h.

Referenced by energies(), fill(), and reset().

Definition at line 35 of file CaloBox.h.

Referenced by CaloBox(), fill(), and reset().

Definition at line 34 of file CaloBox.h.

Referenced by CaloBox(), fill(), and reset().

Definition at line 31 of file CaloBox.h.

Referenced by CaloBox().

Definition at line 32 of file CaloBox.h.

Referenced by CaloBox().

Definition at line 37 of file CaloBox.h.

Referenced by CaloBox(), fill(), and reset().

Definition at line 36 of file CaloBox.h.

Referenced by CaloBox(), fill(), and reset().