#ifndef _ElectronVariables_HH_ #define _ElectronVariables_HH_ 1 ////////////////////////////////////////////////////////////////////////// // File: ElectronVariables.hh // Created: 10/24/2000 ////////////////////////////////////////////////////////////////////////// //--------------- // C++ Headers -- //--------------- #include #include #include //------------------------------- // Collaborating Class Headers -- //------------------------------- #include "ElectronObjects/CdfEmObject.hh" #include "ElectronObjects/CdfEmObjectColl.hh" #include "CalorGeometry/CalConstants.hh" //class CdfEmObject; // SLL Oct 06, 2003 #include "Electron/emobj_alg.hh" ///////////////////////////////////////////////////////////////////////////// // Below are electron accessor functions. They can be called by including // "HighLevelObjects/ElectronVariables.hh" in your code and then typing // ElectronVariables::eleOne_of_the_functions( input_parameter, etc... ) // Looking at the actual functions in ElectronVariables.cc is sometimes more // illuminating... ///////////////////////////////////////////////////////////////////////////// namespace ElectronVariables { // Returns detector region (CEM=0, PEM=1) -- "CalorGeometry/CalConstants.hh" // Detector eleDetector(const CdfEmObject& em_object); // current algorithm: in CEM, if emObject has track, use CES clusters // closest to track, else use highest energy clusters // In PEM, use closest PES cluster to PEM centroid // Failing everything else, use cluster centroid double eleEtaDetector(const CdfEmObject& em_object); // Event eta... // double eleEtaEvent(const CdfEmObject& em_object); // Phi... // double elePhi(const CdfEmObject& em_object); // Phi from CES/PES only ... double eleStripPhi(const CdfEmObject& em_object); // Z-vertex... // double eleZVertex(const CdfEmObject& em_object); // Cluster centroid Z-coordinate... // double eleZCentroid(const CdfEmObject& em_object); // Raw energy of cluster in EM calorimeter... // double eleRawEmEnergy(const CdfEmObject& em_object); // em calorimeter Et... // double eleEmEt(const CdfEmObject& em_object); // Raw energy of cluster in HAD calorimeter... // double eleRawHadEnergy(const CdfEmObject& em_object); // Transverse Had energy... // double eleHadEt(const CdfEmObject& em_object); // Total (raw) energy (EM cal. + HAD cal.)... // double eleTotalRawEnergy(const CdfEmObject& em_object); // Total (transverse) energy (EM Et + HAD Et)... // double eleTotalEt(const CdfEmObject& em_object); // Corrected Et...FOR NOW THERE ARE NO CORRECTIONS... // SEE .CC FILE... // double eleCorrectedEt(const CdfEmObject& em_object); // 'Had over Em' (hadronic energy / electromagnetic energy)... // ...method called uses total em energy & total // had energy as of 11/01/00... // double eleHadEm(const CdfEmObject& em_object); // Total isolation (had + em) energy in cone of .4 // double eleTotalIso4(const CdfEmObject& em_object); // Total isolation (had + em) energy in cone of .7 // double eleTotalIso7(const CdfEmObject& em_object); // Em isolation energy in cone of .4 // double eleEmIso4(const CdfEmObject& em_object); // Em isolation energy in cone of .7 // double eleEmIso7(const CdfEmObject& em_object); // Had isolation energy in cone of .4 // double eleHadIso4(const CdfEmObject& em_object); // Had isolation energy in cone of .7 // double eleHadIso7(const CdfEmObject& em_object); // Lshr... // double eleLshr(const CdfEmObject& em_object); // Lshr2 (two-tower Lshr?)... // double eleLshr2(const CdfEmObject& em_object); // Pt... Returns pt of the track associated with the electron. // This is currently (11/01/00) the max pt track of those matching // the em cluster. -check CdfEmObject.hh/.cc to make sure... // If there is no track for the CdfEmObject in question, -9999.0 // will be returned. // double eleTrackPt(const CdfEmObject& em_object); // Four Momentum (HepLorentzVector) for the track associated // with the electron. (See comments for previous function) If // there is no track for the CdfEmObject in question, a // HepLorentzVector with all entries = -9999.0 will be returned. // HepLorentzVector eleFourMomentum(const CdfEmObject& em_object); // Charge... // If there is no track for the CdfEmObject in question, -9999.0 // will be returned. // double eleCharge(const CdfEmObject& em_object); // E over P. -Returns (Energy of cluster in EM cal.)/(magnitude of track mom.)... // If there is no track for the CdfEmObject in question, -9999.0 // will be returned. // double eleEOverP(const CdfEmObject& em_object); // Xces (wire info.)... // If wire cluster is null, returns -8888.0 // double eleXces(const CdfEmObject& em_object); // Chi-squared for wire cluster... // If wire cluster is null, returns -8888.0 // double eleChiW(const CdfEmObject& em_object); // Delta-x... // If wire cluster is null, returns -8888.0 // If there is no track for the CdfEmObject in question, // -9999.0 will be returned. // double eleDeltaX(const CdfEmObject& em_object); // Zces (strip info.)... // If strip cluster is null, returns -8888.0 // double eleZces(const CdfEmObject& em_object); // Chi-squared for strip cluster... // If strip cluster is null, returns -8888.0 // double eleChiS(const CdfEmObject& em_object); // Delta-z... // If strip cluster is null, returns -8888.0 // If there is no track for the CdfEmObject in question, // -9999.0 will be returned. // double eleDeltaZ(const CdfEmObject& em_object); // Fiducial routine... // Returns -1 if any strip/wire cluster is null. // Returns 0 for not fiducial, 1 for fiducial, and // 2 for fiducial (tower 9) // //int eleFid(const CdfEmObject& em_object); // likelihood combining EM ID variables double eleLikelihood(const CdfEmObject& em_object, LikelihoodVersion ver=ORIGINAL); //********************************************************************* // Tracking isolation. This takes five input parameters: Limits are // currently set as follows: // // (1) POINTER to a CdfTrack. -Taken as seed track. // (2) REFERENCE to a CdfTrackView. // (3) 0.0 <= cone_size <= 5.0 [eta-phi space] // (4) 0.0 <= dz_max <= 20.0 [cm] // (5) 0.0 <= pt_min <= 100.0 [GeV] // // Returns -9.0 if an input parameter is unacceptable. Otherwise returns // sum of pt of tracks within specified cone (excluding pt of seed track). // // -If using your own code and are unclear about selecting a CdfTrackView, // here is an example which will work, provided you have already defined // a pointer to a specific CdfEmObject -- type: // // const CdfTrackView& yourTracks = yourpointertoemobject->matchingTracks(); // // -you could then pass `yourtracks' as the 2nd input parameter... // double eleTiso( const CdfTrack* seed_track, const CdfTrackView& track_list, double cone_size, double dz_max, double pt_min ); //*********************************************************************** //********************************************************************* // ###THIS TISO IS OVERLOADED, TAKES SLIGHTLY DIFFERENT INPUT FORMS### // Tracking isolation. This takes five input parameters: Limits are // currently set as follows: // // (1) must be a CdfEmObject::Track_link. // (2) must be a CdfTrackView_h. // (3) 0.0 <= cone_size <= 5.0 [eta-phi space] // (4) 0.0 <= dz_max <= 20.0 [cm] // (5) 0.0 <= pt_min <= 100.0 [GeV] // // Returns -9.0 if an input parameter is unacceptable. Otherwise returns // sum of pt of tracks within specified cone (excluding pt of seed track). // // -If using your own code and are unclear about selecting a CdfTrackView, // here is an example which will work, provided you have already defined // a pointer to a specific CdfEmObject -- type: // // const CdfTrackView& yourTracks = yourpointertoemobject->matchingTracks(); // // -you could then pass `yourtracks' as the 2nd input parameter... // double eleTiso( CdfEmObject::Track_link seed_track, CdfTrackView_h track_list, double cone_size, double dz_max, double pt_min ); //*********************************************************************** } #endif