#ifndef _PHYSICS_TOWER_DATA_MAKER_HH_ #define _PHYSICS_TOWER_DATA_MAKER_HH_ #ifdef USE_CDFEDM2 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // Component: PhysicsTowerDataMaker.hh // // Purpose: This is the class that makes the PhysicsTowerData object. // // Notes: This maker class uses a data input source and a tower calculator object to make physics towers (see SourceHEPG.hh and // SourceCalData.hh for input source examples and StandardCalculator and FourVecCalculator for calculator examples). The // default constructor of this class uses SourceCalData and StandardCalculator, i.e. the Run1b default. // // Created: 13/09/1999 Pierre Savard // // History: // 30/08/2000 Matthias Toennesmann - Added description string to calling parameters of clump function. // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include #include "AbsEnv/AbsEnv.hh" #include "CalorGeometry/CalConstants.hh" #include "CalorGeometry/TowerKey.hh" #include "CalorObjects/PhysicsTowerData.hh" #include "Calor/InputSource.hh" #include "Calor/TowerCalculator.hh" #include "CalorObjects/TowerCorrectionColl.hh" // namespace calor{ // For now we use a float to identify a vertex (z coordinate). Eventually, we will have a pointer to a vertex object. class PhysicsTowerDataMaker{ public: // // Memory management // PhysicsTowerDataMaker(); ~PhysicsTowerDataMaker(); // Compiler generated default copy constructor // // PhysicsTowerData creation methods // // note: after edmization the PhysicsTowerData* will actually be something that looks like this: ConstHandle. // PhysicsTowerData_ch create(AbsEvent* anEvent); // WARNING! This constructor will use zVertex = 0 and the StandardCalculator. // PhysicsTowerData_ch create(AbsEvent* anEvent, InputSource* source, Vertex& vtx, TowerCalculator* calc); // PhysicsTowerData_ch create(AbsEvent* anEvent, InputSource* source, Vertex& vtx, TowerCalculator* calc, // const std::string& description); PhysicsTowerData_ch create(AbsEvent* anEvent, PhysicsTowerParams& params, const std::string& description); PhysicsTowerData_h create_h(AbsEvent* anEvent, PhysicsTowerParams& params, const std::string& description); // The clump method is CDF calorimeter specific. It transforms CDF's eta-phi grid into a regular (52x24) eta-phi grid. It is // currently used in the JetClu and MidPoint modules. Warning: The PhysicsTowers made with this method will only have iEta, iPhi, // energy and Et information. The rest of the data members will have values equal to 0. This is true if the StandardCalculator is // used. With the FourVectorCalculator more (but not all) data members are calculated. PhysicsTowerData_ch clump(AbsEvent* anEvent, PhysicsTowerData_ch& pData, float etThreshold, const std::string& description); // The dijet mass group will make these corrections available in the event. See TowerCorrections.hh and TowerCorrection for more // information. // PhysicsTowerData_ch create(AbsEvent* anEvent, PhysicsTowerParams& params, const std::string& description); // PhysicsTowerData_h create_h(AbsEvent* anEvent, PhysicsTowerParams& params, const std::string& description); PhysicsTowerData_ch create(AbsEvent* anEvent, PhysicsTowerParams& params, const std::string& description, const TowerCorrectionColl& tc); PhysicsTowerData_h create_h(AbsEvent* anEvent, PhysicsTowerParams& params, const std::string& description, const TowerCorrectionColl& tc); // // Manipulation and access // // PhysicsTowerData* contents(){return _ptData;} protected: // void destroy(){ } private: InputSource* _source; Locations* _locs; TowerCalculator* _calc; PhysicsTowerData_h _pData; // InputSource* _source; // PhysicsTowerData* _ptData; }; //} // namespace calor #endif // USE_CDFEDM2 #endif // _PHYSICS_TOWER_DATA_MAKER_HH_