CMS 3D CMS Logo

CaloTowersCreationAlgo Class Reference

Date
2008/04/22 13:47:40
Revision
1.11
More...

#include <RecoLocalCalo/CaloTowersCreator/interface/CaloTowersCreationAlgo.h>

List of all members.

Public Member Functions

void begin ()
 CaloTowersCreationAlgo (double EBthreshold, double EEthreshold, double HcalThreshold, double HBthreshold, double HESthreshold, double HEDthreshold, double HOthreshold, double HF1threshold, double HF2threshold, std::vector< double > EBGrid, std::vector< double > EBWeights, std::vector< double > EEGrid, std::vector< double > EEWeights, std::vector< double > HBGrid, std::vector< double > HBWeights, std::vector< double > HESGrid, std::vector< double > HESWeights, std::vector< double > HEDGrid, std::vector< double > HEDWeights, std::vector< double > HOGrid, std::vector< double > HOWeights, std::vector< double > HF1Grid, std::vector< double > HF1Weights, std::vector< double > HF2Grid, std::vector< double > HF2Weights, double EBweight, double EEweight, double HBweight, double HESweight, double HEDweight, double HOweight, double HF1weight, double HF2weight, double EcutTower, double EBSumThreshold, double EESumThreshold, bool useHO, int momConstrMethod, double momEmDepth, double momHadDepth, double momTotDepth)
 CaloTowersCreationAlgo (double EBthreshold, double EEthreshold, double HcalThreshold, double HBthreshold, double HESthreshold, double HEDthreshold, double HOthreshold, double HF1threshold, double HF2threshold, double EBweight, double EEweight, double HBweight, double HESweight, double HEDweight, double HOweight, double HF1weight, double HF2weight, double EcutTower, double EBSumThreshold, double EESumThreshold, bool useHO, int momConstrMethod, double momEmDepth, double momHadDepth, double momTotDepth)
 CaloTowersCreationAlgo ()
GlobalPoint emCrystalShwrPos (DetId detId, float fracDepth)
GlobalPoint emShwrPos (std::vector< std::pair< DetId, double > > &metaContains, float fracDepth, double totEmE)
void finish (CaloTowerCollection &destCollection)
GlobalPoint hadSegmentShwrPos (DetId detId, float fracDepth)
GlobalPoint hadShwrPos (std::vector< std::pair< DetId, double > > &metaContains, float fracDepth, double hadE)
void process (const CaloTowerCollection &ctc)
void process (const EcalRecHitCollection &ecal)
void process (const HFRecHitCollection &hf)
void process (const HORecHitCollection &ho)
void process (const HBHERecHitCollection &hbhe)
void setEBEScale (double scale)
void setEEEScale (double scale)
void setGeometry (const CaloTowerConstituentsMap *cttopo, const HcalTopology *htopo, const CaloGeometry *geo)
void setHBEScale (double scale)
void setHEDEScale (double scale)
void setHESEScale (double scale)
void setHF1EScale (double scale)
void setHF2EScale (double scale)
void setHOEScale (double scale)

Private Types

typedef std::map
< CaloTowerDetId, MetaTower
MetaTowerMap

Private Member Functions

void assignHit (const CaloRecHit *recHit)
 adds a single hit to the tower
int compactTime (float time)
CaloTower convert (const CaloTowerDetId &id, const MetaTower &mt)
MetaTowerfind (const CaloTowerDetId &id)
 looks for a given tower in the internal cache. If it can't find it, it makes it.
void getThresholdAndWeight (const DetId &detId, double &threshold, double &weight) const
 helper method to look up the appropriate threshold & weight
void rescale (const CaloTower *ct)

Private Attributes

double theEBEScale
std::vector< double > theEBGrid
double theEBSumThreshold
double theEBthreshold
double theEBweight
std::vector< double > theEBWeights
double theEcutTower
double theEEEScale
std::vector< double > theEEGrid
double theEESumThreshold
double theEEthreshold
double theEEweight
std::vector< double > theEEWeights
const CaloGeometrytheGeometry
double theHBEScale
std::vector< double > theHBGrid
double theHBthreshold
double theHBweight
std::vector< double > theHBWeights
double theHcalThreshold
const HcalTopologytheHcalTopology
double theHEDEScale
std::vector< double > theHEDGrid
double theHEDthreshold
double theHEDweight
std::vector< double > theHEDWeights
double theHESEScale
std::vector< double > theHESGrid
double theHESthreshold
double theHESweight
std::vector< double > theHESWeights
double theHF1EScale
std::vector< double > theHF1Grid
double theHF1threshold
double theHF1weight
std::vector< double > theHF1Weights
double theHF2EScale
std::vector< double > theHF2Grid
double theHF2threshold
double theHF2weight
std::vector< double > theHF2Weights
double theHOEScale
std::vector< double > theHOGrid
bool theHOIsUsed
 only affects energy and ET calculation. HO is still recorded in the tower
double theHOthreshold
double theHOweight
std::vector< double > theHOWeights
int theMomConstrMethod
double theMomEmDepth
double theMomHadDepth
double theMomTotDepth
const CaloTowerConstituentsMaptheTowerConstituentsMap
const CaloSubdetectorGeometrytheTowerGeometry
MetaTowerMap theTowerMap

Classes

struct  MetaTower


Detailed Description

Date
2008/04/22 13:47:40
Revision
1.11

Author:
R. Wilkinson - Caltech

Definition at line 31 of file CaloTowersCreationAlgo.h.


Member Typedef Documentation

typedef std::map<CaloTowerDetId, MetaTower> CaloTowersCreationAlgo::MetaTowerMap [private]

Definition at line 176 of file CaloTowersCreationAlgo.h.


Constructor & Destructor Documentation

CaloTowersCreationAlgo::CaloTowersCreationAlgo (  ) 

Definition at line 12 of file CaloTowersCreationAlgo.cc.

