CMS 3D CMS Logo

CaloTauElementsOperators.cc

Go to the documentation of this file.
00001 #include "RecoTauTag/TauTagTools/interface/CaloTauElementsOperators.h"
00002 
00003 CaloTauElementsOperators::CaloTauElementsOperators(CaloTau& theCaloTau) : TauElementsOperators(theCaloTau),CaloTau_(theCaloTau),AreaMetric_recoElements_maxabsEta_(2.5){
00004   Tracks_=theCaloTau.caloTauTagInfoRef()->Tracks();
00005   EcalRecHits_=theCaloTau.caloTauTagInfoRef()->positionAndEnergyECALRecHits();
00006 }
00007   vector<pair<math::XYZPoint,float> > CaloTauElementsOperators::EcalRecHitsInCone(const math::XYZVector& coneAxis,const string coneMetric,const double coneSize,const double EcalRecHit_minEt)const{
00008   vector<pair<math::XYZPoint,float> > theFilteredEcalRecHits;
00009   for (vector<pair<math::XYZPoint,float> >::const_iterator iEcalRecHit=EcalRecHits_.begin();iEcalRecHit!=EcalRecHits_.end();++iEcalRecHit) {
00010     if ((*iEcalRecHit).second*fabs(sin((*iEcalRecHit).first.theta()))>EcalRecHit_minEt)theFilteredEcalRecHits.push_back(*iEcalRecHit);
00011   }  
00012   vector<pair<math::XYZPoint,float> > theFilteredEcalRecHitsInCone;
00013   if (coneMetric=="DR"){
00014     theFilteredEcalRecHitsInCone=EcalRecHitsinCone_DRmetric_(coneAxis,metricDR_,coneSize,theFilteredEcalRecHits);
00015   }else if(coneMetric=="angle"){
00016     theFilteredEcalRecHitsInCone=EcalRecHitsinCone_Anglemetric_(coneAxis,metricAngle_,coneSize,theFilteredEcalRecHits);
00017   }else if(coneMetric=="area"){
00018     int errorFlag = 0;
00019     FixedAreaIsolationCone fixedAreaCone;
00020     fixedAreaCone.setAcceptanceLimit(AreaMetric_recoElements_maxabsEta_);
00021     double coneAngle=fixedAreaCone(coneAxis.theta(),coneAxis.phi(),0,coneSize,errorFlag);
00022     if (errorFlag!=0) return vector<pair<math::XYZPoint,float> >();
00023     theFilteredEcalRecHitsInCone=EcalRecHitsinCone_Anglemetric_(coneAxis,metricAngle_,coneAngle,theFilteredEcalRecHits);
00024   }else return vector<pair<math::XYZPoint,float> >(); 
00025   return theFilteredEcalRecHitsInCone;
00026 }
00027 vector<pair<math::XYZPoint,float> > CaloTauElementsOperators::EcalRecHitsInAnnulus(const math::XYZVector& coneAxis,const string innerconeMetric,const double innerconeSize,const string outerconeMetric,const double outerconeSize,const double EcalRecHit_minEt)const{     
00028   vector<pair<math::XYZPoint,float> > theFilteredEcalRecHits;
00029   for (vector<pair<math::XYZPoint,float> >::const_iterator iEcalRecHit=EcalRecHits_.begin();iEcalRecHit!=EcalRecHits_.end();++iEcalRecHit) {
00030     if ((*iEcalRecHit).second*fabs(sin((*iEcalRecHit).first.theta()))>EcalRecHit_minEt)theFilteredEcalRecHits.push_back(*iEcalRecHit);
00031   }  
00032   vector<pair<math::XYZPoint,float> > theFilteredEcalRecHitsInAnnulus;
00033   if (outerconeMetric=="DR"){
00034     if (innerconeMetric=="DR"){
00035       theFilteredEcalRecHitsInAnnulus=EcalRecHitsinAnnulus_innerDRouterDRmetrics_(coneAxis,metricDR_,innerconeSize,metricDR_,outerconeSize,theFilteredEcalRecHits);
00036     }else if(innerconeMetric=="angle"){
00037       theFilteredEcalRecHitsInAnnulus=EcalRecHitsinAnnulus_innerAngleouterDRmetrics_(coneAxis,metricAngle_,innerconeSize,metricDR_,outerconeSize,theFilteredEcalRecHits);
00038     }else if(innerconeMetric=="area"){
00039       int errorFlag=0;
00040       FixedAreaIsolationCone theFixedAreaSignalCone;
00041       theFixedAreaSignalCone.setAcceptanceLimit(AreaMetric_recoElements_maxabsEta_);
00042       double innercone_angle=theFixedAreaSignalCone(coneAxis.theta(),coneAxis.phi(),0,innerconeSize,errorFlag);
00043       if (errorFlag!=0)return vector<pair<math::XYZPoint,float> >();
00044       theFilteredEcalRecHitsInAnnulus=EcalRecHitsinAnnulus_innerAngleouterDRmetrics_(coneAxis,metricAngle_,innercone_angle,metricDR_,outerconeSize,theFilteredEcalRecHits);
00045     }else return vector<pair<math::XYZPoint,float> >();
00046   }else if(outerconeMetric=="angle"){
00047     if (innerconeMetric=="DR"){
00048       theFilteredEcalRecHitsInAnnulus=EcalRecHitsinAnnulus_innerDRouterAnglemetrics_(coneAxis,metricDR_,innerconeSize,metricAngle_,outerconeSize,theFilteredEcalRecHits);
00049     }else if(innerconeMetric=="angle"){
00050       theFilteredEcalRecHitsInAnnulus=EcalRecHitsinAnnulus_innerAngleouterAnglemetrics_(coneAxis,metricAngle_,innerconeSize,metricAngle_,outerconeSize,theFilteredEcalRecHits);
00051     }else if(innerconeMetric=="area"){
00052       int errorFlag=0;
00053       FixedAreaIsolationCone theFixedAreaSignalCone;
00054       theFixedAreaSignalCone.setAcceptanceLimit(AreaMetric_recoElements_maxabsEta_);
00055       double innercone_angle=theFixedAreaSignalCone(coneAxis.theta(),coneAxis.phi(),0,innerconeSize,errorFlag);
00056       if (errorFlag!=0)return theFilteredEcalRecHitsInAnnulus;
00057       theFilteredEcalRecHitsInAnnulus=EcalRecHitsinAnnulus_innerAngleouterAnglemetrics_(coneAxis,metricAngle_,innercone_angle,metricAngle_,outerconeSize,theFilteredEcalRecHits);
00058     }else return vector<pair<math::XYZPoint,float> >();
00059   }else if(outerconeMetric=="area"){
00060     int errorFlag=0;
00061     FixedAreaIsolationCone theFixedAreaSignalCone;
00062     theFixedAreaSignalCone.setAcceptanceLimit(AreaMetric_recoElements_maxabsEta_);
00063     if (innerconeMetric=="DR"){
00064       // not implemented yet
00065     }else if(innerconeMetric=="angle"){
00066       double outercone_angle=theFixedAreaSignalCone(coneAxis.theta(),coneAxis.phi(),innerconeSize,outerconeSize,errorFlag);    
00067       if (errorFlag!=0)return theFilteredEcalRecHitsInAnnulus;
00068       theFilteredEcalRecHitsInAnnulus=EcalRecHitsinAnnulus_innerAngleouterAnglemetrics_(coneAxis,metricAngle_,innerconeSize,metricAngle_,outercone_angle,theFilteredEcalRecHits);
00069     }else if(innerconeMetric=="area"){
00070       double innercone_angle=theFixedAreaSignalCone(coneAxis.theta(),coneAxis.phi(),0,innerconeSize,errorFlag);    
00071       if (errorFlag!=0)return theFilteredEcalRecHitsInAnnulus;
00072       double outercone_angle=theFixedAreaSignalCone(coneAxis.theta(),coneAxis.phi(),innercone_angle,outerconeSize,errorFlag);
00073       if (errorFlag!=0)return theFilteredEcalRecHitsInAnnulus;
00074       theFilteredEcalRecHitsInAnnulus=EcalRecHitsinAnnulus_innerAngleouterAnglemetrics_(coneAxis,metricAngle_,innercone_angle,metricAngle_,outercone_angle,theFilteredEcalRecHits);
00075     }else return vector<pair<math::XYZPoint,float> >();
00076   }
00077   return theFilteredEcalRecHitsInAnnulus;
00078 }
00079 
00080 

Generated on Tue Jun 9 17:45:09 2009 for CMSSW by  doxygen 1.5.4