00001 #ifndef PTMISSBUILDER_H_ 00002 #define PTMISSBUILDER_H_ 00003 00004 #include <initializer_list> 00005 #include <optional> 00006 #include <vector> 00007 00008 #include <TTreeReaderArray.h> 00009 00010 #include <CollectionBuilder.h> 00011 #include <Dataset.h> 00012 #include <EventCache.h> 00013 #include <Options.h> 00014 #include <PhysicsObjects.h> 00015 00016 00029 class PtMissBuilder { 00030 public: 00031 PtMissBuilder(Dataset &dataset, Options const &options); 00032 00034 PtMiss const &Get() const; 00035 00044 void PullCalibration( 00045 std::initializer_list<CollectionBuilderBase const *> builders); 00046 00047 private: 00049 enum class Syst { 00050 None, 00051 UnclEnergyUp, 00052 UnclEnergyDown 00053 }; 00054 00056 void Build() const; 00057 00059 Syst syst_; 00060 00062 bool applyEeNoiseMitigation_; 00063 00065 EventCache cache_; 00066 00068 std::vector<CollectionBuilderBase const *> calibratingBuilders_; 00069 00071 mutable PtMiss ptMiss_; 00072 00073 mutable TTreeReaderValue<float> srcPt_, srcPhi_; 00074 mutable std::optional<TTreeReaderValue<float>> srcSignificance_; 00075 mutable std::optional<TTreeReaderValue<float>> srcUnclEnergyUpDeltaX_, 00076 srcUnclEnergyUpDeltaY_; 00077 00083 mutable std::optional<TTreeReaderValue<float>> srcDefaultPt_, srcDefaultPhi_, 00084 srcFixedPt_, srcFixedPhi_; 00085 }; 00086 00087 #endif // PTMISSBUILDER_H_