00013  : theEBthreshold(-1000.),
00014    theEEthreshold(-1000.),
00015    theHcalThreshold(-1000.),
00016    theHBthreshold(-1000.),
00017    theHESthreshold(-1000.),
00018    theHEDthreshold(-1000.),
00019    theHOthreshold(-1000.),
00020    theHF1threshold(-1000.),
00021    theHF2threshold(-1000.),
00022    theEBGrid(std::vector<double>(5,10.)),
00023    theEBWeights(std::vector<double>(5,1.)),
00024    theEEGrid(std::vector<double>(5,10.)),
00025    theEEWeights(std::vector<double>(5,1.)),
00026    theHBGrid(std::vector<double>(5,10.)),
00027    theHBWeights(std::vector<double>(5,1.)),
00028    theHESGrid(std::vector<double>(5,10.)),
00029    theHESWeights(std::vector<double>(5,1.)),
00030    theHEDGrid(std::vector<double>(5,10.)),
00031    theHEDWeights(std::vector<double>(5,1.)),
00032    theHOGrid(std::vector<double>(5,10.)),
00033    theHOWeights(std::vector<double>(5,1.)),
00034    theHF1Grid(std::vector<double>(5,10.)),
00035    theHF1Weights(std::vector<double>(5,1.)),
00036    theHF2Grid(std::vector<double>(5,10.)),
00037    theHF2Weights(std::vector<double>(5,1.)),
00038    theEBweight(1.),
00039    theEEweight(1.),
00040    theHBweight(1.),
00041    theHESweight(1.),
00042    theHEDweight(1.),
00043    theHOweight(1.),
00044    theHF1weight(1.),
00045    theHF2weight(1.),
00046    theEcutTower(-1000.),
00047    theEBSumThreshold(-1000.),
00048    theEESumThreshold(-1000.),
00049    theHcalTopology(0),
00050    theGeometry(0),
00051    theTowerConstituentsMap(0),
00052    theHOIsUsed(true),
00053    // (for momentum reconstruction algorithm)
00054    theMomConstrMethod(0),
00055    theMomEmDepth(0.),
00056    theMomHadDepth(0.),
00057    theMomTotDepth(0.)
00058 {
00059 }

CaloTowersCreationAlgo::CaloTowersCreationAlgo ( double  EBthreshold,
double  EEthreshold,
double  HcalThreshold,
double  HBthreshold,
double  HESthreshold,
double  HEDthreshold,
double  HOthreshold,
double  HF1threshold,
double  HF2threshold,
double  EBweight,
double  EEweight,
double  HBweight,
double  HESweight,
double  HEDweight,
double  HOweight,
double  HF1weight,
double  HF2weight,
double  EcutTower,
double  EBSumThreshold,
double  EESumThreshold,
bool  useHO,
int  momConstrMethod,
double  momEmDepth,
double  momHadDepth,
double  momTotDepth 
)

Definition at line 61 of file CaloTowersCreationAlgo.cc.

00075  : theEBthreshold(EBthreshold),
00076    theEEthreshold(EEthreshold),
00077    theHcalThreshold(HcalThreshold),
00078    theHBthreshold(HBthreshold),
00079    theHESthreshold(HESthreshold),
00080    theHEDthreshold(HEDthreshold),
00081    theHOthreshold(HOthreshold),
00082    theHF1threshold(HF1threshold),
00083    theHF2threshold(HF2threshold),
00084    theEBGrid(std::vector<double>(5,10.)),
00085    theEBWeights(std::vector<double>(5,1.)),
00086    theEEGrid(std::vector<double>(5,10.)),
00087    theEEWeights(std::vector<double>(5,1.)),
00088    theHBGrid(std::vector<double>(5,10.)),
00089    theHBWeights(std::vector<double>(5,1.)),
00090    theHESGrid(std::vector<double>(5,10.)),
00091    theHESWeights(std::vector<double>(5,1.)),
00092    theHEDGrid(std::vector<double>(5,10.)),
00093    theHEDWeights(std::vector<double>(5,1.)),
00094    theHOGrid(std::vector<double>(5,10.)),
00095    theHOWeights(std::vector<double>(5,1.)),
00096    theHF1Grid(std::vector<double>(5,10.)),
00097    theHF1Weights(std::vector<double>(5,1.)),
00098    theHF2Grid(std::vector<double>(5,10.)),
00099    theHF2Weights(std::vector<double>(5,1.)),
00100    theEBweight(EBweight),
00101    theEEweight(EEweight),
00102    theHBweight(HBweight),
00103    theHESweight(HESweight),
00104    theHEDweight(HEDweight),
00105    theHOweight(HOweight),
00106    theHF1weight(HF1weight),
00107    theHF2weight(HF2weight),
00108    theEcutTower(EcutTower),
00109    theEBSumThreshold(EBSumThreshold),
00110    theEESumThreshold(EESumThreshold),
00111    theHOIsUsed(useHO),
00112    // (momentum reconstruction algorithm)
00113    theMomConstrMethod(momConstrMethod),
00114    theMomEmDepth(momEmDepth),
00115    theMomHadDepth(momHadDepth),
00116    theMomTotDepth(momTotDepth)
00117 {
00118 }

CaloTowersCreationAlgo::CaloTowersCreationAlgo ( double  EBthreshold,
double  EEthreshold,
double  HcalThreshold,
double  HBthreshold,
double  HESthreshold,
double  HEDthreshold,
double  HOthreshold,
double  HF1threshold,
double  HF2threshold,
std::vector< double >  EBGrid,
std::vector< double >  EBWeights,
std::vector< double >  EEGrid,
std::vector< double >  EEWeights,
std::vector< double >  HBGrid,
std::vector< double >  HBWeights,
std::vector< double >  HESGrid,
std::vector< double >  HESWeights,
std::vector< double >  HEDGrid,
std::vector< double >  HEDWeights,
std::vector< double >  HOGrid,
std::vector< double >  HOWeights,
std::vector< double >  HF1Grid,
std::vector< double >  HF1Weights,
std::vector< double >  HF2Grid,
std::vector< double >  HF2Weights,
double  EBweight,
double  EEweight,
double  HBweight,
double  HESweight,
double  HEDweight,
double  HOweight,
double  HF1weight,
double  HF2weight,
double  EcutTower,
double  EBSumThreshold,
double  EESumThreshold,
bool  useHO,
int  momConstrMethod,
double  momEmDepth,
double  momHadDepth,
double  momTotDepth 
)

Definition at line 120 of file CaloTowersCreationAlgo.cc.

