/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package org.jlab.groot.tree;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
 *
 * @author gavalian
 */
public class TreeSelector {
    
    Map  treeCuts = new LinkedHashMap();
    DynamicTree tree = new DynamicTree("Cuts");
    public DynamicTree getTree() {
		return tree;
	}

	public void setTree(DynamicTree tree) {
		this.tree = tree;
	}
	
    public TreeSelector(){
        
    }
    
    public void addCut(String name, String expression, List branches){
        treeCuts.put(name, new TreeCut(name,expression,branches));
        tree.addObject(name);
    }
    
    public void addCut(TreeCut cut){
        this.treeCuts.put(cut.getName(), cut);
        tree.addObject(cut.getName());
    }
    
    public TreeCut getCut(String cut){
        return treeCuts.get(cut);
    }
    
    public double isValid(Tree tree){
    	double weight = 1.0;
        for(Map.Entry entry : treeCuts.entrySet()){
            if(entry.getValue().isActive()==true){
               weight*=entry.getValue().isValid(tree);
            }
        }
        return weight;
    }
    
    public Map  getCuts(Tree tree){
        Map  cuts = new LinkedHashMap();
        for(Map.Entry entry : treeCuts.entrySet()){
            if(entry.getValue().isActive()==true){
                //if(entry.getValue().isValid(tree)==false){
                    cuts.put(entry.getKey(), entry.getValue().isValid(tree));
                //} else {
                //    cuts.put(entry.getKey(), 1);
                //}
            } else {
                cuts.put(entry.getKey(), 1.0);
            }
        }
        return cuts;
    }
    
    public Map  getSelectorCuts(){
        return this.treeCuts;
    }
    
    public void reset(){
        treeCuts.clear();
    }
}

 

Ads help maintain this website.