00001 #ifndef ELECTRONBUILDER_H_
00002 #define ELECTRONBUILDER_H_
00003
00004 #include <vector>
00005
00006 #include <TTreeReaderArray.h>
00007
00008 #include <CollectionBuilder.h>
00009 #include <Dataset.h>
00010 #include <PhysicsObjects.h>
00011 #include <Options.h>
00012
00013
00024 class ElectronBuilder : public CollectionBuilder<Electron> {
00025 public:
00027 ElectronBuilder(Dataset &dataset, Options const &);
00028
00030 std::vector<Electron> const &Get() const override;
00031
00033 std::vector<Electron> const &GetLoose() const;
00034
00036 std::vector<Electron> const &GetTight() const;
00037
00038 private:
00040 void Build() const override;
00041
00043 double minPtLoose_;
00044
00046 double minPtTight_;
00047
00049 double maxRelIsoLoose_;
00050
00052 double maxRelIsoTight_;
00053
00055 mutable std::vector<Electron> looseElectrons_;
00056
00058 mutable std::vector<Electron> tightElectrons_;
00059
00060 mutable TTreeReaderArray<float> srcPt_, srcEta_, srcPhi_, srcMass_, srcDeltaEtaSc_;
00061 mutable TTreeReaderArray<float> srcIsolation_;
00062 mutable TTreeReaderArray<int> srcCharge_;
00063 mutable TTreeReaderArray<bool> srcId_;
00064 mutable TTreeReaderArray<float> srcECorr_;
00065 };
00066
00067
00068 inline std::vector<Electron> const &ElectronBuilder::Get() const {
00069 return GetTight();
00070 }
00071
00072 #endif // ELECTRONBUILDER_H_
00073