00001 #ifndef RecoTauTag_TauTagTools_PFTauDiscriminants
00002 #define RecoTauTag_TauTagTools_PFTauDiscriminants
00003
00004 #include "RecoTauTag/TauTagTools/interface/PFTauDiscriminantBase.h"
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 namespace PFTauDiscriminants {
00029 using namespace std;
00030
00031 typedef reco::Particle::LorentzVector LorentzVector;
00032
00033
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
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
00134
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