00143  : theEBthreshold(EBthreshold),
00144    theEEthreshold(EEthreshold),
00145    theHcalThreshold(HcalThreshold),
00146    theHBthreshold(HBthreshold),
00147    theHESthreshold(HESthreshold),
00148    theHEDthreshold(HEDthreshold),
00149    theHOthreshold(HOthreshold),
00150    theHF1threshold(HF1threshold),
00151    theHF2threshold(HF2threshold),
00152    theEBGrid(EBGrid),
00153    theEBWeights(EBWeights),
00154    theEEGrid(EEGrid),
00155    theEEWeights(EEWeights),
00156    theHBGrid(HBGrid),
00157    theHBWeights(HBWeights),
00158    theHESGrid(HESGrid),
00159    theHESWeights(HESWeights),
00160    theHEDGrid(HEDGrid),
00161    theHEDWeights(HEDWeights),
00162    theHOGrid(HOGrid),
00163    theHOWeights(HOWeights),
00164    theHF1Grid(HF1Grid),
00165    theHF1Weights(HF1Weights),
00166    theHF2Grid(HF2Grid),
00167    theHF2Weights(HF2Weights),
00168    theEBweight(EBweight),
00169    theEEweight(EEweight),
00170    theHBweight(HBweight),
00171    theHESweight(HESweight),
00172    theHEDweight(HEDweight),
00173    theHOweight(HOweight),
00174    theHF1weight(HF1weight),
00175    theHF2weight(HF2weight),
00176    theEcutTower(EcutTower),
00177    theEBSumThreshold(EBSumThreshold),
00178    theEESumThreshold(EESumThreshold),
00179    theHOIsUsed(useHO),
00180    // (momentum reconstruction algorithm)
00181    theMomConstrMethod(momConstrMethod),
00182    theMomEmDepth(momEmDepth),
00183    theMomHadDepth(momHadDepth),
00184    theMomTotDepth(momTotDepth)
00185 {
00186 }


Member Function Documentation

void CaloTowersCreationAlgo::assignHit ( const CaloRecHit recHit  )  [private]

adds a single hit to the tower

Definition at line 246 of file CaloTowersCreationAlgo.cc.

References HcalDetId::depth(), DetId::det(), detId, CaloRecHit::detid(), e, CaloTowersCreationAlgo::MetaTower::E, CaloTowersCreationAlgo::MetaTower::E_em, CaloTowersCreationAlgo::MetaTower::E_had, CaloTowersCreationAlgo::MetaTower::E_outer, DetId::Ecal, CaloTowersCreationAlgo::MetaTower::emSumEForTime, CaloTowersCreationAlgo::MetaTower::emSumTimeTimesE, CaloRecHit::energy(), relval_parameters_module::energy, find(), getThresholdAndWeight(), CaloTowersCreationAlgo::MetaTower::hadSumEForTime, CaloTowersCreationAlgo::MetaTower::hadSumTimeTimesE, DetId::Hcal, HcalEndcap, HcalForward, HcalOuter, CaloTowerDetId::ieta(), CaloTowerDetId::iphi(), EcalRecHit::kRECOVERED, CaloTowersCreationAlgo::MetaTower::metaConstituents, DetId::null(), HcalDetId::subdet(), theHOIsUsed, theTowerConstituentsMap, dimuonsSequences_cff::threshold, CaloRecHit::time(), CaloTowerConstituentsMap::towerOf(), weight, and CaloTowerDetId::zside().

Referenced by process().

00246                                                                 {
00247   DetId detId = recHit->detid();
00248   double threshold, weight;
00249   getThresholdAndWeight(detId, threshold, weight);
00250 
00251   // SPECIAL handling of tower 28/depth 3 --> half into tower 28 and half into tower 29
00252   if (detId.det()==DetId::Hcal && 
00253       HcalDetId(detId).subdet()==HcalEndcap &&
00254       HcalDetId(detId).depth()==3 &&
00255       HcalDetId(detId).ietaAbs()==28) {
00256 
00257     CaloTowerDetId towerDetId = theTowerConstituentsMap->towerOf(detId);
00258     if (towerDetId.null()) return;    
00259     MetaTower & tower28 = find(towerDetId);    
00260     CaloTowerDetId towerDetId29 = CaloTowerDetId(towerDetId.ieta()+
00261                                                  towerDetId.zside(),
00262                                                  towerDetId.iphi());
00263     MetaTower & tower29 = find(towerDetId29);
00264 
00265     double energy = recHit->energy()/2; // NOTE DIVIDE BY 2!!!
00266     if(energy >= threshold) {
00267       double e28 = energy * weight;
00268       double e29 = energy * weight;
00269       
00270       tower28.E_had += e28;
00271       tower28.E += e28;
00272       std::pair<DetId,double> mc(detId,e28);
00273       tower28.metaConstituents.push_back(mc);
00274 
00275       tower29.E_had += e29;
00276       tower29.E += e29;
00277       tower29.metaConstituents.push_back(mc);
00278 
00279       // store the energy in layer 3 also in E_outer
00280       tower28.E_outer += e28;
00281       tower29.E_outer += e29;
00282 
00283     }
00284   } else {
00285     CaloTowerDetId towerDetId = theTowerConstituentsMap->towerOf(detId);
00286     if (towerDetId.null()) return;    
00287     MetaTower & tower = find(towerDetId);
00288 
00289     double energy = recHit->energy();
00290     if(energy >= threshold) {
00291       // TODO calculate crystal by crystal
00292       double e = energy * weight;
00293       
00294       DetId::Detector det = detId.det();
00295       if(det == DetId::Ecal) {
00296         tower.E_em += e;
00297         tower.E += e;
00298         // do not use "recovered" hits in time calculation
00299         if (recHit->time() != EcalRecHit::kRECOVERED) {
00300           tower.emSumTimeTimesE += ( e * recHit->time() );
00301           tower.emSumEForTime   += e;  // see above
00302         }
00303       }
00304       // HCAL
00305       else {
00306         HcalDetId hcalDetId(detId);
00307         if(hcalDetId.subdet() == HcalOuter) {
00308           tower.E_outer += e;
00309           if(theHOIsUsed) tower.E += e;
00310         } 
00311         // HF calculates EM fraction differently
00312         else if(hcalDetId.subdet() == HcalForward) {
00313           if(hcalDetId.depth() == 1) {
00314             // long fiber, so E_EM = E(Long) - E(Short)
00315             tower.E_em += e;
00316           } 
00317           else {
00318             // short fiber, EHAD = 2 * E(Short)
00319             tower.E_em -= e;
00320             tower.E_had += 2. * e;
00321           }
00322           tower.E += e;
00323 
00324           // put the timing only in HCAL
00325           tower.hadSumTimeTimesE += ( e * recHit->time() );
00326           tower.hadSumEForTime   += e;
00327         }
00328         else {
00329           // HCAL situation normal
00330           tower.E_had += e;
00331           tower.E += e;
00332 
00333           // time info
00334           tower.hadSumTimeTimesE += ( e * recHit->time() );
00335           tower.hadSumEForTime   += e;
00336 
00337           // store energy for depth 2 for towers 18-27
00338           if (HcalDetId(detId).subdet()==HcalEndcap & HcalDetId(detId).depth()==2 &&
00339             HcalDetId(detId).ietaAbs()>=18 && HcalDetId(detId).ietaAbs()<=27) {
00340               tower.E_outer += e;
00341           }
00342         }
00343       }
00344       std::pair<DetId,double> mc(detId,e);
00345       tower.metaConstituents.push_back(mc);
00346     } 
00347   }
00348 }

