void splitStopSamples(){

  char* path = "/tas/cms2/stop/MiniBabies/V00-02-s18b20__V00-03-01__BDT007__4jetsMET100MT150_all";

  //-------------------------------------
  // declare input file, tree, etc.
  //-------------------------------------

  //char* infilename = Form("%s/T2tt_*.root" , path);
  //char* infilename = Form("%s/T2bw_*75.root" , path);
  //char* infilename = Form("%s/T2bw_*50.root" , path);
  char* infilename = Form("%s/T2bw_*25.root" , path);
  long long max_tree_size = 20000000000000000LL;
  TTree::SetMaxTreeSize(max_tree_size);

  TChain *chain = new TChain("t");
  chain->Add(infilename);

  //-------------------------------------
  // which grid points to skim?
  //-------------------------------------
  
  vector<string> filenames;
  vector<int> mg;
  vector<int> ml;

  // mg.push_back(350);   ml.push_back(100);
  // mg.push_back(450);   ml.push_back(100);
  // mg.push_back(250);   ml.push_back(75);
  // mg.push_back(250);   ml.push_back(100);
  // mg.push_back(400);   ml.push_back(150);
  // mg.push_back(500);   ml.push_back(100);
  // mg.push_back(600);   ml.push_back(0);
  // mg.push_back(550);   ml.push_back(0);
  // mg.push_back(650);   ml.push_back(50);
  // mg.push_back(750);   ml.push_back(100);
  // mg.push_back(500);   ml.push_back(100);
  // mg.push_back(600);   ml.push_back(200);
  // mg.push_back(650);   ml.push_back(250);
  // mg.push_back(75000);   ml.push_back(100);
  // mg.push_back(350);   ml.push_back(50);
  // mg.push_back(450);   ml.push_back(50);
  // mg.push_back(500);   ml.push_back(50);
  // mg.push_back(400);   ml.push_back(50);

  // T2bw 75 R1
  // mg.push_back(350);   ml.push_back(125);
  // mg.push_back(350);   ml.push_back(175);
  // mg.push_back(400);   ml.push_back(175);

  // T2bw 75 R2
  // mg.push_back(425);   ml.push_back(75);
  // mg.push_back(450);   ml.push_back(100);
  // mg.push_back(500);   ml.push_back(125);

  // T2bw 75 R3
  // mg.push_back(500);   ml.push_back(0);
  // mg.push_back(550);   ml.push_back(0);
  // mg.push_back(525);   ml.push_back(75);

  // T2bw 75 R4
  // mg.push_back(150);      ml.push_back(0);
  // mg.push_back(200);      ml.push_back(0);
  // mg.push_back(200);      ml.push_back(50);

  // T2bw 50 R1
  // mg.push_back(225);      ml.push_back(0);
  // mg.push_back(275);      ml.push_back(50);
  // mg.push_back(325);      ml.push_back(100);

  // T2bw 50 R2
  // mg.push_back(350);      ml.push_back(0);
  // mg.push_back(375);      ml.push_back(50);
  // mg.push_back(400);      ml.push_back(100);

  // T2bw 50 R3
  // mg.push_back(450);      ml.push_back(0);
  // mg.push_back(500);      ml.push_back(50);
  // mg.push_back(550);      ml.push_back(100);

  // T2bw 25 R2
  // mg.push_back(400);      ml.push_back(0);
  // mg.push_back(500);      ml.push_back(100);
  // mg.push_back(600);      ml.push_back(200);

  // T2bw 25 R3
  mg.push_back(500);      ml.push_back(0);
  mg.push_back(550);      ml.push_back(50);
  mg.push_back(600);      ml.push_back(100);

  // cut-and-count T2tt
  // mg.push_back(600);   ml.push_back(25);
  // mg.push_back(500);   ml.push_back(200);
  // mg.push_back(300);   ml.push_back(100);

  // R4
  // mg.push_back(200);   ml.push_back(100);
  // mg.push_back(300);   ml.push_back(200);
  // mg.push_back(400);   ml.push_back(300);

  // R4
  // mg.push_back(550);   ml.push_back(25);
  // mg.push_back(650);   ml.push_back(50);
  // mg.push_back(750);   ml.push_back(100);

  // R3
  // mg.push_back(500);   ml.push_back(100);
  // mg.push_back(600);   ml.push_back(200);
  // mg.push_back(650);   ml.push_back(250);

  // R2
  // mg.push_back(350);   ml.push_back(75);
  // mg.push_back(400);   ml.push_back(125);
  // mg.push_back(450);   ml.push_back(175);

  // R1
  //mg.push_back(250);   ml.push_back(25);
  //mg.push_back(300);   ml.push_back(25);
  //mg.push_back(300);   ml.push_back(75);

  const unsigned int npoints = mg.size();

  //-------------------------------------
  // skim grid points
  //-------------------------------------

  TFile *file[npoints];
  TTree *tree[npoints];

  TChain* pretest = new TChain("t");
  TChain* posttest = new TChain("t");

  for( unsigned int i = 0 ; i < npoints ; ++i ){

    //char* filename = Form("%s/T2ttPoint_%i_%i.root",path,mg.at(i),ml.at(i));
    //char* filename = Form("%s/T2bw75Point_%i_%i.root",path,mg.at(i),ml.at(i));
    //char* filename = Form("%s/T2bw50Point_%i_%i.root",path,mg.at(i),ml.at(i));
    char* filename = Form("%s/T2bw25Point_%i_%i.root",path,mg.at(i),ml.at(i));

    TCut cut(Form("mg==%i && ml==%i",mg.at(i),ml.at(i)));

    cout << endl;
    cout << "Skimming input file  : " << infilename << endl;
    cout << "Using selection      : " << cut.GetTitle() << endl;
    cout << "Skim filename        : " << filename << endl;


    file[i] = TFile::Open(filename, "RECREATE");
    assert( file[i] != 0 );
    tree[i] = chain->CopyTree( cut );

    tree[i]->Write();
    file[i]->Close();

    pretest->Add(infilename);
    posttest->Add(filename);
    
    cout << "Pre  total           : " << pretest->GetEntries() << endl;
    cout << "Pre  skim            : " << pretest->GetEntries(cut) << endl;
    cout << "Post total           : " << posttest->GetEntries() << endl;
    cout << "Post skim            : " << posttest->GetEntries(cut) << endl;

    pretest->Reset();
    posttest->Reset();


  }

}
void Trigger_TurnOn_data_MC_muon(){
gROOT->SetBatch();
gStyle->SetPadGridX(1);
gStyle->SetPadGridY(1);
gStyle->SetOptStat(0);
gStyle->SetLineWidth(2);
gROOT->ForceStyle();

TChain* tree = new TChain("tree");

TCanvas* c1 = new TCanvas("c1","c1",1280,768);

//const char* preselection = "HLT_BIT_HLT_IsoMu20_v && json && max(Max$(vLeptons_pt),Max$(aLeptons_pt))<60 && max(Max$(vLeptons_pt),Max$(aLeptons_pt))>30 && Flag_hbheFilterNew &&Flag_hbheIsoFilter && Flag_goodVertices &&Flag_eeBadScFilter &&Flag_CSCTightHaloFilter && MinIf$(abs(TVector2::Phi_mpi_pi(Jet_phi-met_phi)),Jet_pt>30 && Jet_eta<5.2)>0.5 ";
//const char* preselection_data = preselection;
const char* preselection = "HLT_BIT_HLT_IsoMu20_v         && json && max(Max$(vLeptons_pt),Max$(aLeptons_pt))<60 && max(Max$(vLeptons_pt),Max$(aLeptons_pt))>30 && Flag_hbheFilterNew &&Flag_hbheIsoFilter && Flag_goodVertices &&Flag_eeBadScFilter &&Flag_CSCTightHaloFilter && MinIf$(abs(TVector2::Phi_mpi_pi(Jet_phi-met_phi)),Jet_pt>30 && Jet_eta<5.2)>0.5 ";
const char* preselection_data = "HLT_BIT_HLT_IsoMu20_v && json && max(Max$(vLeptons_pt),Max$(aLeptons_pt))<60 && max(Max$(vLeptons_pt),Max$(aLeptons_pt))>30 && Flag_hbheFilterNew &&Flag_hbheIsoFilter && Flag_goodVertices &&Flag_eeBadScFilter &&Flag_CSCTightHaloFilter && MinIf$(abs(TVector2::Phi_mpi_pi(Jet_phi-met_phi)),Jet_pt>30 && Jet_eta<5.2)>0.5 ";

tree->Reset();
//tree->Add("../../env/ZvvHighPt_V14_SingleElectron.root");
tree->Add("/gpfs/ddn/srm/cms/store/user/arizzi/VHBBHeppyV15/SingleMuon/VHBB_HEPPY_V15_SingleMuon__Run2015D-05Oct2015-v1/151027_145808/0000/tree_**.root");
//tree->Add("../../env/ZvvHighPt_V14_SingleMuon.root");
//tree->Add("/gpfs/ddn/srm/cms/store/user/arizzi/VHBBHeppyV15/SingleMuon/VHBB_HEPPY_V15_SingleMuon__Run2015D-05Oct2015-v1/151027_145808/0000/tree_99*");
tree->Draw("HLT_BIT_HLT_PFMET90_PFMHT90_IDTight_v :min(met_pt,mhtJet30) >> PFMET90_data(100,0,400)",preselection_data,"prof");
PFMET90_data = (TProfile*) gDirectory->Get("PFMET90_data");

tree->Reset();
//tree->Add("../../env/ZvvHighPt_V14_WJetsToLNu_HT-100To200_TuneCUETP8M1_13TeV-madgraphMLM-pythia8.root");
tree->Add("/gpfs/ddn/srm/cms/store/user/arizzi/VHBBHeppyV14/WJetsToLNu_HT-100To200_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/VHBB_HEPPY_V14_WJetsToLNu_HT-100To200_TuneCUETP8M1_13TeV-madgraphMLM-pythia8__RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2-v1/151024_220138/0000/tree_**.root");
//tree->Add("/gpfs/ddn/srm/cms/store/user/arizzi/VHBBHeppyV14/WJetsToLNu_HT-200To400_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/VHBB_HEPPY_V14_WJetsToLNu_HT-200To400_TuneCUETP8M1_13TeV-madgraphMLM-pythia8__RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2-v1/151024_220559/0000/tree_1*");
tree->Draw("HLT_BIT_HLT_PFMET90_PFMHT90_IDLoose_v :min(met_pt,mhtJet30) >> PFMET90_WjetsHT100(100,0,400)",preselection,"prof");
PFMET90_WjetsHT100 = (TProfile*) gDirectory->Get("PFMET90_WjetsHT100");

tree->Reset();
tree->Add("/gpfs/ddn/srm/cms/store/user/arizzi/VHBBHeppyV14/WJetsToLNu_HT-200To400_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/VHBB_HEPPY_V14_WJetsToLNu_HT-200To400_TuneCUETP8M1_13TeV-madgraphMLM-pythia8__RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2-v1/151024_220559/0000/tree_**.root");
//tree->Add("/gpfs/ddn/srm/cms/store/user/arizzi/VHBBHeppyV14/TT_TuneCUETP8M1_13TeV-powheg-pythia8/VHBB_HEPPY_V14_TT_TuneCUETP8M1_13TeV-powheg-pythia8__RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2-v1/151024_212301/0000/tree_99*");
tree->Draw("HLT_BIT_HLT_PFMET90_PFMHT90_IDLoose_v :min(met_pt,mhtJet30) >> PFMET90_WjetsHT200(100,0,400)",preselection,"prof");
PFMET90_WjetsHT200 = (TProfile*) gDirectory->Get("PFMET90_WjetsHT200");

tree->Reset();
//tree->Add("../../env/ZvvHighPt_V14_WH_HToBB_WToLNu_M125_13TeV_amcatnloFXFX_madspin_pythia8.root");
tree->Add("/gpfs/ddn/srm/cms/store/user/arizzi/VHBBHeppyV14/WJetsToLNu_HT-400To600_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/VHBB_HEPPY_V14_WJetsToLNu_HT-400To600_TuneCUETP8M1_13TeV-madgraphMLM-pythia8__RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2-v1/151025_084451/0000/tree_**.root");

//tree->Add("/gpfs/ddn/srm/cms/store/user/arizzi/VHBBHeppyV14/WH_HToBB_WToLNu_M125_13TeV_amcatnloFXFX_madspin_pythia8/VHBB_HEPPY_V14_WH_HToBB_WToLNu_M125_13TeV_amcatnloFXFX_madspin_pythia8__RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2-v1/151024_220043/0000/tree_**");
tree->Draw("HLT_BIT_HLT_PFMET90_PFMHT90_IDLoose_v :min(met_pt,mhtJet30) >> PFMET90_WjetsHT400(100,0,400)",preselection,"prof");
PFMET90_WjetsHT400 = (TProfile*) gDirectory->Get("PFMET90_WjetsHT400");



PFMET90_data->SetLineWidth(2);
PFMET90_WjetsHT100->SetLineWidth(2);
PFMET90_WjetsHT200->SetLineWidth(2);
PFMET90_WjetsHT400->SetLineWidth(2);


PFMET90_data->SetLineColor(kBlack);
PFMET90_WjetsHT100->SetLineColor(kRed);
PFMET90_WjetsHT200->SetLineColor(kBlue);
PFMET90_WjetsHT400->SetLineColor(kGreen);

maxim = max(max(PFMET90_data->GetMaximum(),PFMET90_WjetsHT200->GetMaximum()),max(PFMET90_WjetsHT100->GetMaximum(),PFMET90_WjetsHT400->GetMaximum()));

PFMET90_data->SetMaximum(maxim*1.1);
PFMET90_data->SetTitle("Trigger efficiency");
PFMET90_data->GetXaxis()->SetTitle("min(MET,MHT) [GeV]");
PFMET90_data->GetYaxis()->SetTitle("Efficiency");


PFMET90_data->Draw("");
PFMET90_WjetsHT100->Draw("same");
PFMET90_WjetsHT200->Draw("same");
PFMET90_WjetsHT400->Draw("same");

TLegend* leg = new TLegend(0.45,0.1,0.9,0.3);
//leg->SetHeader("The Legend Title");
leg->AddEntry(PFMET90_data,"HLT_PFMET90_PFMHT90 in data","l");
leg->AddEntry(PFMET90_WjetsHT100,"HLT_PFMET90_PFMHT90 in WjetsHT100","l");
leg->AddEntry(PFMET90_WjetsHT200,"HLT_PFMET90_PFMHT90 in WjetsHT200","l");
leg->AddEntry(PFMET90_WjetsHT400,"HLT_PFMET90_PFMHT90 in WjetsHT400","l");
leg->Draw();

//const char* function = "  [2]/(1+exp(-[1]*(x-[0])))  ";
const char* function_string = "  (0.5+0.5*erf( (x-[0])*(x-[0]>[5])/[1] + (x-[0])*(x-[0]<[5])/[2] + [5]*(1/[1]-1/[2])*(x-[0]<[5]) ))*[4]+[3]  ";

TF1* turnon1 = new TF1("turnon1",function_string);
turnon1->SetParameters(110,35,35,0,1,0);
TF1* turnon2 = (TF1*) turnon1->Clone("turnon1");
TF1* turnon3 = (TF1*) turnon1->Clone("turnon1");
TF1* turnon4 = (TF1*) turnon1->Clone("turnon1");

turnon1->SetLineColor(PFMET90_data->GetLineColor());
turnon2->SetLineColor(PFMET90_WjetsHT100->GetLineColor());
turnon3->SetLineColor(PFMET90_WjetsHT200->GetLineColor());
turnon4->SetLineColor(PFMET90_WjetsHT400->GetLineColor());

PFMET90_data->Fit(turnon1);
PFMET90_WjetsHT100->Fit(turnon2);
PFMET90_WjetsHT200->Fit(turnon3);
PFMET90_WjetsHT400->Fit(turnon4);

turnon1->SetRange(turnon1->GetParameter(1)-turnon1->GetParameter(2),turnon1->GetParameter(1)+turnon1->GetParameter(3));
turnon2->SetRange(turnon2->GetParameter(1)-turnon2->GetParameter(2),turnon2->GetParameter(1)+turnon2->GetParameter(3));
turnon3->SetRange(turnon3->GetParameter(1)-turnon3->GetParameter(2),turnon3->GetParameter(1)+turnon3->GetParameter(3));
turnon4->SetRange(turnon4->GetParameter(1)-turnon4->GetParameter(2),turnon4->GetParameter(1)+turnon4->GetParameter(3));
const float sigmap = 2;
const float sigmam = 1;

cout<<endl<< "Fitting PFMET90_data"<<endl;
PFMET90_data->Fit(turnon1,"","",sigmam*turnon1->GetParameter(1)-turnon1->GetParameter(2),turnon1->GetParameter(1)+sigmap*turnon1->GetParameter(2));
cout<<endl<< "Fitting PFMET90_WjetsHT100"<<endl;
PFMET90_WjetsHT100->Fit(turnon2,"","",sigmam*turnon2->GetParameter(1)-turnon2->GetParameter(2),turnon2->GetParameter(1)+sigmap*turnon2->GetParameter(2));
cout<<endl<< "Fitting PFMET90_WjetsHT200"<<endl;
PFMET90_WjetsHT200->Fit(turnon3,"","",sigmam*turnon3->GetParameter(1)-turnon3->GetParameter(2),turnon3->GetParameter(1)+sigmap*turnon3->GetParameter(2));
cout<<endl<< "Fitting PFMET90_WjetsHT400"<<endl;
PFMET90_WjetsHT400->Fit(turnon4,"","",sigmam*turnon4->GetParameter(1)-turnon4->GetParameter(2),turnon4->GetParameter(1)+sigmap*turnon4->GetParameter(2));

c1->SaveAs("trigger_turnon_data_MC_muon.png");
c1->SaveAs("trigger_turnon_data_MC_muon.C");
}