gordonwatts / BDTTrainingAnalysisLanguage

Pull from ATLAS EXOT 15 Derivation, columnar data, and flat rootutples with RDF to scikitlearn in one nice fast swoop
0 stars 2 forks source link

Jet Pt is getting set in the wrong place #62

Closed gordonwatts closed 5 years ago

gordonwatts commented 5 years ago

Well... back to the same sort of problem we sometimes saw in the C# framework.

gordonwatts commented 5 years ago
StatusCode query :: execute ()
{
// Here you do everything that needs to be done on every single
// events, e.g. read input variables, apply cuts, and fill
// histograms and trees.  This is where most of your actual analysis
// code will go.
{
    const xAOD::JetContainer* jets0;
    {
    const xAOD::JetContainer* result = 0;
    ANA_CHECK (evtStore()->retrieve(result, "AntiKt4EMTopoJets"));
    jets0 = result;
    }
    for (auto i_obj26 : *jets0)
    {
    if (((i_obj26->pt()/1000.0)>40.0))
    {
        const xAOD::EventInfo* eventinfo1;
        std::vector<double> jets2;
        std::vector<double> jets3;
        std::vector<double> jets4;
        std::vector<double> jets5;
        std::vector<double> jets6;
        std::vector<double> jets7;
        std::vector<double> jets8;
        std::vector<double> jets9;
        std::vector<double> jets10;
        std::vector<double> jets11;
        std::vector<double> jets12;
        std::vector<double> jets13;
        std::vector<double> jets14;
        std::vector<double> jets15;
        std::vector<double> jets16;
        std::vector<double> jets17;
        std::vector<double> jets18;
        std::vector<double> jets19;
        std::vector<double> jets20;
        std::vector<double> jets21;
        std::vector<double> jets22;
        std::vector<double> jets23;
        std::vector<double> jets24;
        std::vector<double> jets25;
        {
        const xAOD::EventInfo* result = 0;
        ANA_CHECK (evtStore()->retrieve(result, "EventInfo"));
        eventinfo1 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets2 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets3 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets4 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets5 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets6 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets7 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets8 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets9 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets10 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets11 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets12 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets13 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets14 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets15 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets16 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets17 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets18 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets19 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets20 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets21 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets22 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets23 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets24 = result;
        }
        {
        auto result = i_obj26->getAttribute<std::vector<double>>("EnergyPerSampling");
        jets25 = result;
        }
        _RunNumber27 = eventinfo1->runNumber();
        _EventNumber28 = eventinfo1->eventNumber();
        _JetEta30 = i_obj26->eta();
        _EMM_BL031 = (jets2.at(0)/1000.0);
        _EMM_BL132 = (jets3.at(1)/1000.0);
        _EMM_BL233 = (jets4.at(2)/1000.0);
        _EMM_BL334 = (jets5.at(3)/1000.0);
        _EMM_EL035 = (jets6.at(4)/1000.0);
        _EMM_EL136 = (jets7.at(5)/1000.0);
        _EMM_EL237 = (jets8.at(6)/1000.0);
        _EMM_EL338 = (jets9.at(7)/1000.0);
        _EH_EL039 = (jets10.at(8)/1000.0);
        _EH_EL140 = (jets11.at(9)/1000.0);
        _EH_EL241 = (jets12.at(10)/1000.0);
        _EH_EL342 = (jets13.at(11)/1000.0);
        _EH_CBL043 = (jets14.at(12)/1000.0);
        _EH_CBL144 = (jets15.at(13)/1000.0);
        _EH_CVL245 = (jets16.at(14)/1000.0);
        _EH_TGL046 = (jets17.at(15)/1000.0);
        _EH_TGL147 = (jets18.at(16)/1000.0);
        _EH_TGL248 = (jets19.at(17)/1000.0);
        _EH_EBL049 = (jets20.at(18)/1000.0);
        _EH_EBL150 = (jets21.at(19)/1000.0);
        _EH_EBL251 = (jets22.at(20)/1000.0);
        _FC_L052 = (jets23.at(21)/1000.0);
        _FC_L153 = (jets24.at(22)/1000.0);
        _FC_L254 = (jets25.at(23)/1000.0);
        tree("analysis_tree55")->Fill();
    }
    _JetPt29 = (i_obj26->pt()/1000.0);
    }
}
return StatusCode::SUCCESS;
}
gordonwatts commented 5 years ago

From the above code you can see a few things wrong, but the one actual bug is that near the bottom _JetPt29 appears outside the tree fill. This makes sense - as that is the scope where the pt calc was done, so the code is behaving "correctly". However, in this case, we need it insde. We almost need a "greater than" so if the scope of the tree is deeper than the variable, then do the setting at the fill's scope. But if the scope of the variable is deeper than the tree, do it there (if we don't then the push-back's we've been doing won't work).

gordonwatts commented 5 years ago

We just needed something that would examine the depth fo the scope and make sure we are at least as deep as we need to be.