void CaloTowersCreationAlgo::begin ( void   ) 

Definition at line 196 of file CaloTowersCreationAlgo.cc.

References theTowerMap.

Referenced by CaloTowersReCreator::produce(), and CaloTowersCreator::produce().

00196                                    {
00197   theTowerMap.clear();
00198 }

int CaloTowersCreationAlgo::compactTime ( float  time  )  [private]

Definition at line 748 of file CaloTowersCreationAlgo.cc.

References int.

Referenced by convert().

00748                                                   {
00749 
00750   const float timeUnit = 0.01; // discretization (ns)
00751 
00752   if (time>  300.0) return  30000;
00753   if (time< -300.0) return -30000;
00754 
00755   return int(time/timeUnit + 0.5);
00756 
00757 }

CaloTower CaloTowersCreationAlgo::convert ( const CaloTowerDetId id,
const MetaTower mt 
) [private]

Definition at line 419 of file CaloTowersCreationAlgo.cc.

References CaloTower::addConstituents(), compactTime(), CaloTowersCreationAlgo::MetaTower::E, CaloTowersCreationAlgo::MetaTower::E_em, CaloTowersCreationAlgo::MetaTower::E_had, CaloTowersCreationAlgo::MetaTower::E_outer, DetId::Ecal, emShwrPos(), CaloTowersCreationAlgo::MetaTower::emSumEForTime, CaloTowersCreationAlgo::MetaTower::emSumTimeTimesE, PV3DBase< T, PVType, FrameType >::eta(), CaloSubdetectorGeometry::getGeometry(), CaloCellGeometry::getPosition(), hadShwrPos(), CaloTowersCreationAlgo::MetaTower::hadSumEForTime, CaloTowersCreationAlgo::MetaTower::hadSumTimeTimesE, DetId::Hcal, i, CaloTowersCreationAlgo::MetaTower::metaConstituents, p, PV3DBase< T, PVType, FrameType >::phi(), CaloTower::setEcalTime(), CaloTower::setHcalTime(), theEBSumThreshold, theEESumThreshold, theHcalThreshold, theHOIsUsed, theMomConstrMethod, theMomEmDepth, theMomHadDepth, and theTowerGeometry.

Referenced by finish().

00419                                                                                        {
00420 
00421     double ecalThres=(id.ietaAbs()<=17)?(theEBSumThreshold):(theEESumThreshold);
00422     double E=mt.E;
00423     double E_em=mt.E_em;
00424     double E_had=mt.E_had;
00425     double E_outer=mt.E_outer;
00426 
00427     // Note: E_outer is used to save HO energy OR energy in the outermost depths in endcap region
00428     // In the methods with separate treatment of EM and HAd components:
00429     //  - HO is not used to determine direction, however HO energy is added to get "total had energy"
00430     //  => Check if the tower is within HO coverage before adding E_outer to the "total had" energy
00431     //     else the energy will be double counted
00432     // When summing up the energy of the tower these checks are performed in the loops over RecHits,
00433     // so it only affects the alternative methods that are NOT yet used
00434 
00435 
00436     float  ecalTime = (mt.emSumEForTime>0)?   mt.emSumTimeTimesE/mt.emSumEForTime  : -9999;
00437     float  hcalTime = (mt.hadSumEForTime>0)?  mt.hadSumTimeTimesE/mt.hadSumEForTime : -9999;
00438 
00439     std::vector<std::pair<DetId,double> > metaContains=mt.metaConstituents;
00440 
00441     if (id.ietaAbs()<=29 && E_em<ecalThres) { // ignore EM threshold in HF
00442       E-=E_em;
00443       E_em=0;
00444       std::vector<std::pair<DetId,double> > metaContains_noecal;
00445 
00446     for (std::vector<std::pair<DetId,double> >::iterator i=metaContains.begin(); i!=metaContains.end(); ++i) 
00447                 if (i->first.det()!=DetId::Ecal) metaContains_noecal.push_back(*i);
00448       metaContains.swap(metaContains_noecal);
00449     }
00450 
00451     if (id.ietaAbs()<=29 && E_had<theHcalThreshold) {
00452       E-=E_had;
00453 
00454       if (theHOIsUsed && id.ietaAbs()<16)  E-=E_outer; // has to be done for consistency
00455      
00456       E_had=0;
00457       E_outer=0;
00458       std::vector<std::pair<DetId,double> > metaContains_nohcal;
00459 
00460       for (std::vector<std::pair<DetId,double> >::iterator i=metaContains.begin(); i!=metaContains.end(); ++i) 
00461         if (i->first.det()!=DetId::Hcal) metaContains_nohcal.push_back(*i);
00462       metaContains.swap(metaContains_nohcal);
00463     }
00464 
00465     // create CaloTower using the selected algorithm
00466 
00467     GlobalPoint emPoint, hadPoint;
00468     CaloTower::LorentzVector towerP4;
00469 
00470   switch (theMomConstrMethod) {
00471 
00472   case 0 :
00473     {  // Simple 4-momentum assignment
00474       GlobalPoint p=theTowerGeometry->getGeometry(id)->getPosition();
00475 
00476       double pf=1.0/cosh(p.eta());
00477       if (E>0) towerP4 = CaloTower::PolarLorentzVector(E*pf, p.eta(), p.phi(), 0);
00478       
00479       emPoint  = p;   
00480       hadPoint = p;
00481     }  // end case 0
00482     break;
00483 
00484   case 1 :
00485     {
00486       if (id.ietaAbs()<=29) {
00487         if (E_em>0) {
00488           emPoint   = emShwrPos(metaContains, theMomEmDepth, E_em);
00489           double emPf = 1.0/cosh(emPoint.eta());
00490           towerP4 += CaloTower::PolarLorentzVector(E_em*emPf, emPoint.eta(), emPoint.phi(), 0); 
00491         }
00492         if (E_had>0) {
00493           double E_had_tot = (theHOIsUsed && id.ietaAbs()<16)? E_had+E_outer : E_had;
00494           hadPoint  = hadShwrPos(metaContains, theMomHadDepth, E_had_tot);
00495           double hadPf = 1.0/cosh(hadPoint.eta());
00496           towerP4 += CaloTower::PolarLorentzVector(E_had_tot*hadPf, hadPoint.eta(), hadPoint.phi(), 0); 
00497         }
00498       }
00499       else {  // forward detector: use the CaloTower position 
00500         GlobalPoint p=theTowerGeometry->getGeometry(id)->getPosition();
00501         double pf=1.0/cosh(p.eta());
00502         if (E>0) towerP4 = CaloTower::PolarLorentzVector(E*pf, p.eta(), p.phi(), 0);  // simple momentum assignment, same position
00503         emPoint  = p;   
00504         hadPoint = p;
00505       }
00506     }  // end case 1
00507     break;
00508 
00509   }  // end of decision on p4 reconstruction method
00510 
00511 
00512 //    CaloTower::LorentzVector lv = caloTowerMomentum(id, metaContains, E, E_em, E_had, E_outer);
00513 
00514     CaloTower retval(id, E_em, E_had, E_outer, -1, -1, towerP4, emPoint, hadPoint);
00515 
00516     // set the timings
00517     retval.setEcalTime(compactTime(ecalTime));
00518     retval.setHcalTime(compactTime(hcalTime));
00519 
00520     std::vector<DetId> contains;
00521     for (std::vector<std::pair<DetId,double> >::iterator i=metaContains.begin(); i!=metaContains.end(); ++i) 
00522         contains.push_back(i->first);
00523 
00524     retval.addConstituents(contains);
00525     return retval;
00526 } 

