Как правильно добавить ветку в уже существующее дерево - PullRequest
0 голосов
/ 19 февраля 2020

Я вычисляю инвариантную массу по димуонному каналу.

Я использую RDataFrame для этого вычисления. Фрагмент моего кода выглядит следующим образом:

// Enable multi-threading
   ROOT::EnableImplicitMT();
   // Create dataframe from NanoAOD files
   ROOT::RDataFrame df("Delphes;6",
                      "tag_1_delphes_events.root");
   //auto mu_mass = df.Define("muon_mass", "0.1");
   // For simplicity, select only events with exactly two muons and require opposite charge
   //auto df_2mu = df.Filter("nMuon == 2", "Events with exactly two muons");
   auto df_os = df.Filter("Muon.Charge[0] != Muon.Charge[1]", "Muons with opposite charge");
   // Compute invariant mass of the dimuon system
   auto df_mu_mass = df_os.Define("muon_mass", "0.1");
   auto df_mass = df_mu_mass.Define("Dimuon_mass", InvariantMass<float>, {"Muon.PT", "Muon.Eta", "Muon.Phi", "muon_mass"});
   // Make histogram of dimuon mass spectrum
   auto h = df_mass.Histo1D({"Dimuon_mass", "Dimuon_mass", 30000, 0.25, 300}, "Dimuon_mass");
   // Request cut-flow report
   auto report = df_mass.Report();
   // Produce plot

Мои значения PT, eta, Phi являются значениями с плавающей запятой. Я получаю ошибку:

terminate called after throwing an instance of 'std::runtime_error'
  what():  RColumnValue: type specified for column "muon_mass" is ROOT::VecOps::RVec<float> but temporary column has type double

Я пытался вставить RVe c перед 0,1 в моем Определении, но это не сработало. Как я могу исправить эту проблему, чтобы она работала?

1 Ответ

0 голосов
/ 11 марта 2020

Самый простой способ, который я нашел, чтобы решить эту проблему, это добавить значение ветви вручную в моем Дереве

...