File indexing completed on 2025-12-16 10:29:43
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef HISTFACTORY_CHANNEL_H
0012 #define HISTFACTORY_CHANNEL_H
0013
0014 #include "RooStats/HistFactory/Data.h"
0015 #include "RooStats/HistFactory/Sample.h"
0016 #include "RooStats/HistFactory/Systematics.h"
0017
0018 #include <string>
0019 #include <fstream>
0020 #include <iostream>
0021 #include <map>
0022 #include <memory>
0023 #include <vector>
0024
0025 class TFile;
0026
0027 namespace RooStats{
0028 namespace HistFactory {
0029
0030 class Channel {
0031
0032
0033 public:
0034 friend class Measurement;
0035
0036 Channel() = default;
0037 Channel(std::string Name, std::string InputFile="");
0038
0039
0040 void SetName( const std::string& Name ) { fName = Name; }
0041
0042 std::string GetName() const { return fName; }
0043
0044 void SetInputFile( const std::string& file ) { fInputFile = file; }
0045
0046 std::string GetInputFile() const { return fInputFile; }
0047
0048 void SetHistoPath( const std::string& file ) { fHistoPath = file; }
0049
0050 std::string GetHistoPath() const { return fHistoPath; }
0051
0052
0053 void SetData( const RooStats::HistFactory::Data& data ) { fData = data; }
0054 void SetData( std::string HistoName, std::string InputFile, std::string HistoPath="" );
0055 void SetData( double Val );
0056 void SetData( TH1* hData );
0057
0058 RooStats::HistFactory::Data& GetData() { return fData; }
0059 const RooStats::HistFactory::Data& GetData() const { return fData; }
0060
0061
0062 void AddAdditionalData( const RooStats::HistFactory::Data& data ) { fAdditionalData.push_back(data); }
0063
0064 std::vector<RooStats::HistFactory::Data>& GetAdditionalData() { return fAdditionalData; }
0065
0066 void SetStatErrorConfig( double RelErrorThreshold, Constraint::Type ConstraintType );
0067 void SetStatErrorConfig( double RelErrorThreshold, std::string ConstraintType );
0068
0069 void SetStatErrorConfig( RooStats::HistFactory::StatErrorConfig Config ) { fStatErrorConfig = Config; }
0070
0071 HistFactory::StatErrorConfig& GetStatErrorConfig() { return fStatErrorConfig; }
0072 const HistFactory::StatErrorConfig& GetStatErrorConfig() const { return fStatErrorConfig; }
0073
0074 void AddSample( RooStats::HistFactory::Sample sample );
0075
0076 std::vector< RooStats::HistFactory::Sample >& GetSamples() { return fSamples; }
0077 const std::vector< RooStats::HistFactory::Sample >& GetSamples() const { return fSamples; }
0078
0079 void Print(std::ostream& = std::cout);
0080 void PrintXML( std::string const& directory, std::string const& prefix="" ) const;
0081
0082 void CollectHistograms();
0083 bool CheckHistograms() const;
0084
0085 protected:
0086
0087 std::string fName;
0088 std::string fInputFile;
0089 std::string fHistoPath;
0090
0091 HistFactory::Data fData;
0092
0093
0094
0095 std::vector<RooStats::HistFactory::Data> fAdditionalData;
0096
0097 HistFactory::StatErrorConfig fStatErrorConfig;
0098
0099 std::vector< RooStats::HistFactory::Sample > fSamples;
0100
0101 TH1* GetHistogram( std::string InputFile, std::string HistoPath, std::string HistoName, std::map<std::string, std::unique_ptr<TFile>>& lsof);
0102 };
0103
0104 extern Channel BadChannel;
0105
0106 }
0107 }
0108
0109 #endif