GlobalPoint CaloTowersCreationAlgo::emCrystalShwrPos ( DetId  detId,
float  fracDepth 
)

Definition at line 657 of file CaloTowersCreationAlgo.cc.

References CaloCellGeometry::getCorners(), CaloGeometry::getGeometry(), CaloCellGeometry::getPosition(), theGeometry, x, y, and z.

Referenced by emShwrPos().

00657                                                                                  {
00658    const CaloCellGeometry* cellGeometry = theGeometry->getGeometry(detId);
00659    GlobalPoint point = cellGeometry->getPosition();  // face of the cell
00660 
00661    if      (fracDepth<0) fracDepth=0;
00662    else if (fracDepth>1) fracDepth=1;
00663 
00664    if (fracDepth>0.0) {
00665      CaloCellGeometry::CornersVec cv = cellGeometry->getCorners();
00666      GlobalPoint backPoint = GlobalPoint( 0.25*( cv[4].x() + cv[5].x() + cv[6].x() + cv[7].x() ),
00667                                           0.25*( cv[4].y() + cv[5].y() + cv[6].y() + cv[7].y() ),
00668                                           0.25*( cv[4].z() + cv[5].z() + cv[6].z() + cv[7].z() ) );
00669      point += fracDepth * (backPoint-point);
00670    }
00671 
00672    return point;
00673 }

GlobalPoint CaloTowersCreationAlgo::emShwrPos ( std::vector< std::pair< DetId, double > > &  metaContains,
float  fracDepth,
double  totEmE 
)

Definition at line 724 of file CaloTowersCreationAlgo.cc.

References e, DetId::Ecal, emCrystalShwrPos(), p, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by convert().

00725                                                                            {
00726 
00727   if (emE<=0) return GlobalPoint(0,0,0);
00728 
00729   double emX = 0.0;
00730   double emY = 0.0;
00731   double emZ = 0.0;
00732 
00733   std::vector<std::pair<DetId,double> >::iterator mc_it = metaContains.begin();
00734   for (; mc_it!=metaContains.end(); ++mc_it) {
00735     if (mc_it->first.det() != DetId::Ecal) continue;
00736     GlobalPoint p = emCrystalShwrPos(mc_it->first, fracDepth);
00737     double e = mc_it->second;
00738 
00739     emX += p.x() * e;
00740     emY += p.y() * e;
00741     emZ += p.z() * e;
00742   }
00743 
00744    return GlobalPoint(emX/emE, emY/emE, emZ/emE);
00745 }

CaloTowersCreationAlgo::MetaTower & CaloTowersCreationAlgo::find ( const CaloTowerDetId id  )  [private]

looks for a given tower in the internal cache. If it can't find it, it makes it.

Definition at line 406 of file CaloTowersCreationAlgo.cc.

References t, and theTowerMap.

Referenced by assignHit(), and rescale().

00406                                                                                            {
00407   MetaTowerMap::iterator itr = theTowerMap.find(detId);
00408   if(itr == theTowerMap.end()) {
00409     // need to build a new tower
00410     MetaTower t;
00411 
00412     // store it in the map
00413     theTowerMap.insert(std::pair<CaloTowerDetId, CaloTowersCreationAlgo::MetaTower>(detId, t));
00414     itr = theTowerMap.find(detId);
00415   }
00416   return itr->second;
00417 }

void CaloTowersCreationAlgo::finish ( CaloTowerCollection destCollection  ) 

Definition at line 232 of file CaloTowersCreationAlgo.cc.

References CaloTower::constituentsSize(), convert(), ct, reco::Particle::energy(), edm::SortedCollection< T, SORT >::push_back(), theEcutTower, and theTowerMap.

Referenced by CaloTowersReCreator::produce(), and CaloTowersCreator::produce().

00232                                                                {
00233   // now copy this map into the final collection
00234   for(MetaTowerMap::const_iterator mapItr = theTowerMap.begin();
00235       mapItr != theTowerMap.end(); ++ mapItr) {
00236     CaloTower ct=convert(mapItr->first,mapItr->second);
00237     if (ct.constituentsSize()>0 && ct.energy()>theEcutTower) {
00238       result.push_back(ct);
00239     }
00240   }
00241   theTowerMap.clear(); // save the memory
00242 }

void CaloTowersCreationAlgo::getThresholdAndWeight ( const DetId detId,
double &  threshold,
double &  weight 
) const [private]

helper method to look up the appropriate threshold & weight

Definition at line 530 of file CaloTowersCreationAlgo.cc.

References GenMuonPlsPt100GeV_cfg::cout, HcalDetId::depth(), DetId::det(), DetId::Ecal, EcalBarrel, EcalEndcap, lat::endl(), HcalTopology::firstHEDoublePhiRing(), DetId::Hcal, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, HcalDetId::ietaAbs(), HcalDetId::subdet(), DetId::subdetId(), theEBEScale, theEBGrid, theEBthreshold, theEBweight, theEBWeights, theEEEScale, theEEGrid, theEEthreshold, theEEweight, theEEWeights, theHBEScale, theHBGrid, theHBthreshold, theHBweight, theHBWeights, theHcalTopology, theHEDEScale, theHEDGrid, theHEDthreshold, theHEDweight, theHEDWeights, theHESEScale, theHESGrid, theHESthreshold, theHESweight, theHESWeights, theHF1EScale, theHF1Grid, theHF1threshold, theHF1weight, theHF1Weights, theHF2EScale, theHF2Grid, theHF2threshold, theHF2weight, theHF2Weights, theHOEScale, theHOGrid, theHOthreshold, theHOweight, and theHOWeights.

Referenced by assignHit(), and rescale().

