88#define KAPPA_BASICTAUPRODUCER_H
99
1010#include " KBaseMultiLVProducer.h"
11+ #include " ../../DataFormats/interface/KTrack.h"
1112
1213template <typename TTau, typename TTauDiscriminator, typename TProduct>
1314// Note: We need to use std::vector here, not edm::View, because otherwise
@@ -31,8 +32,8 @@ class KBasicTauProducer : public KBaseMultiLVProducer<std::vector<TTau>, TProduc
3132
3233 binaryTauDiscriminatorBitMap[names[i]] = std::map<std::string, unsigned int >();
3334 floatTauDiscriminatorBitMap[names[i]] = std::map<std::string, unsigned int >();
34- discrMetadataMap [names[i]] = new KTauMetadata ();
35- _lumi_tree->Bronch (names[i].c_str (), " KTauMetadata" , &discrMetadataMap [names[i]]);
35+ discriminatorMap [names[i]] = new KTauMetadata ();
36+ _lumi_tree->Bronch (names[i].c_str (), " KTauMetadata" , &discriminatorMap [names[i]]);
3637
3738 const edm::ParameterSet pset = psBase.getParameter <edm::ParameterSet>(names[i]);
3839
@@ -52,8 +53,8 @@ class KBasicTauProducer : public KBaseMultiLVProducer<std::vector<TTau>, TProduc
5253
5354 for (size_t i = 0 ; i < names.size (); ++i)
5455 {
55- discrMetadataMap [names[i]]->binaryDiscriminatorNames .clear ();
56- discrMetadataMap [names[i]]->floatDiscriminatorNames .clear ();
56+ discriminatorMap [names[i]]->binaryDiscriminatorNames .clear ();
57+ discriminatorMap [names[i]]->floatDiscriminatorNames .clear ();
5758 binaryTauDiscriminatorBitMap[names[i]].clear ();
5859 floatTauDiscriminatorBitMap[names[i]].clear ();
5960
@@ -68,26 +69,31 @@ class KBasicTauProducer : public KBaseMultiLVProducer<std::vector<TTau>, TProduc
6869
6970 if (isCorrectType (desc.className ()))
7071 {
71- if (std::find (discrMetadataMap[names[i]]->binaryDiscriminatorNames .begin (), discrMetadataMap[names[i]]->binaryDiscriminatorNames .end (), moduleInstance) == discrMetadataMap[names[i]]->binaryDiscriminatorNames .end () && std::find (discrMetadataMap[names[i]]->floatDiscriminatorNames .begin (), discrMetadataMap[names[i]]->floatDiscriminatorNames .end (), moduleInstance) == discrMetadataMap[names[i]]->floatDiscriminatorNames .end ())
72+ if (std::find (discriminatorMap[names[i]]->binaryDiscriminatorNames .begin (),
73+ discriminatorMap[names[i]]->binaryDiscriminatorNames .end (),
74+ moduleInstance) == discriminatorMap[names[i]]->binaryDiscriminatorNames .end () &&
75+ std::find (discriminatorMap[names[i]]->floatDiscriminatorNames .begin (),
76+ discriminatorMap[names[i]]->floatDiscriminatorNames .end (),
77+ moduleInstance) == discriminatorMap[names[i]]->floatDiscriminatorNames .end ())
7278 {
7379 if (KBaseProducer::regexMatch (moduleInstance, binaryDiscrWhitelist[names[i]], binaryDiscrBlacklist[names[i]]))
7480 {
75- discrMetadataMap [names[i]]->binaryDiscriminatorNames .push_back (moduleInstance);
81+ discriminatorMap [names[i]]->binaryDiscriminatorNames .push_back (moduleInstance);
7682
77- binaryTauDiscriminatorBitMap[names[i]][moduleInstance] = discrMetadataMap [names[i]]->binaryDiscriminatorNames .size () - 1 ;
83+ binaryTauDiscriminatorBitMap[names[i]][moduleInstance] = discriminatorMap [names[i]]->binaryDiscriminatorNames .size () - 1 ;
7884
7985 if (this ->verbosity > 0 )
8086 std::cout << " Binary tau discriminator " << " : " << moduleInstance << " " << desc.processName () << std::endl;
8187
82- if (discrMetadataMap [names[i]]->binaryDiscriminatorNames .size ()>64 )
88+ if (discriminatorMap [names[i]]->binaryDiscriminatorNames .size ()>64 )
8389 throw cms::Exception (" Too many binary tau discriminators selected!" );
8490 }
8591
8692 if (KBaseProducer::regexMatch (moduleInstance, floatDiscrWhitelist[names[i]], floatDiscrBlacklist[names[i]]))
8793 {
88- discrMetadataMap [names[i]]->floatDiscriminatorNames .push_back (moduleInstance);
94+ discriminatorMap [names[i]]->floatDiscriminatorNames .push_back (moduleInstance);
8995
90- floatTauDiscriminatorBitMap[names[i]][moduleInstance] = discrMetadataMap [names[i]]->floatDiscriminatorNames .size () - 1 ;
96+ floatTauDiscriminatorBitMap[names[i]][moduleInstance] = discriminatorMap [names[i]]->floatDiscriminatorNames .size () - 1 ;
9197
9298 if (this ->verbosity > 0 )
9399 std::cout << " Float tau discriminator " << " : " << moduleInstance << " " << desc.processName () << std::endl;
@@ -116,10 +122,10 @@ class KBasicTauProducer : public KBaseMultiLVProducer<std::vector<TTau>, TProduc
116122 currentPreselDiscr = preselectionDiscr[name];
117123 currentDiscrProcessName = tauDiscrProcessName[name];
118124
119- currentBinaryDiscriminators = discrMetadataMap [name]->binaryDiscriminatorNames ;
125+ currentBinaryDiscriminators = discriminatorMap [name]->binaryDiscriminatorNames ;
120126 currentBinaryDiscriminatorMap = binaryTauDiscriminatorBitMap[name];
121127
122- currentFloatDiscriminators = discrMetadataMap [name]->floatDiscriminatorNames ;
128+ currentFloatDiscriminators = discriminatorMap [name]->floatDiscriminatorNames ;
123129 currentFloatDiscriminatorMap = floatTauDiscriminatorBitMap[name];
124130
125131 // Continue normally
@@ -137,6 +143,8 @@ class KBasicTauProducer : public KBaseMultiLVProducer<std::vector<TTau>, TProduc
137143
138144 // Charge:
139145 out.charge = in.charge ();
146+ out.emFraction = in.emFraction ();
147+ out.decayMode = in.decayMode ();
140148
141149 // Discriminators:
142150 edm::Ref<std::vector<TTau> > tauRef (this ->handle , this ->nCursor );
@@ -227,7 +235,7 @@ class KBasicTauProducer : public KBaseMultiLVProducer<std::vector<TTau>, TProduc
227235protected:
228236 std::map<std::string, std::vector<std::string> > preselectionDiscr;
229237 std::map<std::string, std::vector<std::string> > binaryDiscrWhitelist, binaryDiscrBlacklist, floatDiscrWhitelist, floatDiscrBlacklist;
230- std::map<std::string, KTauMetadata *> discrMetadataMap ;
238+ std::map<std::string, KTauMetadata *> discriminatorMap ;
231239 std::map<std::string, std::string > tauDiscrProcessName;
232240 std::map<std::string, std::map<std::string, unsigned int > > binaryTauDiscriminatorBitMap;
233241 std::map<std::string, std::map<std::string, unsigned int > > floatTauDiscriminatorBitMap;
0 commit comments