void DrawComparisonXSecSyst(void){
  struct STestFunctor {
    bool operator()(TObject *aObj) {
      cout<<aObj->GetTitle()<<endl;
      //cout<<"pippo"<<endl;
      //comparisonJetMCData(aObj->GetTitle,1);
      return true;
    }
  };


  treeBKG_->Branch("bckg_leadingJetPt",&bckg_leadingJetPt);
  treeBKG_->Branch("bckg_2leadingJetPt",&bckg_2leadingJetPt);
  treeBKG_->Branch("bckg_3leadingJetPt",&bckg_3leadingJetPt);
  treeBKG_->Branch("bckg_4leadingJetPt",&bckg_4leadingJetPt);
  treeBKG_->Branch("bckg_JetMultiplicity",&bckg_JetMultiplicity);

  gROOT->Reset();
  gROOT->ForceStyle();
  gROOT->LoadMacro("tdrStyle.C++");
  tdrStyle();

  // Recupero l'informazione sul numero di eventi processati per singolo MC
  dataNumEvents = numEventsPerStep(datafile, "demo"); 
  zNumEvents = numEventsPerStep(mcfile, "demo"); 
  ttNumEvents = numEventsPerStep(back_ttbar, "demo"); 
  wNumEvents = numEventsPerStep(back_w, "demo"); 
  wzEvents = numEventsPerStep(WZ, "demo"); 
  zzEvents = numEventsPerStep(ZZ, "demo"); 
  wwEvents = numEventsPerStep(WW, "demo"); 
  // ---------------------------------------------------

  string direc="/gpfs/cms/data/2011/Observables/";
  //string direc=plotpath;

  if (isAngularAnalysis){
    mcfile=direc+"MC_zjets"+version;
    back_w=direc+"MC_wjets"+version;
    back_ttbar=direc+"MC_ttbar"+version;
    WW=direc+"MC_diW"+version;
    ZZ=direc+"MC_siZ"+version;
    WZ=direc+"MC_diWZ"+version;
    datafile=direc+"DATA"+version;
  }

  TFile *mcf = TFile::Open(mcfile.c_str()); //MC file
  mcf->cd("validationJEC/");
  TDirectory *dir=gDirectory;
  TList *mylist=(TList*)dir->GetListOfKeys();
  TIter iter(mylist);	
  // Use TIter::Next() to get each TObject mom owns.
  TObject* tobj = 0;
  string tmpname;
  // input and output files
  string FileName(outfilename);
  //FileName +=  ".root";
  OutputFile =  TFile::Open(FileName.c_str() , "RECREATE" ) ;

  int i=0; // solo di servizio quando debuggo...
  while ( (tobj = iter.Next()) ) {
    
    gROOT->Reset();
    gROOT->ForceStyle();
    tdrStyle();
    gStyle->SetPadRightMargin(0.15);

    string name=tobj->GetName();
    TString temp = (TString)name;
    
    //int num=tobj->GetUniqueID();

    if(temp.Contains("weight")){
      mcf = TFile::Open(mcfile.c_str()); 
      TFile *ttbarf = TFile::Open(back_ttbar.c_str()); 
      TFile *wf = TFile::Open(back_w.c_str());
      TFile *wzf = TFile::Open(WZ.c_str());
      TFile *zzf = TFile::Open(ZZ.c_str());
      TFile *wwf = TFile::Open(WW.c_str());

      TCanvas * Canvweight = new TCanvas("Canvweight","Canvweight",0,0,800,600);
      //if (Canv) delete Canv;
      //Canv = new TCanvas("Canv","Canv",0,0,800,600);

      gPad->SetLogy(1);
	
      //---- weights
      mcf->cd("validationJEC");
      TH1F* mc;
      gDirectory->GetObject(name.c_str(),mc);
      if(mc){
	mc->SetFillColor(kRed);
	mc->GetXaxis()->SetRangeUser(0.,12.);
	mc->SetMinimum(1.);
	mc->Draw();
	zwemean = mc->GetMean();
	tmpname=plotpath+name+"-zjets.png";
	Canvweight->Print(tmpname.c_str());
      }

      //---- weights
      ttbarf->cd("validationJEC");
      TH1F* ttbar;
      gDirectory->GetObject(name.c_str(),ttbar);
	
      if(ttbar){
	ttbar->SetFillColor(kBlue);
	ttbar->GetXaxis()->SetRangeUser(0.,2.);
	ttbar->Draw();
	ttwemean = ttbar->GetMean();
	tmpname=plotpath+name+"-ttbar.png";
	Canvweight->Print(tmpname.c_str());
      }

      //---- weights
      wf->cd("validationJEC");
      TH1F* w;
      gDirectory->GetObject(name.c_str(),w);
      if(w){
	w->SetFillColor(kViolet+2);
	w->GetXaxis()->SetRangeUser(0.,2.);
	w->Draw();
	wwemean = w->GetMean();
	tmpname=plotpath+name+"-wjets.png";
	Canvweight->Print(tmpname.c_str());
      }

      //---- weights
      wzf->cd("validationJEC");
      TH1F* wz;
      gDirectory->GetObject(name.c_str(),wz);
      if(wz){
	wz->SetFillColor(kYellow+2);
	wz->GetXaxis()->SetRangeUser(0.,2.);
	wz->Draw();
	wzwemean = w->GetMean();
	tmpname=plotpath+name+"-wzjets.png";
	Canvweight->Print(tmpname.c_str());
      }	

      //---- weights
      zzf->cd("validationJEC");
      TH1F* zz;
      gDirectory->GetObject(name.c_str(),zz);
      if(zz){
	zz->SetFillColor(kOrange+2);
	zz->GetXaxis()->SetRangeUser(0.,2.);
	zz->Draw();
	zzwemean = w->GetMean();
	tmpname=plotpath+name+"-zzjets.png";
	Canvweight->Print(tmpname.c_str());
      }

      //---- weights
      wwf->cd("validationJEC");
      TH1F* www;
      gDirectory->GetObject(name.c_str(),www);
      if(www){
	www->SetFillColor(kBlack);
	www->GetXaxis()->SetRangeUser(0.,2.);
	www->Draw();
	wwwemean = www->GetMean();
	tmpname=plotpath+name+"-wwwjets.png";
	Canvweight->Print(tmpname.c_str());
      }		
    }
    else comparisonJetMCData(name,1);

    i++;
    //if(i==4)break;
  }


  // AVVISI AI NAVIGANTI
  //if(dataNumEvents<0.) cout << "ATTENZIONE: HAI FALLITO LA NORMALIZZAZIONE DEI DATI, quindi ho normalizzato sugli eventi totali del campione\n";
  //else cout << "Il numero di eventi (dati) " << dataNumEvents << "\n";
	
  if(zNumEvents<0.) cout << "ATTENZIONE: HAI FALLITO LA NORMALIZZAZIONE DELLO Z+JETS, quindi ho normalizzato sugli eventi totali del campione\n";
  else cout << "Il numero di eventi di Z+jets " << zNumEvents << "\n";
	
  if(ttNumEvents<0.) cout << "ATTENZIONE: HAI FALLITO LA NORMALIZZAZIONE DEL TTBAR+JETS, quindi ho normalizzato sugli eventi totali del campione\n";
  else cout << "Il numero di eventi di ttbar+jets " << ttNumEvents << "\n";
	
	
  if(wNumEvents<0.) cout << "ATTENZIONE: HAI FALLITO LA NORMALIZZAZIONE DEL W+JETS, quindi ho normalizzato sugli eventi totali del campione\n";
  else cout << "Il numero di eventi di W+jets " << wNumEvents << "\n";

  if(wzEvents<0.) cout << "ATTENZIONE: HAI FALLITO LA NORMALIZZAZIONE DEL W+JETS, quindi ho normalizzato sugli eventi totali del campione\n";
  else cout << "Il numero di eventi di ZW+jets " << wzEvents << "\n";

  if(zzEvents<0.) cout << "ATTENZIONE: HAI FALLITO LA NORMALIZZAZIONE DEL W+JETS, quindi ho normalizzato sugli eventi totali del campione\n";
  else cout << "Il numero di eventi di ZZ+jets " << zzEvents << "\n";	

  if(wwEvents<0.) cout << "ATTENZIONE: HAI FALLITO LA NORMALIZZAZIONE DEL W+JETS, quindi ho normalizzato sugli eventi totali del campione\n";
  else cout << "Il numero di eventi di WW+jets " << wwEvents << "\n";

  OutputFile->Close();

  return;
}