CMS 3D CMS Logo

Discriminants.h

Go to the documentation of this file.
00001 #ifndef RecoTauTag_TauTagTools_PFTauDiscriminants
00002 #define RecoTauTag_TauTagTools_PFTauDiscriminants
00003 
00004 #include "RecoTauTag/TauTagTools/interface/PFTauDiscriminantBase.h"
00005 
00006 /*
00007  * Discriminants.h
00008  *
00009  * Author: Evan K. Friis, UC Davis; friis@physics.ucdavis.edu
00010  *
00011  * A non-inclusive (for now) set of discriminants to be used for TauID.
00012  *
00013  * These discriminants inherit from the base class found in PFTauDiscriminantBase.h
00014  *
00015  * The arguments given in the constructor are:
00016  *      DiscriminantBase<TYPE>(name, ROOT Branch Name, Is Required, Is Multiple, Default Value)
00017  *
00018  * Implementation is done by defining the abstract doComputatation(...) method (see src/Discriminants.cc)
00019  * The return value(s) should be inserted into 'result', a vector of type TYPE.  Note that even if the value returns
00020  * a single value, it (and only it) shoudl be inserted into the vector.  The vector is automatically cleared by the discriminant
00021  * manager.
00022  *
00023  * Note on adding discriminants: If you get weird vtable errors during linking, make sure that you have implemented the destructor! 
00024  * i.e. ~DecayMode(){}; versus ~DecayMode();
00025  *
00026  */
00027 
00028 namespace PFTauDiscriminants {
00029 using namespace std;
00030 
00031 typedef reco::Particle::LorentzVector LorentzVector;
00032 
00033 //forward declarations
00034 
00035 class DecayMode : public DiscriminantBase<int> {
00036    public:
00037       DecayMode():DiscriminantBase<int>("DecayMode", "I", true, false, -1){};
00038       ~DecayMode(){};
00039    protected:
00040       void doComputation(PFTauDiscriminantManager* input, vector<int>& result);
00041 };
00042 
00043 class OutlierNCharged : public DiscriminantBase<int> {
00044    public:
00045       OutlierNCharged():DiscriminantBase<int>("OutlierNCharged", "I", true, false, -1){};
00046       ~OutlierNCharged(){};
00047    protected:
00048       void doComputation(PFTauDiscriminantManager* input, vector<int>& result);
00049 };
00050 
00051 
00052 class Pt : public DiscriminantBase<double>  {
00053    public:
00054       Pt():DiscriminantBase<double>("Pt", "D", true, false, 0.0){};
00055       ~Pt(){};
00056    protected:
00057       void doComputation(PFTauDiscriminantManager* input, vector<double>& result);
00058 };
00059 
00060 class Eta : public DiscriminantBase<double>  {
00061    public:
00062       Eta():DiscriminantBase<double>("Eta", "D", true, false, 0.0){};
00063       ~Eta(){};
00064    protected:
00065       void doComputation(PFTauDiscriminantManager* input, vector<double>& result);
00066 };
00067 
00068 class MainTrackPt : public DiscriminantBase<double>  {
00069    public:
00070       MainTrackPt():DiscriminantBase<double>("MainTrackPt", "D", true, false, -1){};
00071       ~MainTrackPt(){};
00072    protected:
00073       void doComputation(PFTauDiscriminantManager* input, vector<double>& result);
00074 };
00075 
00076 class MainTrackAngle : public DiscriminantBase<double>  {
00077    public:
00078       MainTrackAngle():DiscriminantBase<double>("MainTrackAngle", "D", true, false, -1){};
00079       ~MainTrackAngle(){};
00080    protected:
00081       void doComputation(PFTauDiscriminantManager* input, vector<double>& result);
00082 };
00083 
00084 class TrackPt : public DiscriminantBase<double> {
00085    public:
00086       TrackPt():DiscriminantBase<double>("TrackPt", "vector<double>", false, true, 0.0){};
00087       ~TrackPt(){};
00088    protected:
00089       void doComputation(PFTauDiscriminantManager* input, vector<double>& result);
00090 };
00091 
00092 class PiZeroPt : public DiscriminantBase<double> {
00093    public:
00094       PiZeroPt():DiscriminantBase<double>("PiZeroPt", "vector<double>", false, true, 0.0){};
00095       ~PiZeroPt(){};
00096    protected:
00097       void doComputation(PFTauDiscriminantManager* input, vector<double>& result);
00098 };
00099 
00100 class TrackAngle : public DiscriminantBase<double> {
00101    public:
00102       TrackAngle():DiscriminantBase<double>("TrackAngle", "vector<double>", false, true, 0.0){};
00103       ~TrackAngle(){};
00104    protected:
00105       void doComputation(PFTauDiscriminantManager* input, vector<double>& result);
00106 };
00107 
00108 class PiZeroAngle : public DiscriminantBase<double> {
00109    public:
00110       PiZeroAngle():DiscriminantBase<double>("PiZeroAngle", "vector<double>", false, true, 0.0){};
00111       ~PiZeroAngle(){};
00112    protected:
00113       void doComputation(PFTauDiscriminantManager* input, vector<double>& result);
00114 };
00115 
00116 class Dalitz : public DiscriminantBase<double> {
00117    public:
00118       Dalitz():DiscriminantBase<double>("Dalitz", "vector<double>", false, true, 0.0){};
00119       ~Dalitz(){};
00120    protected:
00121       void doComputation(PFTauDiscriminantManager* input, vector<double>& result);
00122 };
00123 
00124 // takes invariant mass of all objects in signal cone
00125 class InvariantMassOfSignal : public DiscriminantBase<double> {
00126    public:
00127       InvariantMassOfSignal():DiscriminantBase<double>("InvariantMassOfSignal", "D", true, false, 0.0){};
00128       ~InvariantMassOfSignal(){};
00129    protected:
00130       void doComputation(PFTauDiscriminantManager* input, vector<double>& result);
00131 };
00132 
00133 // returns vector of invariant masses of larger and larger subsets of all signal objects e.g. result[2] is
00134 // the invariant mass of the lead track with the next highest Pt object
00135 
00136 class InvariantMass : public DiscriminantBase<double> {
00137    public:
00138       InvariantMass():DiscriminantBase<double>("InvariantMass", "vector<double>", false, true, 0.0){};
00139       ~InvariantMass(){};
00140    protected:
00141       void doComputation(PFTauDiscriminantManager* input, vector<double>& result);
00142 };
00143 
00144 class OutlierPt : public DiscriminantBase<double> {
00145    public:
00146       OutlierPt():DiscriminantBase<double>("OutlierPt", "vector<double>", false, true, 0.0){};
00147       ~OutlierPt(){};
00148    protected:
00149       void doComputation(PFTauDiscriminantManager* input, vector<double>& result);
00150 };
00151 
00152 class OutlierAngle : public DiscriminantBase<double> {
00153    public:
00154       OutlierAngle():DiscriminantBase<double>("OutlierAngle", "vector<double>", false, true, 0.0){};
00155       ~OutlierAngle(){};
00156    protected:
00157       void doComputation(PFTauDiscriminantManager* input, vector<double>& result);
00158 };
00159 
00160 class ChargedOutlierPt : public DiscriminantBase<double> {
00161    public:
00162       ChargedOutlierPt():DiscriminantBase<double>("ChargedOutlierPt", "vector<double>", false, true, 0.0){};
00163       ~ChargedOutlierPt(){};
00164    protected:
00165       void doComputation(PFTauDiscriminantManager* input, vector<double>& result);
00166 };
00167 
00168 class ChargedOutlierAngle : public DiscriminantBase<double> {
00169    public:
00170       ChargedOutlierAngle():DiscriminantBase<double>("ChargedOutlierAngle", "vector<double>", false, true, 0.0){};
00171       ~ChargedOutlierAngle(){};
00172    protected:
00173       void doComputation(PFTauDiscriminantManager* input, vector<double>& result);
00174 };
00175 
00176 class NeutralOutlierPt : public DiscriminantBase<double> {
00177    public:
00178       NeutralOutlierPt():DiscriminantBase<double>("NeutralOutlierPt", "vector<double>", false, true, 0.0){};
00179       ~NeutralOutlierPt(){};
00180    protected:
00181       void doComputation(PFTauDiscriminantManager* input, vector<double>& result);
00182 };
00183 
00184 class NeutralOutlierAngle : public DiscriminantBase<double> {
00185    public:
00186       NeutralOutlierAngle():DiscriminantBase<double>("NeutralOutlierAngle", "vector<double>", false, true, 0.0){};
00187       ~NeutralOutlierAngle(){};
00188    protected:
00189       void doComputation(PFTauDiscriminantManager* input, vector<double>& result);
00190 };
00191 
00192 
00193 }
00194 #endif
00195 
00196 
00197 
00198 
00199 

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