Exemplo n.º 1
0
        static void Main(string[] args)
        {
            WriteLine("Finding the files");
            var backgroundEvents = Files.GetJZ(2).Select(e => e.Data);
            //var signalHV125pi15Events = Files.Get125pi15();
            //var signalHV125pi40Events = Files.Get125pi40();
            var signalHV600pi100Events = Files.Get600pi150lt9m();
            //var signalGet200pi25lt5mEvents = Files.Get200pi25lt5m();

            //
            // Do a simple cut training here
            //

            var t = TrainingIQueriable(signalHV600pi100Events, true)
                .AsSignal("HV600pi100")
                .Background(TrainingIQueriable(backgroundEvents, false), "J2Z")
                .IgnoreVariables(p => p.lowestPtTrack);

            var mCuts = t.AddMethod(ROOTNET.Interface.NTMVA.NTypes.EMVA.kCuts, "SimpleCuts")
                .Option("!H:V:FitMethod=MC:EffSel:SampleSize=200000:VarTransform=Decorrelate")
                .ParameterOption(p => p.logR, "VarProp", "FSmart")
                .ParameterOption(p => p.nTracks, "VarProp", "FSmart")
                .ParameterOption(p => p.lowestPtTrack, "VarProp", "FSmart");

            var mMVA = t.AddMethod(ROOTNET.Interface.NTMVA.NTypes.EMVA.kBDT, "SimpleBDT")
                .Option("MaxDepth=3");

            t.Train("VerySimpleTraining");

            // Lets make a measurement of the efficiency for the standard cut.
            var effResults = new FutureTFile(Path.Combine(FileInfoUtilities.FindDirectoryWithFileMatching("*.sln").FullName,"trainingResults.root"));
            var stdCutVale = CalcEff(effResults.mkdir("std"), td => (td.logR > 1.2 && td.nTracks == 0) ? 1.0 : 0.0, 0.5, TrainingIQueriable(backgroundEvents, false), TrainingIQueriable(signalHV600pi100Events, true));

            // Next, do it with a reader

#if false
            var r = new ROOTNET.NTMVA.NReader();
            var s = new FileInfo("C:\\Users\\gordo\\Documents\\Code\\calratio2015\\JetCutStudies\\SimpleJetCutTraining\\bin\\x86\\Debug\\weights\\VerySimpleTraining_SimpleCuts.weights.xml");
            float[] logR = new float[2];
            float[] nTracks = new float[2];
            r.AddVariable("logR".AsTS(), logR);
            r.AddVariable("nTracks".AsTS(), nTracks);
            r.BookMVA("SimpleCuts".AsTS(), s.FullName.AsTS());
            Expression<Func<TrainingData, double>> simpleCutsReader = tv => TMVAReaders.TMVASelectorSimpleCutsTest(r, tv.logR, tv.lowestPtTrack, stdCutVale.Value);
#else
            Expression<Func<TrainingData, double>> simpleCutsReader = tv => TMVAReaders.TMVASelectorSimpleCuts(tv.logR, tv.nTracks, 0.72);
#endif
            var simpleCutValue = CalcEff(effResults.mkdir("SimpleCuts"), simpleCutsReader, 0.5, TrainingIQueriable(backgroundEvents, false), TrainingIQueriable(signalHV600pi100Events, true));

            // Next, we need to get the MVA and figure out the efficiency.
            Expression<Func<TrainingData, double>> simpleMVAReader = tv => TMVAReaders.TMVASelectorSimpleBDT(tv.logR, tv.nTracks);
            var simpleBDTValue = CalcEff(effResults.mkdir("SimpleBDT"), simpleMVAReader, 0.99999, TrainingIQueriable(backgroundEvents, false), TrainingIQueriable(signalHV600pi100Events, true));

            // Write out everything
            effResults.Write();
            effResults.Close();

            //Emit();
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            // Next, lets see if we can't createa  reader.
            var reader = new ROOTNET.NTMVA.NReader();

            // Declare the variables
            float[] nTracks = new float[1];
            float[] logR = new float[1];

            reader.AddVariable(new NTString("logR"), logR);
            reader.AddVariable(new NTString("nTracks"), nTracks);

            // Book it
            var s = "C:\\Users\\gordo\\Documents\\Code\\calratio2015\\JetCutStudies\\SimpleJetCutTraining\\bin\\x86\\Debug\\weights\\VerySimpleTraining_SimpleCuts.weights.xml";
            reader.BookMVA(new NTString("SimpleCuts"), new NTString(s));

            var f = NTFile.Open("junk.root", "RECREATE");
            reader.Write("myreader");
            f.Close();
#if false
            // Now get some values
            logR = 1.0;
            nTracks = 5;
            cout << "LogR: " << logR << " nTracks: " << nTracks << ": result=" << reader->EvaluateMVA("SimpleCuts", 0.22) << endl;

            logR = 2.0;
            nTracks = 00;
            cout << "LogR: " << logR << " nTracks: " << nTracks << ": result=" << reader->EvaluateMVA("SimpleCuts", 0.22) << endl;

            vector<double> stuff;
            stuff.push_back(1.0);
            stuff.push_back(5);
            cout << "result=" << reader->EvaluateMVA(stuff, "SimpleCuts", 0.22) << endl;
            stuff.clear();
            stuff.push_back(2.0);
            stuff.push_back(0);
            cout << "result=" << reader->EvaluateMVA(stuff, "SimpleCuts", 0.22) << endl;


            return 0;
#endif
        }