00530                                                                                                                  {
00531   DetId::Detector det = detId.det();
00532   weight=0; // in case the hit is not identified
00533 
00534   if(det == DetId::Ecal) {
00535     // may or may not be EB.  We'll find out.
00536 
00537     EcalSubdetector subdet = (EcalSubdetector)(detId.subdetId());
00538     if(subdet == EcalBarrel) {
00539       threshold = theEBthreshold;
00540       weight = theEBweight;
00541       if (weight <= 0.) {
00542         ROOT::Math::Interpolator my(theEBGrid,theEBWeights,ROOT::Math::Interpolation::AKIMA);
00543         weight = my.Eval(theEBEScale);
00544       }
00545     }
00546     else if(subdet == EcalEndcap) {
00547       threshold = theEEthreshold;
00548       weight = theEEweight;
00549       if (weight <= 0.) {
00550         ROOT::Math::Interpolator my(theEEGrid,theEEWeights,ROOT::Math::Interpolation::AKIMA);
00551         weight = my.Eval(theEEEScale);
00552       }
00553     }
00554   }
00555   else if(det == DetId::Hcal) {
00556     HcalDetId hcalDetId(detId);
00557     HcalSubdetector subdet = hcalDetId.subdet();
00558     
00559     if(subdet == HcalBarrel) {
00560       threshold = theHBthreshold;
00561       weight = theHBweight;
00562       if (weight <= 0.) {
00563         ROOT::Math::Interpolator my(theHBGrid,theHBWeights,ROOT::Math::Interpolation::AKIMA);
00564         weight = my.Eval(theHBEScale);
00565       }
00566     }
00567     
00568     else if(subdet == HcalEndcap) {
00569       // check if it's single or double tower
00570       if(hcalDetId.ietaAbs() < theHcalTopology->firstHEDoublePhiRing()) {
00571         threshold = theHESthreshold;
00572         weight = theHESweight;
00573         if (weight <= 0.) {
00574           ROOT::Math::Interpolator my(theHESGrid,theHESWeights,ROOT::Math::Interpolation::AKIMA);
00575           weight = my.Eval(theHESEScale);
00576         }
00577       }
00578       else {
00579         threshold = theHEDthreshold;
00580         weight = theHEDweight;
00581         if (weight <= 0.) {
00582           ROOT::Math::Interpolator my(theHEDGrid,theHEDWeights,ROOT::Math::Interpolation::AKIMA);
00583           weight = my.Eval(theHEDEScale);
00584         }
00585       }
00586     } else if(subdet == HcalOuter) {
00587       threshold = theHOthreshold;
00588       weight = theHOweight;
00589       if (weight <= 0.) {
00590         ROOT::Math::Interpolator my(theHOGrid,theHOWeights,ROOT::Math::Interpolation::AKIMA);
00591         weight = my.Eval(theHOEScale);
00592       }
00593     } else if(subdet == HcalForward) {
00594       if(hcalDetId.depth() == 1) {
00595         threshold = theHF1threshold;
00596         weight = theHF1weight;
00597         if (weight <= 0.) {
00598           ROOT::Math::Interpolator my(theHF1Grid,theHF1Weights,ROOT::Math::Interpolation::AKIMA);
00599           weight = my.Eval(theHF1EScale);
00600         }
00601       } else {
00602         threshold = theHF2threshold;
00603         weight = theHF2weight;
00604         if (weight <= 0.) {
00605           ROOT::Math::Interpolator my(theHF2Grid,theHF2Weights,ROOT::Math::Interpolation::AKIMA);
00606           weight = my.Eval(theHF2EScale);
00607         }
00608       }
00609     }
00610   }
00611   else {
00612     std::cout << "BAD CELL det " << det << std::endl;
00613   }
00614 }

GlobalPoint CaloTowersCreationAlgo::hadSegmentShwrPos ( DetId  detId,
float  fracDepth 
)

Definition at line 675 of file CaloTowersCreationAlgo.cc.

References CaloCellGeometry::getCorners(), CaloGeometry::getGeometry(), CaloCellGeometry::getPosition(), theGeometry, x, y, and z.

Referenced by hadShwrPos().

00675                                                                                   {
00676    const CaloCellGeometry* cellGeometry = theGeometry->getGeometry(detId);
00677    GlobalPoint point = cellGeometry->getPosition();  // face of the cell
00678 
00679    if      (fracDepth<0) fracDepth=0;
00680    else if (fracDepth>1) fracDepth=1;
00681 
00682    if (fracDepth>0.0) {
00683      CaloCellGeometry::CornersVec cv = cellGeometry->getCorners();
00684      GlobalPoint backPoint = GlobalPoint( 0.25*( cv[4].x() + cv[5].x() + cv[6].x() + cv[7].x() ),
00685                                           0.25*( cv[4].y() + cv[5].y() + cv[6].y() + cv[7].y() ),
00686                                           0.25*( cv[4].z() + cv[5].z() + cv[6].z() + cv[7].z() ) );
00687      point += fracDepth * (backPoint-point);
00688    }
00689 
00690    return point;
00691 }

GlobalPoint CaloTowersCreationAlgo::hadShwrPos ( std::vector< std::pair< DetId, double > > &  metaContains,
float  fracDepth,
double  hadE 
)

Definition at line 694 of file CaloTowersCreationAlgo.cc.

References hadSegmentShwrPos(), DetId::Hcal, p, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by convert().

00695                                                                              {
00696                                                   
00697                                                   
00698   if (hadE<=0) return GlobalPoint(0,0,0);
00699 
00700   double hadX = 0.0;
00701   double hadY = 0.0;
00702   double hadZ = 0.0;
00703 
00704   int nConst = 0;
00705 
00706   std::vector<std::pair<DetId,double> >::iterator mc_it = metaContains.begin();
00707   for (; mc_it!=metaContains.end(); ++mc_it) {
00708     if (mc_it->first.det() != DetId::Hcal) continue;
00709     ++nConst;
00710 
00711     GlobalPoint p = hadSegmentShwrPos(mc_it->first, fracDepth);
00712 
00713     // longitudinal segmentation: do not weight by energy,
00714     // get the geometrical position
00715     hadX += p.x();
00716     hadY += p.y();
00717     hadZ += p.z();
00718   }
00719 
00720    return GlobalPoint(hadX/nConst, hadY/nConst, hadZ/nConst);
00721 }

void CaloTowersCreationAlgo::process ( const CaloTowerCollection ctc  ) 

void CaloTowersCreationAlgo::process ( const EcalRecHitCollection ecal  ) 

void CaloTowersCreationAlgo::process ( const HFRecHitCollection hf  ) 

void CaloTowersCreationAlgo::process ( const HORecHitCollection ho  ) 

void CaloTowersCreationAlgo::process ( const HBHERecHitCollection hbhe  ) 

