Exemple #1
0
 inline Line_t transform(const Line_t &ln) const
 {
   Vectors::Point2DCont pf=transform( ln.getFrom() );  // tansform point
   Vectors::Point2DCont pt=transform( ln.getTo()   );  // ...
   Line_t lOut(pf, pt);                                // make dest. line
   return lOut;                                        // return result
 };
int makeMuonTxtFiles(){//main

  TFile *muIdIso_ = new TFile("Muon_ID_iso_Efficiencies_Run_2012ABCD_53X.root");

  TGraphAsymmErrors *hist_muon[4][3][3];
 
  hist_muon[0][0][0] = (TGraphAsymmErrors*)gDirectory->Get("DATA_Loose_pt_abseta<0.9_2012ABCD");
  hist_muon[0][0][1] = (TGraphAsymmErrors*)gDirectory->Get("MC_Loose_pt_abseta<0.9_2012ABCD");
  hist_muon[0][0][2] = (TGraphAsymmErrors*)gDirectory->Get("DATA_over_MC_Loose_pt_abseta<0.9_2012ABCD");
  hist_muon[0][1][0] = (TGraphAsymmErrors*)gDirectory->Get("DATA_Loose_pt_abseta0.9-1.2_2012ABCD");
  hist_muon[0][1][1] = (TGraphAsymmErrors*)gDirectory->Get("MC_Loose_pt_abseta0.9-1.2_2012ABCD");
  hist_muon[0][1][2] = (TGraphAsymmErrors*)gDirectory->Get("DATA_over_MC_Loose_pt_abseta0.9-1.2_2012ABCD");
  hist_muon[0][2][0] = (TGraphAsymmErrors*)gDirectory->Get("DATA_Loose_pt_abseta1.2-2.1_2012ABCD");
  hist_muon[0][2][1] = (TGraphAsymmErrors*)gDirectory->Get("MC_Loose_pt_abseta1.2-2.1_2012ABCD");
  hist_muon[0][2][2] = (TGraphAsymmErrors*)gDirectory->Get("DATA_over_MC_Loose_pt_abseta1.2-2.1_2012ABCD");

  hist_muon[1][0][0] = (TGraphAsymmErrors*)gDirectory->Get("DATA_Tight_pt_abseta<0.9_2012ABCD");
  hist_muon[1][0][1] = (TGraphAsymmErrors*)gDirectory->Get("MC_Tight_pt_abseta<0.9_2012ABCD");
  hist_muon[1][0][2] = (TGraphAsymmErrors*)gDirectory->Get("DATA_over_MC_Tight_pt_abseta<0.9_2012ABCD");
  hist_muon[1][1][0] = (TGraphAsymmErrors*)gDirectory->Get("DATA_Tight_pt_abseta0.9-1.2_2012ABCD");
  hist_muon[1][1][1] = (TGraphAsymmErrors*)gDirectory->Get("MC_Tight_pt_abseta0.9-1.2_2012ABCD");
  hist_muon[1][1][2] = (TGraphAsymmErrors*)gDirectory->Get("DATA_over_MC_Tight_pt_abseta0.9-1.2_2012ABCD");
  hist_muon[1][2][0] = (TGraphAsymmErrors*)gDirectory->Get("DATA_Tight_pt_abseta1.2-2.1_2012ABCD");
  hist_muon[1][2][1] = (TGraphAsymmErrors*)gDirectory->Get("MC_Tight_pt_abseta1.2-2.1_2012ABCD");
  hist_muon[1][2][2] = (TGraphAsymmErrors*)gDirectory->Get("DATA_over_MC_Tight_pt_abseta1.2-2.1_2012ABCD");
  
  hist_muon[2][0][0] = (TGraphAsymmErrors*)gDirectory->Get("DATA_combRelIsoPF04dBeta<02_Tight_pt_abseta<0.9_2012ABCD");
  hist_muon[2][0][1] = (TGraphAsymmErrors*)gDirectory->Get("MC_combRelIsoPF04dBeta<02_Tight_pt_abseta<0.9_2012ABCD");
  hist_muon[2][0][2] = (TGraphAsymmErrors*)gDirectory->Get("DATA_over_MC_combRelIsoPF04dBeta<02_Tight_pt_abseta<0.9_2012ABCD");
  hist_muon[2][1][0] = (TGraphAsymmErrors*)gDirectory->Get("DATA_combRelIsoPF04dBeta<02_Tight_pt_abseta0.9-1.2_2012ABCD");
  hist_muon[2][1][1] = (TGraphAsymmErrors*)gDirectory->Get("MC_combRelIsoPF04dBeta<02_Tight_pt_abseta0.9-1.2_2012ABCD");
  hist_muon[2][1][2] = (TGraphAsymmErrors*)gDirectory->Get("DATA_over_MC_combRelIsoPF04dBeta<02_Tight_pt_abseta0.9-1.2_2012ABCD");
  hist_muon[2][2][0] = (TGraphAsymmErrors*)gDirectory->Get("DATA_combRelIsoPF04dBeta<02_Tight_pt_abseta1.2-2.1_2012ABCD");
  hist_muon[2][2][1] = (TGraphAsymmErrors*)gDirectory->Get("MC_combRelIsoPF04dBeta<02_Tight_pt_abseta1.2-2.1_2012ABCD");
  hist_muon[2][2][2] = (TGraphAsymmErrors*)gDirectory->Get("DATA_over_MC_combRelIsoPF04dBeta<02_Tight_pt_abseta1.2-2.1_2012ABCD");

  hist_muon[3][0][0] = (TGraphAsymmErrors*)gDirectory->Get("DATA_combRelIsoPF04dBeta<012_Tight_pt_abseta<0.9_2012ABCD");
  hist_muon[3][0][1] = (TGraphAsymmErrors*)gDirectory->Get("MC_combRelIsoPF04dBeta<012_Tight_pt_abseta<0.9_2012ABCD");
  hist_muon[3][0][2] = (TGraphAsymmErrors*)gDirectory->Get("DATA_over_MC_combRelIsoPF04dBeta<012_Tight_pt_abseta<0.9_2012ABCD");
  hist_muon[3][1][0] = (TGraphAsymmErrors*)gDirectory->Get("DATA_combRelIsoPF04dBeta<012_Tight_pt_abseta0.9-1.2_2012ABCD");
  hist_muon[3][1][1] = (TGraphAsymmErrors*)gDirectory->Get("MC_combRelIsoPF04dBeta<012_Tight_pt_abseta0.9-1.2_2012ABCD");
  hist_muon[3][1][2] = (TGraphAsymmErrors*)gDirectory->Get("DATA_over_MC_combRelIsoPF04dBeta<012_Tight_pt_abseta0.9-1.2_2012ABCD");
  hist_muon[3][2][0] = (TGraphAsymmErrors*)gDirectory->Get("DATA_combRelIsoPF04dBeta<012_Tight_pt_abseta1.2-2.1_2012ABCD");
  hist_muon[3][2][1] = (TGraphAsymmErrors*)gDirectory->Get("MC_combRelIsoPF04dBeta<012_Tight_pt_abseta1.2-2.1_2012ABCD");
  hist_muon[3][2][2] = (TGraphAsymmErrors*)gDirectory->Get("DATA_over_MC_combRelIsoPF04dBeta<012_Tight_pt_abseta1.2-2.1_2012ABCD");

  double etaMin[3] = {0,0.9,1.2};
  double etaMax[3] = {0.9,1.2,2.1};

  std::string lFileName[4] = {"mu_loose_id","mu_tight_id","mu_loose_iso","mu_tight_iso"};
  std::string lDataType[3] = {"data_eff","mc_eff","SF"};
  
  std::ostringstream lName;
  
  for (unsigned iWP(0);iWP<4;++iWP){//loop on WP
    
    for (unsigned iData(0);iData<3;++iData){//loop on data type: data, MC, SF
      lName.str("");
      lName << lFileName[iWP] << "_" << lDataType[iData] << ".txt";
      std::ofstream lOut(lName.str().c_str());
      
      for (unsigned iEta(0); iEta<3; ++iEta){//loop on eta bin
	
	const unsigned nBins = hist_muon[iWP][iEta][iData]->GetN();
	for (unsigned iPt(0); iPt<nBins; ++iPt){//loop on pT bins
	  double x = 0;
	  double y = 0;
	  hist_muon[iWP][iEta][iData]->GetPoint(iPt,x,y);
	  double xMax = x+hist_muon[iWP][iEta][iData]->GetErrorXhigh(iPt);
	  double xMin = x-hist_muon[iWP][iEta][iData]->GetErrorXlow(iPt);
	  double yErrPlus = hist_muon[iWP][iEta][iData]->GetErrorYhigh(iPt);
	  double yErrMinus = hist_muon[iWP][iEta][iData]->GetErrorYlow(iPt);
	  
	  lOut << xMin << " " << xMax << " " << etaMin[iEta] << " " << etaMax[iEta] << " " << y << " " << yErrMinus << " " << yErrPlus << std::endl;
	}//loop on pT bins
	
      }//loop on eta bin
      
      lOut.close();
    }//loop on data type
    
  }//loop on WP
  
  
  return 1;
}//
int ConvertIm_main(int argc,char ** argv)
{
    MMD_InitArgcArgv(argc,argv);
    Tiff_Im::SetDefTileFile(1000000);


    std::string aNameIn ;

    INT aReducX=0;
    INT aReducY=0;
    INT aReducXY=0;
    INT aVisu=0;
    GenIm::type_el aTypeOut ;
    std::string aNameTypeOut ="";

    Tiff_Im::PH_INTER_TYPE aPhInterpOut ;
    std::string aNamePITOut ="";
    std::string PITOut[] = {"RGB","BW"};
    std::list<std::string> lOut(PITOut, PITOut + sizeof(PITOut) / sizeof(std::string) );

    std::string aNameOut;
    std::string anExt;

    Pt2di aP0(0,0);

    Pt2di aSzOut ;
    Pt2di aSzTF(-1,-1);

    REAL aDyn=1.0;

    Pt2di aSzTileInterne(-1,-1);
    int aKCh = -1;


    std::vector<int> aVPermut;
    int aNoTile = 0;
    std::string aF2 ="";


    ElInitArgMain
    (
    argc,argv,
                LArgMain()  << EAMC(aNameIn, "Image", eSAM_IsExistFile),
    LArgMain()  << EAM(aNameOut,"Out",true)
                << EAM(anExt,"Ext",true)
                    << EAM(aSzOut,"SzOut",true, "Size out", eSAM_NoInit)
                    << EAM(aP0,"P0",true)
                    << EAM(aNameTypeOut,"Type",true, "TypeMNT", eSAM_None, ListOfVal(GenIm::bits1_msbf, ""))
                    << EAM(aNamePITOut,"Col",true, "Col", eSAM_None,lOut)
                    << EAM(aReducXY,"ReducXY",true)
                    << EAM(aReducX,"ReducX",true)
                    << EAM(aReducY,"ReducY",true)
                    << EAM(aVisu,"Visu",true)
                    << EAM(aSzTF,"SzTifTile",true)
                    << EAM(aSzTileInterne,"SzTileInterne",true)
                    << EAM(aDyn,"Dyn",true)
                    << EAM(aKCh,"KCh",true)
                    << EAM(aNoTile,"NoTile",true)
                    << EAM(aVPermut,"Permut",true, "Permut", eSAM_NoInit)
                    << EAM(aF2,"F2",true)
    );

    if (!MMVisualMode)
    {
        // Tiff_Im aTifIn = Tiff_Im::BasicConvStd(aNameIn);
        Tiff_Im aTifIn = Tiff_Im::UnivConvStd(aNameIn);
        INT aNbChIn = aTifIn.nb_chan();

        if (! EAMIsInit(&aTypeOut)) aTypeOut =aTifIn.type_el();
        if (! EAMIsInit(&aPhInterpOut)) aPhInterpOut =  aTifIn.phot_interp();
        if (! EAMIsInit(&aSzOut)) aSzOut = aTifIn.sz();

        if (aReducXY)
        {
            aReducX = 1;
            aReducY = 1;
        }
        if (aNameOut=="")
        {
            if (anExt=="")
            {
                if (aReducX && aReducY)
                    anExt = "_RXY";
                else if (aReducX)
                    anExt = "_RX";
                else if (aReducY)
                    anExt = "_RY";
                else
                    anExt= "_Out";
            }
            if (IsPostfixed(aNameIn))
              aNameOut = StdPrefix(aNameIn) + anExt +"." + StdPostfix(aNameIn);
           else
              aNameOut = aNameIn + anExt + "tif";
        }

        Pt2di aCoefReduc(aReducX != 0 ? 2 : 1, aReducY != 0 ? 2 : 1);
        aSzOut = aSzOut.dcbyc(aCoefReduc);

        if (aNameTypeOut != "")
           aTypeOut = type_im(aNameTypeOut);

        if (aKCh != -1)
           aNamePITOut="BW";

        if ( aVPermut.size() !=0)
        {
             if ( aVPermut.size() ==1)
                 aPhInterpOut = Tiff_Im::BlackIsZero;
             else if ( aVPermut.size() ==3)
                 aPhInterpOut = Tiff_Im::RGB;
             else
            {
               ELISE_ASSERT(aNamePITOut=="","Nb Canaux incoherents");
            }
        }
        else
        {
            if (aNamePITOut=="RGB")
               aPhInterpOut = Tiff_Im::RGB;
            else if (aNamePITOut=="BW")
               aPhInterpOut = Tiff_Im::BlackIsZero;
            else
            {
               ELISE_ASSERT(aNamePITOut=="","Mode Couleur Inconnu");
            }
        }


        Tiff_Im::COMPR_TYPE aComprOut = Tiff_Im::No_Compr;


        L_Arg_Opt_Tiff aLArg = Tiff_Im::Empty_ARG;


        if (! aNoTile)
        {
           if (aSzTileInterne != Pt2di(-1,-1))
               aLArg = aLArg + Arg_Tiff(Tiff_Im::ATiles(aSzTileInterne));

           if (aSzTF != Pt2di(-1,-1))
               aLArg = aLArg + Arg_Tiff(Tiff_Im::AFileTiling(aSzTF));
        }
        else
        {
             aLArg = aLArg + Arg_Tiff(Tiff_Im::ANoStrip());
             aLArg = aLArg + Arg_Tiff(Tiff_Im::AFileTiling(Pt2di(-1,-1)));
        }


        Tiff_Im aTifOut
                (
                      aNameOut.c_str(),
                      aSzOut,
                      aTypeOut,
                      aComprOut,
                      aPhInterpOut,
                      aLArg
                );
        INT aNbChOut = aTifOut.nb_chan();

        Pt2di aSzROut = aSzOut;
        Output anOut = aTifOut.out();

        Fonc_Num aFin = aTifIn.in_proj();
        if (aF2!="")
        {
             Tiff_Im aT2 = Tiff_Im::BasicConvStd(DirOfFile(aNameIn)+aF2);
             aFin = Virgule(aFin,aT2.in(0));
        }

        if (aVPermut.size() != 0)
           aFin = aFin.permut(aVPermut);

        if (type_im_integral( aTypeOut))
        {
        }
        else
        {
            aFin = Rconv(aFin);
        }

        aFin = reduc_binaire_gen(aFin, aReducX != 0, aReducY != 0, 16, true, 0);
        anOut = Filtre_Out_RedBin_Gen(anOut, aReducX != 0, aReducY != 0);
        aSzROut = aSzOut.mcbyc(aCoefReduc);
        aFin = trans(aFin,aP0);

        if (aKCh!=-1)
           aFin = aFin.kth_proj(aKCh);
        else
        {

            if ((aNbChOut==1) && (aNbChIn==3))
                aFin = (aFin.v0() + aFin.v1() + aFin.v2()) / 3.0;

            if ((aNbChOut==3) && (aNbChIn==1))
               aFin = Virgule(aFin,aFin,aFin);
         }


        if (aVisu)
           anOut = anOut |  Video_Win::WiewAv(aSzROut);

        if (aDyn != 1.0)
           aFin = aFin * aDyn;

        if (type_im_integral(aTypeOut) && (aTypeOut!=GenIm::int4))
        {
            int aVMin,aVMax;
            min_max_type_num(aTypeOut,aVMin,aVMax);
            aFin = Max(aVMin,Min(aVMax-1,aFin));
        }

        ELISE_COPY(rectangle(Pt2di(0,0),aSzROut),aFin,anOut);

        return EXIT_SUCCESS;
    }
    else return EXIT_SUCCESS;
}
int makeMuonRun2DTxtFiles(){//main

  TFile *muId_ = new TFile("MuonID_Z_RunCD_Reco76X_Feb15.root");
  TFile *muIso_ = new TFile("MuonIso_Z_RunCD_Reco76X_Feb15.root");

  double extraIdSyst = 0.01;
  double extraIsoSyst = 0.005;

  TH2F *hist_muon[4][3];

  muId_->cd("MC_NUM_LooseID_DEN_genTracks_PAR_pt_spliteta_bin1/efficienciesDATA/");
  hist_muon[0][0] = (TH2F*)gDirectory->Get("abseta_pt_DATA");
  muId_->cd("MC_NUM_LooseID_DEN_genTracks_PAR_pt_spliteta_bin1/efficienciesMC/");
  hist_muon[0][1] = (TH2F*)gDirectory->Get("abseta_pt_MC");
  muId_->cd("MC_NUM_LooseID_DEN_genTracks_PAR_pt_spliteta_bin1/");
  hist_muon[0][2] = (TH2F*)gDirectory->Get("abseta_pt_ratio");

  muId_->cd("MC_NUM_TightIDandIPCut_DEN_genTracks_PAR_pt_spliteta_bin1/efficienciesDATA/");
  hist_muon[1][0] = (TH2F*)gDirectory->Get("abseta_pt_DATA");
  muId_->cd("MC_NUM_TightIDandIPCut_DEN_genTracks_PAR_pt_spliteta_bin1/efficienciesMC/");
  hist_muon[1][1] = (TH2F*)gDirectory->Get("abseta_pt_MC");
  muId_->cd("MC_NUM_TightIDandIPCut_DEN_genTracks_PAR_pt_spliteta_bin1/");
  hist_muon[1][2] = (TH2F*)gDirectory->Get("abseta_pt_ratio");


  muIso_->cd("MC_NUM_LooseRelIso_DEN_LooseID_PAR_pt_spliteta_bin1/efficienciesDATA/");
  hist_muon[2][0] = (TH2F*)gDirectory->Get("abseta_pt_DATA");
  muIso_->cd("MC_NUM_LooseRelIso_DEN_LooseID_PAR_pt_spliteta_bin1/efficienciesMC/");
  hist_muon[2][1] = (TH2F*)gDirectory->Get("abseta_pt_MC");
  muIso_->cd("MC_NUM_LooseRelIso_DEN_LooseID_PAR_pt_spliteta_bin1");
  hist_muon[2][2] = (TH2F*)gDirectory->Get("abseta_pt_ratio");

  muIso_->cd("MC_NUM_TightRelIso_DEN_TightID_PAR_pt_spliteta_bin1/efficienciesDATA/");
  hist_muon[3][0] = (TH2F*)gDirectory->Get("abseta_pt_DATA");
  muIso_->cd("MC_NUM_TightRelIso_DEN_TightID_PAR_pt_spliteta_bin1/efficienciesMC/");
  hist_muon[3][1] = (TH2F*)gDirectory->Get("abseta_pt_MC");
  muIso_->cd("MC_NUM_TightRelIso_DEN_TightID_PAR_pt_spliteta_bin1/");
  hist_muon[3][2] = (TH2F*)gDirectory->Get("abseta_pt_ratio");

  const unsigned nEta = hist_muon[0][0]->GetXaxis()->GetNbins();

  double etaMin[nEta];
  double etaMax[nEta];

  for (unsigned ie(0);ie<nEta;++ie){
    etaMin[ie] = hist_muon[0][0]->GetXaxis()->GetBinLowEdge(ie+1);
    etaMax[ie] = hist_muon[0][0]->GetXaxis()->GetBinLowEdge(ie+2);
    std::cout << "eta min " << etaMin[ie] << " max " << etaMax[ie] << std::endl;
  }

  const unsigned nPt = hist_muon[0][0]->GetYaxis()->GetNbins();

  double ptMin[nPt];
  double ptMax[nPt];

  for (unsigned ie(0);ie<nPt;++ie){
    ptMin[ie] = hist_muon[0][0]->GetYaxis()->GetBinLowEdge(ie+1);
    ptMax[ie] = hist_muon[0][0]->GetYaxis()->GetBinLowEdge(ie+2);
    std::cout << "pt min " << ptMin[ie] << " max " << ptMax[ie] << std::endl;
  }

  const unsigned nP = 4;
  std::string prefix = "Fall15_76X_";
  std::string lFileName[nP] = {"mu_loose_id","mu_tight_id","mu_loose_iso","mu_tight_iso"};
  std::string lDataType[3] = {"data_eff","mc_eff","SF"};
  
  std::ostringstream lName;
  
  for (unsigned iWP(0);iWP<nP;++iWP){//loop on WP
    
    for (unsigned iData(0);iData<3;++iData){//loop on data type: data, MC, SF
      lName.str("");
      lName << prefix << lFileName[iWP] << "_" << lDataType[iData] << ".txt";
      std::ofstream lOut(lName.str().c_str());
      
      for (unsigned iEta(0); iEta<nEta; ++iEta){//loop on eta bin
	for (unsigned iPt(0); iPt<nPt; ++iPt){//loop on pT bins
	  double val = hist_muon[iWP][iData]->GetBinContent(iEta+1,iPt+1);
	  double err = hist_muon[iWP][iData]->GetBinError(iEta+1,iPt+1);
	  if (iWP<2) err = sqrt(pow(err,2)+pow(extraIdSyst,2));
	  else err = sqrt(pow(err,2)+pow(extraIsoSyst,2));
	  lOut << ptMin[iPt] << " " << ptMax[iPt] << " " << etaMin[iEta] << " " << etaMax[iEta] << " " << val << " " << err << " " << err << std::endl;
	}//loop on pT bins
	
      }//loop on eta bin
      
      lOut.close();
    }//loop on data type
    
  }//loop on WP
  
  
  return 1;

}//