Crombie Tools
TMVACorrector.cc
Go to the documentation of this file.
1 /**
2  @file TMVACorrector.cc
3  Describes the TMVACorrector class.
4  @author Daniel Abercrombie <dabercro@mit.edu>
5 */
6 
7 #include <fstream>
8 
9 #include "TMVACorrector.h"
10 
12 
13 TMVACorrector::TMVACorrector(TString name, TString weights_file)
14 : Corrector(name),
15  fWeightsFile{weights_file}
16 {}
17 
19  delete reader;
20 }
21 
22 void TMVACorrector::ReadVarConfig(const char* config) {
23  std::ifstream configFile {config};
24  TString var_name;
25  TString expr;
26 
27  while (!configFile.eof()) {
28  configFile >> var_name;
29  if (var_name == "SPEC")
30  continue;
31 
32  configFile >> expr;
33  if (expr != "") {
34  fVarNames.push_back(var_name);
35  AddInExpression(expr);
36  fFormulaResults.push_back({});
37  reader->AddVariable(var_name, &fFormulaResults.back());
38  }
39  }
40  method = reader->BookMVA(fName, fWeightsFile);
41 }
42 
44  for (decltype(GetNumDims()) iDim = 0; iDim < GetNumDims(); ++iDim)
45  fFormulaResults[iDim] = GetFormulaResult(iDim, false);
46 
47  Float_t output = method->GetMvaValue();
48  return output;
49 }
50 
51 //--------------------------------------------------------------------
53 {
55  auto* newreader = newTMVACorrector->reader;
56  *newTMVACorrector = *this;
57  newTMVACorrector->reader = newreader;
58  for (decltype(GetNumDims()) iDim = 0; iDim < GetNumDims(); ++iDim)
59  newTMVACorrector->reader->AddVariable(fVarNames[iDim], &(newTMVACorrector->fFormulaResults[iDim]));
60  newTMVACorrector->method = newTMVACorrector->reader->BookMVA(fName, fWeightsFile);
61 
62  newTMVACorrector->fIsCopy = true;
63  return newTMVACorrector;
64 }