CMS 3D CMS Logo

VisCaloTower Class Reference

#include <VisReco/Analyzer/interface/VisCaloTower.h>

Inheritance diagram for VisCaloTower:

edm::EDAnalyzer

List of all members.

Public Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
 VisCaloTower (const edm::ParameterSet &)
virtual ~VisCaloTower ()

Private Attributes

edm::InputTag inputTag_


Detailed Description

Definition at line 18 of file VisCaloTower.h.


Constructor & Destructor Documentation

VisCaloTower::VisCaloTower ( const edm::ParameterSet iConfig  ) 

Definition at line 34 of file VisCaloTower.cc.

00035     : inputTag_ (iConfig.getParameter<edm::InputTag>("visCaloTowerTag"))
00036 {}

virtual VisCaloTower::~VisCaloTower (  )  [inline, virtual]

Definition at line 25 of file VisCaloTower.h.

00025 {}


Member Function Documentation

void VisCaloTower::analyze ( const edm::Event event,
const edm::EventSetup eventSetup 
) [virtual]

Implements edm::EDAnalyzer.

Definition at line 39 of file VisCaloTower.cc.

References IgCollection::addProperty(), ASSERT, IterativeConePu5Jets_PbPb_cff::caloTowers, collection, edmplugin::standard::config(), IgCollection::create(), error, ET, ETA, Exception, edm::EventSetup::get(), IgDataStorage::getCollection(), CaloCellGeometry::getCorners(), inputTag_, edm::InputTag::instance(), edm::Service< T >::isAvailable(), edm::Handle< T >::isValid(), edm::ESHandle< T >::isValid(), it, edm::InputTag::label(), PHI, edm::InputTag::process(), EZArrayFL< T >::size(), x, y, and z.

00040 {
00041     edm::Service<IguanaService> config;
00042     if (! config.isAvailable ()) 
00043     {
00044         throw cms::Exception ("Configuration")
00045             << "VisCaloTower requires the IguanaService\n"
00046             "which is not present in the configuration file.\n"
00047             "You must add the service in the configuration file\n"
00048             "or remove the module that requires it";
00049     }
00050     
00051     edm::Handle<CaloTowerCollection> collection;
00052     event.getByLabel (inputTag_, collection);
00053 
00054     edm::ESHandle<CaloGeometry> geom;
00055     eventSetup.get<CaloGeometryRecord> ().get (geom);
00056 
00057     if (collection.isValid () && geom.isValid ())
00058     {       
00059         IgDataStorage *storage = config->storage ();
00060         IgCollection &caloTowers = storage->getCollection("CaloTowers_V1");
00061         IgProperty ET   = caloTowers.addProperty("et", 0.0);
00062         IgProperty ETA  = caloTowers.addProperty("eta", 0.0);
00063         IgProperty PHI  = caloTowers.addProperty("phi", 0.0);
00064         IgProperty IPHI = caloTowers.addProperty("iphi", 0.0);
00065         IgProperty HE   = caloTowers.addProperty("hadEnergy", 0.0);
00066         IgProperty EE   = caloTowers.addProperty("emEnergy", 0.0);
00067         IgProperty POS  = caloTowers.addProperty("pos", IgV3d());
00068         IgProperty FRONT_1 = caloTowers.addProperty("front_1", IgV3d());
00069         IgProperty FRONT_2 = caloTowers.addProperty("front_2", IgV3d());
00070         IgProperty FRONT_3 = caloTowers.addProperty("front_3", IgV3d());
00071         IgProperty FRONT_4 = caloTowers.addProperty("front_4", IgV3d());
00072         IgProperty BACK_1 = caloTowers.addProperty("back_1", IgV3d());
00073         IgProperty BACK_2 = caloTowers.addProperty("back_2", IgV3d());
00074         IgProperty BACK_3 = caloTowers.addProperty("back_3", IgV3d());
00075         IgProperty BACK_4 = caloTowers.addProperty("back_4", IgV3d());
00076 
00077         for (CaloTowerCollection::const_iterator it=collection->begin(), itEnd=collection->end(); it!=itEnd; ++it)
00078         {
00079             const CaloCellGeometry *cell = (*geom).getGeometry((*it).id());
00080 
00081             const CaloCellGeometry::CornersVec& corners = cell->getCorners();
00082             ASSERT(corners.size()==8);
00083 
00084             IgCollectionItem itower = caloTowers.create();
00085             itower[ET] = static_cast<double>((*it).et());
00086             itower[ETA] = static_cast<double>((*it).eta());
00087             itower[PHI] = static_cast<double>((*it).phi());
00088             itower[IPHI] = static_cast<double>((*it).iphi());
00089             itower[HE] = static_cast<double>((*it).hadEnergy());
00090             itower[EE] = static_cast<double>((*it).emEnergy());
00091             itower[FRONT_1] = IgV3d(static_cast<double>(corners[0].x()/100.0), static_cast<double>(corners[0].y()/100.0), static_cast<double>(corners[0].z()/100.0));
00092             itower[FRONT_2] = IgV3d(static_cast<double>(corners[1].x()/100.0), static_cast<double>(corners[1].y()/100.0), static_cast<double>(corners[1].z()/100.0));
00093             itower[FRONT_3] = IgV3d(static_cast<double>(corners[2].x()/100.0), static_cast<double>(corners[2].y()/100.0), static_cast<double>(corners[2].z()/100.0));
00094             itower[FRONT_4] = IgV3d(static_cast<double>(corners[3].x()/100.0), static_cast<double>(corners[3].y()/100.0), static_cast<double>(corners[3].z()/100.0));
00095             itower[BACK_1] = IgV3d(static_cast<double>(corners[4].x()/100.0), static_cast<double>(corners[4].y()/100.0), static_cast<double>(corners[4].z()/100.0));
00096             itower[BACK_2] = IgV3d(static_cast<double>(corners[5].x()/100.0), static_cast<double>(corners[5].y()/100.0), static_cast<double>(corners[5].z()/100.0));
00097             itower[BACK_3] = IgV3d(static_cast<double>(corners[6].x()/100.0), static_cast<double>(corners[6].y()/100.0), static_cast<double>(corners[6].z()/100.0));
00098             itower[BACK_4] = IgV3d(static_cast<double>(corners[7].x()/100.0), static_cast<double>(corners[7].y()/100.0), static_cast<double>(corners[7].z()/100.0));
00099         }
00100     }
00101     else 
00102     {
00103         // friendlyName:moduleLabel:instanceName:processName
00104         std::string error = "### Error: CaloTowers "
00105                             + edm::TypeID (typeid (CaloTowerCollection)).friendlyClassName () + ":" 
00106                             + inputTag_.label() + ":"
00107                             + inputTag_.instance() + ":" 
00108                             + inputTag_.process() + " are not found.";
00109 
00110         IgDataStorage *storage = config->storage ();
00111         IgCollection &collection = storage->getCollection ("Errors_V1");
00112         IgProperty ERROR_MSG = collection.addProperty ("Error", std::string ());
00113         IgCollectionItem item = collection.create ();
00114         item [ERROR_MSG] = error;
00115     }
00116 }


Member Data Documentation

edm::InputTag VisCaloTower::inputTag_ [private]

Definition at line 30 of file VisCaloTower.h.

Referenced by analyze().


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