Definition at line 200 of file CaloTowersCreationAlgo.cc.

References assignHit(), edm::SortedCollection< T, SORT >::begin(), and edm::SortedCollection< T, SORT >::end().

Referenced by CaloTowersReCreator::produce(), and CaloTowersCreator::produce().

00200                                                                      { 
00201   for(HBHERecHitCollection::const_iterator hbheItr = hbhe.begin();
00202       hbheItr != hbhe.end(); ++hbheItr)
00203     assignHit(&(*hbheItr));
00204 }

void CaloTowersCreationAlgo::rescale ( const CaloTower ct  )  [private]

Definition at line 355 of file CaloTowersCreationAlgo.cc.

References CaloTower::constituent(), CaloTower::constituentsSize(), HcalDetId::depth(), DetId::det(), detId, CaloTowersCreationAlgo::MetaTower::E, CaloTowersCreationAlgo::MetaTower::E_em, CaloTowersCreationAlgo::MetaTower::E_had, CaloTowersCreationAlgo::MetaTower::E_outer, DetId::Ecal, CaloTower::ecalTime(), CaloTower::emEnergy(), CaloTowersCreationAlgo::MetaTower::emSumEForTime, CaloTowersCreationAlgo::MetaTower::emSumTimeTimesE, find(), getThresholdAndWeight(), CaloTower::hadEnergy(), CaloTowersCreationAlgo::MetaTower::hadSumEForTime, CaloTowersCreationAlgo::MetaTower::hadSumTimeTimesE, HcalForward, HcalOuter, CaloTower::hcalTime(), i, CaloTower::id(), CaloTowersCreationAlgo::MetaTower::metaConstituents, CaloTower::outerEnergy(), HcalDetId::subdet(), dimuonsSequences_cff::threshold, and weight.

00355                                                          {
00356   double threshold, weight;
00357 
00358   CaloTowerDetId towerDetId = ct->id();
00359 //  if (towerDetId.null()) return;    
00360   MetaTower & tower = find(towerDetId);
00361 
00362   tower.E_em = 0.;
00363   tower.E_had = 0.;
00364   tower.E_outer = 0.;
00365   for (unsigned int i=0; i<ct->constituentsSize(); i++) {
00366     DetId detId = ct->constituent(i);
00367     getThresholdAndWeight(detId, threshold, weight);
00368     DetId::Detector det = detId.det();
00369     if(det == DetId::Ecal) {
00370       tower.E_em = ct->emEnergy()*weight;
00371     }
00372     else {
00373       HcalDetId hcalDetId(detId);
00374       if(hcalDetId.subdet() == HcalForward) {
00375         if (hcalDetId.depth()==1) tower.E_em = ct->emEnergy()*weight;
00376         if (hcalDetId.depth()==2) tower.E_had = ct->hadEnergy()*weight;
00377       }
00378       else if(hcalDetId.subdet() == HcalOuter) {
00379         tower.E_outer = ct->outerEnergy()*weight;
00380       }
00381       else {
00382         tower.E_had = ct->hadEnergy()*weight;
00383       }
00384     }
00385     tower.E = tower.E_had+tower.E_em+tower.E_outer;
00386 
00387     // this is to be compliant with the new MetaTower setup
00388     // used only for the default simple vector assignment
00389     std::pair<DetId, double> mc(detId, 0);
00390     tower.metaConstituents.push_back(mc);
00391   }
00392 
00393   // preserve time inforamtion
00394   tower.emSumTimeTimesE  = ct->ecalTime();
00395   tower.hadSumTimeTimesE = ct->hcalTime();
00396   tower.emSumEForTime = 1.0;
00397   tower.hadSumEForTime = 1.0;
00398   
00399 
00400 }

void CaloTowersCreationAlgo::setEBEScale ( double  scale  ) 

Definition at line 616 of file CaloTowersCreationAlgo.cc.

References theEBEScale.

Referenced by CaloTowersReCreator::produce(), and CaloTowersCreator::produce().

00616                                                     {
00617   if (scale>0.00001) *&theEBEScale = scale;
00618   else *&theEBEScale = 50.;
00619 }

void CaloTowersCreationAlgo::setEEEScale ( double  scale  ) 

Definition at line 621 of file CaloTowersCreationAlgo.cc.

References theEEEScale.

Referenced by CaloTowersReCreator::produce(), and CaloTowersCreator::produce().

00621                                                     {
00622   if (scale>0.00001) *&theEEEScale = scale;
00623   else *&theEEEScale = 50.;
00624 }

void CaloTowersCreationAlgo::setGeometry ( const CaloTowerConstituentsMap cttopo,
const HcalTopology htopo,
const CaloGeometry geo 
)

Definition at line 189 of file CaloTowersCreationAlgo.cc.

References DetId::Calo, CaloGeometry::getSubdetectorGeometry(), CaloTowerDetId::SubdetId, theGeometry, theHcalTopology, theTowerConstituentsMap, and theTowerGeometry.

Referenced by CaloTowersReCreator::produce(), and CaloTowersCreator::produce().

void CaloTowersCreationAlgo::setHBEScale ( double  scale  ) 

Definition at line 626 of file CaloTowersCreationAlgo.cc.

References theHBEScale.

Referenced by CaloTowersReCreator::produce(), and CaloTowersCreator::produce().

00626                                                     {
00627   if (scale>0.00001) *&theHBEScale = scale;
00628   else *&theHBEScale = 50.;
00629 }

void CaloTowersCreationAlgo::setHEDEScale ( double  scale  ) 

Definition at line 636 of file CaloTowersCreationAlgo.cc.

References theHEDEScale.

Referenced by CaloTowersReCreator::produce(), and CaloTowersCreator::produce().

00636                                                      {
00637   if (scale>0.00001) *&theHEDEScale = scale;
00638   else *&theHEDEScale = 50.;
00639 }

void CaloTowersCreationAlgo::setHESEScale ( double  scale  ) 

Definition at line 631 of file CaloTowersCreationAlgo.cc.

References theHESEScale.

Referenced by CaloTowersReCreator::produce(), and CaloTowersCreator::produce().

00631                                                      {
00632   if (scale>0.00001) *&theHESEScale = scale;
00633   else *&theHESEScale = 50.;
00634 }

void CaloTowersCreationAlgo::setHF1EScale ( double  scale  ) 

Definition at line 646 of file CaloTowersCreationAlgo.cc.

References theHF1EScale.

Referenced by CaloTowersReCreator::produce(), and CaloTowersCreator::produce().

00646                                                      {
00647   if (scale>0.00001) *&theHF1EScale = scale;
00648   else *&theHF1EScale = 50.;
00649 }

void CaloTowersCreationAlgo::setHF2EScale ( double  scale  ) 

Definition at line 651 of file CaloTowersCreationAlgo.cc.

References theHF2EScale.

Referenced by CaloTowersReCreator::produce(), and CaloTowersCreator::produce().

00651                                                      {
00652   if (scale>0.00001) *&theHF2EScale = scale;
00653   else *&theHF2EScale = 50.;
00654 }

void CaloTowersCreationAlgo::setHOEScale ( double  scale  ) 

Definition at line 641 of file CaloTowersCreationAlgo.cc.

References theHOEScale.

Referenced by CaloTowersReCreator::produce(), and CaloTowersCreator::produce().

00641                                                     {
00642   if (scale>0.00001) *&theHOEScale = scale;
00643   else *&theHOEScale = 50.;
00644 }


Member Data Documentation

double CaloTowersCreationAlgo::theEBEScale [private]

Definition at line 146 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight(), and setEBEScale().

std::vector<double> CaloTowersCreationAlgo::theEBGrid [private]

Definition at line 134 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theEBSumThreshold [private]

Definition at line 144 of file CaloTowersCreationAlgo.h.

Referenced by convert().

double CaloTowersCreationAlgo::theEBthreshold [private]

Definition at line 131 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theEBweight [private]

Definition at line 142 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

std::vector<double> CaloTowersCreationAlgo::theEBWeights [private]

Definition at line 134 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theEcutTower [private]

Definition at line 144 of file CaloTowersCreationAlgo.h.

Referenced by finish().

double CaloTowersCreationAlgo::theEEEScale [private]

Definition at line 147 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight(), and setEEEScale().

std::vector<double> CaloTowersCreationAlgo::theEEGrid [private]

Definition at line 135 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theEESumThreshold [private]

Definition at line 144 of file CaloTowersCreationAlgo.h.

Referenced by convert().

double CaloTowersCreationAlgo::theEEthreshold [private]

Definition at line 131 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theEEweight [private]

Definition at line 142 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

std::vector<double> CaloTowersCreationAlgo::theEEWeights [private]

Definition at line 135 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

const CaloGeometry* CaloTowersCreationAlgo::theGeometry [private]

Definition at line 155 of file CaloTowersCreationAlgo.h.

Referenced by emCrystalShwrPos(), hadSegmentShwrPos(), and setGeometry().

double CaloTowersCreationAlgo::theHBEScale [private]

Definition at line 148 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight(), and setHBEScale().

std::vector<double> CaloTowersCreationAlgo::theHBGrid [private]

Definition at line 136 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theHBthreshold [private]

Definition at line 132 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theHBweight [private]

Definition at line 143 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

std::vector<double> CaloTowersCreationAlgo::theHBWeights [private]

Definition at line 136 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theHcalThreshold [private]

Definition at line 131 of file CaloTowersCreationAlgo.h.

Referenced by convert().

const HcalTopology* CaloTowersCreationAlgo::theHcalTopology [private]

Definition at line 154 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight(), and setGeometry().

double CaloTowersCreationAlgo::theHEDEScale [private]

Definition at line 150 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight(), and setHEDEScale().

std::vector<double> CaloTowersCreationAlgo::theHEDGrid [private]

Definition at line 138 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theHEDthreshold [private]

Definition at line 132 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theHEDweight [private]

Definition at line 143 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

std::vector<double> CaloTowersCreationAlgo::theHEDWeights [private]

Definition at line 138 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theHESEScale [private]

Definition at line 149 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight(), and setHESEScale().

std::vector<double> CaloTowersCreationAlgo::theHESGrid [private]

Definition at line 137 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theHESthreshold [private]

Definition at line 132 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theHESweight [private]

Definition at line 143 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

std::vector<double> CaloTowersCreationAlgo::theHESWeights [private]

Definition at line 137 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theHF1EScale [private]

Definition at line 152 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight(), and setHF1EScale().

std::vector<double> CaloTowersCreationAlgo::theHF1Grid [private]

Definition at line 140 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theHF1threshold [private]

Definition at line 133 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theHF1weight [private]

Definition at line 143 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

std::vector<double> CaloTowersCreationAlgo::theHF1Weights [private]

Definition at line 140 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theHF2EScale [private]

Definition at line 153 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight(), and setHF2EScale().

std::vector<double> CaloTowersCreationAlgo::theHF2Grid [private]

Definition at line 141 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theHF2threshold [private]

Definition at line 133 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theHF2weight [private]

Definition at line 143 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

std::vector<double> CaloTowersCreationAlgo::theHF2Weights [private]

Definition at line 141 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theHOEScale [private]

Definition at line 151 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight(), and setHOEScale().

std::vector<double> CaloTowersCreationAlgo::theHOGrid [private]

Definition at line 139 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

bool CaloTowersCreationAlgo::theHOIsUsed [private]

only affects energy and ET calculation. HO is still recorded in the tower

Definition at line 160 of file CaloTowersCreationAlgo.h.

Referenced by assignHit(), and convert().

double CaloTowersCreationAlgo::theHOthreshold [private]

Definition at line 133 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

double CaloTowersCreationAlgo::theHOweight [private]

Definition at line 143 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

std::vector<double> CaloTowersCreationAlgo::theHOWeights [private]

Definition at line 139 of file CaloTowersCreationAlgo.h.

Referenced by getThresholdAndWeight().

int CaloTowersCreationAlgo::theMomConstrMethod [private]

Definition at line 164 of file CaloTowersCreationAlgo.h.

Referenced by convert().

double CaloTowersCreationAlgo::theMomEmDepth [private]

Definition at line 165 of file CaloTowersCreationAlgo.h.

Referenced by convert().

double CaloTowersCreationAlgo::theMomHadDepth [private]

Definition at line 166 of file CaloTowersCreationAlgo.h.

Referenced by convert().

double CaloTowersCreationAlgo::theMomTotDepth [private]

Definition at line 167 of file CaloTowersCreationAlgo.h.

const CaloTowerConstituentsMap* CaloTowersCreationAlgo::theTowerConstituentsMap [private]

Definition at line 156 of file CaloTowersCreationAlgo.h.

Referenced by assignHit(), and setGeometry().

const CaloSubdetectorGeometry* CaloTowersCreationAlgo::theTowerGeometry [private]

Definition at line 157 of file CaloTowersCreationAlgo.h.

Referenced by convert(), and setGeometry().

MetaTowerMap CaloTowersCreationAlgo::theTowerMap [private]

Definition at line 177 of file CaloTowersCreationAlgo.h.

Referenced by begin(), find(), and finish().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:16:02 2009 for CMSSW by  doxygen 1.5.4