void makePoints(Int_t n, Double_t *x, Double_t *y, Double_t *e, Int_t p) { Int_t i; TRandom r; if (p==2) { for (i=0; i<n; i++) { x[i] = r.Uniform(-2, 2); y[i]=TMath::Sin(x[i]) + TMath::Sin(2*x[i]) + r.Gaus()*0.1; e[i] = 0.1; } } if (p==3) { for (i=0; i<n; i++) { x[i] = r.Uniform(-2, 2); y[i] = -7 + 2*x[i]*x[i] + x[i]*x[i]*x[i]+ r.Gaus()*0.1; e[i] = 0.1; } } if (p==4) { for (i=0; i<n; i++) { x[i] = r.Uniform(-2, 2); y[i]=-2 + TMath::Exp(-x[i]) + r.Gaus()*0.1; e[i] = 0.1; } } }
void multicolor(Int_t isStack=0) { TCanvas *c1 = new TCanvas; Int_t nbins = 20; TH2F *h1 = new TH2F("h1","h1",nbins,-4,4,nbins,-4,4); h1->SetFillColor(kBlue); TH2F *h2 = new TH2F("h2","h2",nbins,-4,4,nbins,-4,4); h2->SetFillColor(kRed); TH2F *h3 = new TH2F("h3","h3",nbins,-4,4,nbins,-4,4); h3->SetFillColor(kYellow); THStack *hs = new THStack("hs","three plots"); hs->Add(h1); hs->Add(h2); hs->Add(h3); TRandom r; Int_t i; for (i=0;i<20000;i++) h1->Fill(r.Gaus(),r.Gaus()); for (i=0;i<200;i++) { Int_t ix = (Int_t)r.Uniform(0,nbins); Int_t iy = (Int_t)r.Uniform(0,nbins); Int_t bin = h1->GetBin(ix,iy); Double_t val = h1->GetBinContent(bin); if (val <= 0) continue; if (!isStack) h1->SetBinContent(bin,0); if (r.Rndm() > 0.5) { if (!isStack) h2->SetBinContent(bin,0); h3->SetBinContent(bin,val); } else { if (!isStack) h3->SetBinContent(bin,0); h2->SetBinContent(bin,val); } } hs->Draw("lego1"); }
void write(int n) { TRandom R; TStopwatch timer; TFile f1("mathcoreVectorIO_F.root","RECREATE"); // create tree TTree t1("t1","Tree with new Float LorentzVector"); XYZTVectorF *v1 = new XYZTVectorF(); t1.Branch("LV branch","ROOT::Math::XYZTVectorF",&v1); timer.Start(); for (int i = 0; i < n; ++i) { double Px = R.Gaus(0,10); double Py = R.Gaus(0,10); double Pz = R.Gaus(0,10); double E = R.Gaus(100,10); v1->SetCoordinates(Px,Py,Pz,E); t1.Fill(); } f1.Write(); timer.Stop(); std::cout << " Time for new Float Vector " << timer.RealTime() << " " << timer.CpuTime() << std::endl; t1.Print(); }
// Throw toy experiments to predict observed yields: // - Throw nPredictions mean values (prediction) from the background estimates // considering their uncertainties // - Per prediction, throw nExperiments observed yields from a Poisson // distribution with mean value prediction void ToyExperiments::run(unsigned int nPredictions, unsigned int nExperiments) const { std::cout << "Predicting event yields in " << Parameters::nBins() << " bins from " << nPredictions*nExperiments << " toy experiments ... " << std::flush; // Minimal value (in standard deviations) allowed for //correlated fluctuation const double minCorr = findMinValidRandomNumberForCorrelatedUncertainties(); // Throw mean values for(unsigned int p = 0; p < nPredictions; ++p) { // Throw one (normalized) random number for correlated // uncertainties that is valid in all bins double rCorr = rand_->Gaus(0.,1.); while( rCorr <= minCorr ) { rCorr = rand_->Gaus(0.,1.); } // Loop over all bins and get individual predictions for(unsigned int bin = 0; bin < Parameters::nBins(); ++bin) { double prediction = -1.; bool negativePrediction = true; while( negativePrediction ) { // Throw one (normalized) random number for uncorrelated // uncertainties that is valid in this bin only double rUncorr = rand_->Gaus(0.,1.); // Scale the normalized random numbers by the uncertainties' size // to obtain variation of yield double uncorrVar = rUncorr * uncorrelatedUncerts_.at(bin); double corrVar = rCorr * correlatedUncerts_.at(bin); // Add variations to yield prediction = meanPredictions_.at(bin) + uncorrVar + corrVar; // Check if prediction is positive if( prediction >= 0. ) { negativePrediction = false; } } // Throw predicted yields from Poisson with // this mean for(unsigned int e = 0; e < nExperiments; ++e) { predictedYields_.at(bin)->Fill(rand_->Poisson(prediction)); } } } std::cout << "ok" << std::endl; for(unsigned int bin = 0; bin < Parameters::nBins(); ++bin) { if( predictedYields_.at(bin)->GetBinContent(Parameters::maxYield()+1) > 0 ) { std::cerr << "\n\nWARNING: Overflows in yield histograms!" << std::endl; std::cerr << "This is probably safe, but better increase Parameters::maxYield.\n\n" << std::endl; } } }
void th2polyHoneycomb(){ gStyle->SetCanvasPreferGL(true); TH2Poly *hc = new TH2Poly(); hc->Honeycomb(0,0,.1,25,25); TRandom ran; for (int i = 0; i<30000; i++) { hc->Fill(ran.Gaus(2.,1), ran.Gaus(2.,1)); } hc->Draw("gllego"); }
void FitterUtils::initiateParams(int nGenSignalZeroGamma, int nGenSignalOneGamma, int nGenSignalTwoGamma, RooRealVar const& expoConstGen, RooRealVar& nSignal, RooRealVar& nPartReco, RooRealVar& nComb, RooRealVar& fracZero, RooRealVar& fracOne, RooRealVar& expoConst, RooRealVar& nJpsiLeak, bool constPartReco, RooRealVar const& fracPartRecoSigma) { TRandom rand; rand.SetSeed(); int nGenSignal = nGenSignalZeroGamma + nGenSignalOneGamma + nGenSignalTwoGamma; double nGenSignal2; double nGenPartReco2; if(!constPartReco) { nGenSignal2 = rand.Uniform(nGenSignal-5*sqrt(nGenSignal), nGenSignal+5*sqrt(nGenSignal)); nGenPartReco2 = rand.Uniform(nGenPartReco-5*sqrt(nGenPartReco), nGenPartReco+5*sqrt(nGenPartReco)); } if(constPartReco) { double nGenSigPartReco( nGenSignal+nGenPartReco ); double nGenSigPartReco2( rand.Uniform( nGenSigPartReco-5*sqrt(nGenSigPartReco), nGenSigPartReco+5*sqrt(nGenSigPartReco) ) ); double fracPartReco1( nGenPartReco/(1.*nGenSignal)); double fracPartReco2( rand.Uniform(fracPartReco1-5*fracPartRecoSigma.getVal(), fracPartReco1+5*fracPartRecoSigma.getVal()) ); nGenPartReco2 = fracPartReco2*nGenSigPartReco2 / (1+fracPartReco2); nGenSignal2 = nGenSigPartReco2 / (1+fracPartReco2); } double nGenComb2 = rand.Uniform(nGenComb-5*sqrt(nGenComb), nGenComb+5*sqrt(nGenComb)); double nGenJpsiLeak2 = rand.Uniform(nGenJpsiLeak-5*sqrt(nGenJpsiLeak), nGenJpsiLeak+5*sqrt(nGenJpsiLeak)); nSignal.setVal(nGenSignal2); nSignal.setRange(TMath::Max(0.,nGenSignal2-10.*sqrt(nGenSignal)) , nGenSignal2+10*sqrt(nGenSignal)); nPartReco.setVal(nGenPartReco2); nPartReco.setRange(TMath::Max(0.,nGenPartReco2-10.*sqrt(nGenPartReco)), nGenPartReco2+10*sqrt(nGenPartReco)); nComb.setVal(nGenComb2); nComb.setRange(TMath::Max(0.,nGenComb2-10.*sqrt(nGenComb)), nGenComb2+10*sqrt(nGenComb)); nJpsiLeak.setVal(nGenJpsiLeak2); nJpsiLeak.setRange(TMath::Max(0., nGenJpsiLeak2-10*sqrt(nGenJpsiLeak)), nGenJpsiLeak2+10*sqrt(nGenJpsiLeak)); double fracGenZero(nGenSignalZeroGamma/(1.*nGenSignal)); double fracGenOne(nGenSignalOneGamma/(1.*nGenSignal)); fracZero.setVal(rand.Gaus(fracGenZero, sqrt(nGenSignalZeroGamma)/(1.*nGenSignal))) ; fracZero.setRange(0., 1.); fracOne.setVal(rand.Gaus(fracGenOne, sqrt(nGenSignalOneGamma)/(1.*nGenSignal))) ; fracOne.setRange(0., 1.); expoConst.setVal(rand.Uniform( expoConstGen.getVal() - 5*expoConstGen.getError(), expoConstGen.getVal() + 5*expoConstGen.getError() ) ); expoConst.setRange( expoConstGen.getVal() - 10*expoConstGen.getError(), expoConstGen.getVal() + 10*expoConstGen.getError() ); }
// PValue for finding a local p-value as observed in 'bin' or worse void ToyExperiments::printGlobalPValueOfLocalFluctuation(unsigned int bin, unsigned int nExperiments) const { std::cout << "Determining global p-value for observed fluctuation in bin " << bin << " from " << nExperiments << " toy experiments ... " << std::flush; // Find the predicted yields that correspond // to the local p-value 'localPValue' std::vector<unsigned int> limitYields = yields(localPValue(bin,observedYields_.at(bin))); TH1* hIsAbovePValue = new TH1D("hIsAbovePValue","",2,0,2); const double minCorr = findMinValidRandomNumberForCorrelatedUncertainties(); for(unsigned int p = 0; p < nExperiments; ++p) { bool isAbovePValue = false; double rCorr = rand_->Gaus(0.,1.); while( rCorr <= minCorr ) { rCorr = rand_->Gaus(0.,1.); } for(unsigned int b = 0; b < Parameters::nBins(); ++b) { double prediction = -1.; bool negativePrediction = true; while( negativePrediction ) { double rUncorr = rand_->Gaus(0.,1.); double uncorrVar = rUncorr * uncorrelatedUncerts_.at(b); double corrVar = rCorr * correlatedUncerts_.at(b); prediction = meanPredictions_.at(b) + uncorrVar + corrVar; if( prediction >= 0. ) { negativePrediction = false; } } double predictedYield = rand_->Poisson(prediction); if( predictedYield >= limitYields.at(b) ) { isAbovePValue = true; break; } } if( isAbovePValue ) { hIsAbovePValue->Fill(1); } else { hIsAbovePValue->Fill(0); } } std::cout << "ok" << std::endl; double lpv = localPValue(bin,observedYields_.at(bin)); double gpUncorr = 1. - pow(1.-lpv,Parameters::nBins()); double gpCorr = hIsAbovePValue->Integral(2,2)/hIsAbovePValue->Integral(1,2); std::cout << "\n\n----- Global p-value for observed fluctuation in bin " << bin << " -----" << std::endl; std::cout << " local p-value : " << lpv << " (" << TMath::NormQuantile(1.-lpv) << "sig)" << std::endl; std::cout << " global p-value (without correlations) : " << gpUncorr << " (" << TMath::NormQuantile(1.-gpUncorr) << "sig)" << std::endl; std::cout << " global p-value (including correlations) : " << gpCorr << " (" << TMath::NormQuantile(1.-gpCorr) << "sig)" << std::endl; }
void JEC_fit_Uncertainty(int N) { TF1 *func[1000]; TFile *inf = new TFile("L3Graphs_test_Icone5.root"); TGraphErrors *g = (TGraphErrors*)inf->Get("Correction_vs_CaloPt"); TGraphErrors *vg[1000]; int i,k; double x[20],y[20],ex[20],ey[20]; double vx[20],vy[20],vex[20],vey[20]; for(i=0;i<g->GetN();i++) { g->GetPoint(i,x[i],y[i]); ex[i]=g->GetErrorX(i); ey[i]=g->GetErrorY(i); } TRandom *rnd = new TRandom(); rnd->SetSeed(0); for(k=0;k<N;k++) { for(i=0;i<g->GetN();i++) { vx[i] = rnd->Gaus(x[i],ex[i]); //vx[i] = x[i]; vy[i] = rnd->Gaus(y[i],ey[i]); vex[i] = ex[i]; vey[i] = ey[i]; } vg[k] = new TGraphErrors(g->GetN(),vx,vy,vex,vey); func[k] = new TF1("func","[0]+[1]/(pow(log10(x),[2])+[3])",1,2000); func[k]->SetParameters(1,3,6,5); vg[k]->Fit(func[k],"RQ"); } TCanvas *c = new TCanvas("c","c"); gPad->SetLogx(); g->SetMarkerStyle(20); g->SetMaximum(3.5); g->Draw("AP"); for(k=0;k<N;k++) { func[k]->SetLineColor(5); func[k]->SetLineWidth(1); cout<<func[k]->GetChisquare()<<endl; vg[k]->SetMarkerColor(2); vg[k]->SetLineColor(2); vg[k]->SetMarkerStyle(21); //if (func[k]->GetChisquare()<0.1) //vg[k]->Draw("sameP"); func[k]->Draw("same"); } }
void candlehisto() { TCanvas *c1 = new TCanvas("c1","Candle Presets",800,600); c1->Divide(3,2); TRandom *rand = new TRandom(); TH2I *h1 = new TH2I("h1","Sin",18,0,360,100,-1.5,1.5); h1->GetXaxis()->SetTitle("Deg"); float myRand; for (int i = 0; i < 360; i+=10) { for (int j = 0; j < 100; j++) { myRand = rand->Gaus(sin(i*3.14/180),0.2); h1->Fill(i,myRand); } } for (int i = 1; i < 7; i++) { c1->cd(i); char str[16]; sprintf(str,"CANDLEX%d",i); TH2I * myhist = (TH2I*)h1->DrawCopy(str); myhist->SetTitle(str); } TCanvas *c2 = new TCanvas("c2","Violin Presets",800,300); c2->Divide(2,1); for (int i = 1; i < 3; i++) { c2->cd(i); char str[16]; sprintf(str,"VIOLINX%d",i); TH2I * myhist = (TH2I*)h1->DrawCopy(str); myhist->SetFillColor(kGray+2); } TCanvas *c3 = new TCanvas("c3","Playing with candle and violin-options",800,600); c3->Divide(3,2); char myopt[6][16] = {"1000000","2000000","3000000","1112111","112111","112111"}; for (int i = 0; i < 6; i++) { c3->cd(i+1); char str[16]; sprintf(str, "candlex(%s)",myopt[i]); TH2I * myhist = (TH2I*)h1->DrawCopy(str); myhist->SetFillColor(kYellow); if (i == 4) { TH2I * myhist2 = (TH2I*)h1->DrawCopy("candlex(1000000) same"); myhist2->SetFillColor(kRed); } if (i == 5) { myhist->SetBarWidth(0.2); myhist->SetBarOffset(0.25); TH2I * myhist2 = (TH2I*)h1->DrawCopy("candlex(2000000) same"); myhist2->SetFillColor(kRed); myhist2->SetBarWidth(0.6); myhist2->SetBarOffset(-0.5); } myhist->SetTitle(str); } }
void tv3Write() { //creates the Tree TVector3 *v = new TVector3(); TVector3::Class()->IgnoreTObjectStreamer(); TFile *f = new TFile("v3.root","recreate"); TTree *T = new TTree("T","v3 Tree"); T->Branch("v3","TVector3",&v,32000,1); TRandom r; for (Int_t i=0;i<10000;i++) { v->SetXYZ(r.Gaus(0,1),r.Landau(0,1),r.Gaus(100,10)); T->Fill(); } T->Write(); T->Print(); delete f; }
PolyFit::PolyFit(double p0, double p1, double p2, double p3, double sigma) : _theTFile(new TFile("test/myFit.root","RECREATE")), _sigma(sigma) { // Display parameters for test distribution std::cout << std::endl; /*Info <<"Set p0 as "<< p0 << endmsg; Info <<"Set p1 as "<< p1 << endmsg; Info <<"Set p2 as "<< p2 << endmsg; Info <<"Set p3 as "<< p3 << endmsg; Info <<"Set sigma as "<< sigma << endmsg;*/ std::cout <<"Set p0 as "<< p0 << std::endl; std::cout <<"Set p1 as "<< p1 << std::endl; std::cout <<"Set p2 as "<< p2 << std::endl; std::cout <<"Set p3 as "<< p3 << std::endl; std::cout <<"Set sigma as "<< sigma << std::endl; // Generate test distribution and smear them with a gaussian TRandom randomNumber; randomNumber.SetSeed(1773); for(int i=0; i<1000; i++) { double tmpXvalue=static_cast<double>((rand() % 10000 + 1)) / 100; double tmpYvalue=randomNumber.Gaus(p0 + p1 * tmpXvalue + p2 * tmpXvalue * tmpXvalue + p3 * tmpXvalue * tmpXvalue * tmpXvalue, _sigma); _xValue.push_back(tmpXvalue); _yValue.push_back(tmpYvalue); } }
void candleplotoption() { TCanvas *c1 = new TCanvas("c1","Candle Presets",1200,800); c1->Divide(3,2); TRandom *randnum = new TRandom(); TH2I *h1 = new TH2I("h1","Sin",18,0,360,300,-1.5,1.5); h1->GetXaxis()->SetTitle("Deg"); float myRand; for (int i = 0; i < 360; i+=10) { for (int j = 0; j < 100; j++) { myRand = randnum->Gaus(sin(i*3.14/180),0.2); h1->Fill(i,myRand); } } for (int i = 1; i < 7; i++) { c1->cd(i); char str[16]; sprintf(str,"candlex%d",i); TH2I * myhist = (TH2I*)h1->DrawCopy(str); myhist->SetTitle(str); } TCanvas *c2 = new TCanvas("c2","Candle Individual",1200,800); c2->Divide(4,4); char myopt[16][8] = {"0","1","11","21","31","30","111","311","301","1111","2321","12111","112111","212111","312111"}; for (int i = 0; i < 15; i++) { c2->cd(i+1); char str[16]; sprintf(str, "candlex(%s)",myopt[i]); TH2I * myhist = (TH2I*)h1->DrawCopy(str); myhist->SetTitle(str); } }
int ConvertEvent::get_electron_numbers(double energy) { if (energy <= 0) return 0; int n = int(round(random.Gaus(energy / work_function, TMath::Sqrt(fano * energy / work_function)))); return n > 0 ? n : 0; }
void Interpolation() { ROOT::R::TRInterface &r=ROOT::R::TRInterface::Instance(); //Creating points TRandom rg; std::vector<Double_t> x(10),y(10); for(int i=0;i<10;i++) { x[i]=i; y[i]=rg.Gaus(); } r["x"]=x; r["y"]=y; // do plotting only in non-batch mode if (!gROOT->IsBatch() ) { r<<"dev.new()";//Required to activate new window for plot //Plot parameter. Plotting using two rows and one column r<<"par(mfrow = c(2,1))"; //plotting the points r<<"plot(x, y, main = 'approx(.) and approxfun(.)')"; //The function "approx" returns a list with components x and y //containing n coordinates which interpolate the given data points according to the method (and rule) desired. r<<"points(approx(x, y), col = 2, pch = '*')"; r<<"points(approx(x, y, method = 'constant'), col = 4, pch = '*')"; } else { r << "print('Interpolated points')"; r << "print(approx(x,y,n=20))"; } //The function "approxfun" returns a function performing (linear or constant) //interpolation of the given data. //For a given set of x values, this function will return the corresponding interpolated values. r<<"f <- approxfun(x, y)"; //using approxfun with const method r<<"fc <- approxfun(x, y, method = 'const')"; if (!gROOT->IsBatch() ) { r<<"curve(f(x), 0, 11, col = 'green2')"; r<<"points(x, y)"; r<<"curve(fc(x), 0, 10, col = 'darkblue', add = TRUE)"; // different interpolation on left and right side : r<<"plot(approxfun(x, y, rule = 2:1), 0, 11,col = 'tomato', add = TRUE, lty = 3, lwd = 2)"; r<<"dev.off()";//Required to close new window for plot } else { r << "x2=x+0.5"; r << "print('Result of approxfun with default method')"; r << "print(paste('x = ',x,' f(x) = ',f(x2)))"; r << "print('Result of approxfun with const method')"; r << "print(paste('x = ',x,' f(x) = ',fc(x2)))"; } }
void MixingResult::randomise () {//randomizer static TRandom donram(42); std::cout << "Randomising " << getName() << "; old value " << measurement; double delta = donram.Gaus()*error; measurement += delta; std::cout << " delta " << delta << " new value " << measurement << std::endl; }
// Example of a canvas showing two histograms with different scales. // The second histogram is drawn in a transparent pad void transpad() { TCanvas *c1 = new TCanvas("c1","transparent pad",200,10,700,500); TPad *pad1 = new TPad("pad1","",0,0,1,1); TPad *pad2 = new TPad("pad2","",0,0,1,1); pad2->SetFillStyle(4000); //will be transparent pad1->Draw(); pad1->cd(); TH1F *h1 = new TH1F("h1","h1",100,-3,3); TH1F *h2 = new TH1F("h2","h2",100,-3,3); TRandom r; for (Int_t i=0;i<100000;i++) { Double_t x1 = r.Gaus(-1,0.5); Double_t x2 = r.Gaus(1,1.5); if (i <1000) h1->Fill(x1); h2->Fill(x2); } h1->Draw(); pad1->Update(); //this will force the generation of the "stats" box TPaveStats *ps1 = (TPaveStats*)h1->GetListOfFunctions()->FindObject("stats"); ps1->SetX1NDC(0.4); ps1->SetX2NDC(0.6); pad1->Modified(); c1->cd(); //compute the pad range with suitable margins Double_t ymin = 0; Double_t ymax = 2000; Double_t dy = (ymax-ymin)/0.8; //10 per cent margins top and bottom Double_t xmin = -3; Double_t xmax = 3; Double_t dx = (xmax-xmin)/0.8; //10 per cent margins left and right pad2->Range(xmin-0.1*dx,ymin-0.1*dy,xmax+0.1*dx,ymax+0.1*dy); pad2->Draw(); pad2->cd(); h2->SetLineColor(kRed); h2->Draw("sames"); pad2->Update(); TPaveStats *ps2 = (TPaveStats*)h2->GetListOfFunctions()->FindObject("stats"); ps2->SetX1NDC(0.65); ps2->SetX2NDC(0.85); ps2->SetTextColor(kRed); // draw axis on the right side of the pad TGaxis *axis = new TGaxis(xmax,ymin,xmax,ymax,ymin,ymax,50510,"+L"); axis->SetLabelColor(kRed); axis->Draw(); }
void makeDecalibCDB(Int_t firstRun, Int_t lastRun, Float_t decalib = 0.065) { //Generates a random decalibration factors O(1) //to be applied in the anchor run simulations with raw:// . //If decalib<0, no decalibration generated, all factors=1. //Run range is [firstRun,lastRun] and gaussian sigma = decalib. //Author: Boris Polishchuk. AliCDBManager::Instance()->SetDefaultStorage("raw://"); AliCDBManager::Instance()->SetRun(firstRun); TString emcPath("PHOS/Calib/EmcGainPedestals"); AliCDBEntry* entryEmc = AliCDBManager::Instance()->Get(emcPath.Data(),-1); AliPHOSEmcCalibData* clb=0; if(entryEmc) clb = (AliPHOSEmcCalibData*)entryEmc->GetObject(); else { printf("CDB entry not found. Exit.\n"); return; } if(!clb) { printf("Calibration parameters for PHOS EMC not found.\n"); return; } printf("\t\tEMC calibration object found: FirstRun=%d LastRun=%d Version=%d SubVersion=%d\n", entryEmc->GetId().GetFirstRun(), entryEmc->GetId().GetLastRun(), entryEmc->GetId().GetVersion(),entryEmc->GetId().GetSubVersion()); TRandom rn; rn.SetSeed(0); //the seed is set to the current machine clock Float_t adcChannelEmc; for(Int_t module=1; module<6; module++) { for(Int_t column=1; column<57; column++) { for(Int_t row=1; row<65; row++) { if(decalib<0.) adcChannelEmc = 1.; else adcChannelEmc =rn.Gaus(1.,decalib); clb->SetADCchannelEmcDecalib(module,column,row,adcChannelEmc); } } } AliCDBManager::Instance()->SetDefaultStorage("local://./"); AliCDBStorage* storage = AliCDBManager::Instance()->GetDefaultStorage(); AliCDBMetaData *md = new AliCDBMetaData(); AliCDBId id(emcPath.Data(),firstRun,lastRun); storage->Put(clb,id, md); }
TMap* CreateDCSAliasMap() { // Creates a DCS structure // The structure is the following: // TMap (key --> value) // <DCSAlias> --> <valueList> // <DCSAlias> is a string // <valueList> is a TObjArray of AliDCSValue // An AliDCSValue consists of timestamp and a value in form of a AliSimpleValue // In this example 6 aliases exists: DCSAlias1 ... DCSAlias6 // Each contains 1000 values randomly generated by TRandom::Gaus + 5*nAlias TMap* aliasMap = new TMap; aliasMap->SetOwner(1); TRandom random; FILE *fp = fopen("./DCSValues.txt","r"); char name[50]; Float_t val; while(!(EOF == fscanf(fp,"%s %f",name,&val))){ TObjArray* valueSet = new TObjArray; valueSet->SetOwner(1); TString aliasName=name; //printf("alias: %s\t\t",aliasName.Data()); int timeStamp=10; if(aliasName.Contains("HV")) { for(int i=0;i<200;i++){ dcsVal = new AliDCSValue((Float_t) (val+random.Gaus(0,val*0.1)), timeStamp+10*i); valueSet->Add(dcsVal); } } else { for(int i=0;i<2;i++){ AliDCSValue* dcsVal = new AliDCSValue((UInt_t) (val), timeStamp+10*i); valueSet->Add(dcsVal); } } aliasMap->Add(new TObjString(aliasName), valueSet); } fclose(fp); return aliasMap; }
double write(int n) { TRandom R; TStopwatch timer; TFile f1("mathcoreLV.root","RECREATE"); // create tree TTree t1("t1","Tree with new LorentzVector"); std::vector<ROOT::Math::XYZTVector> tracks; std::vector<ROOT::Math::XYZTVector> * pTracks = &tracks; t1.Branch("tracks","std::vector<ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > >",&pTracks); double M = 0.13957; // set pi+ mass timer.Start(); double sum = 0; for (int i = 0; i < n; ++i) { int nPart = R.Poisson(5); pTracks->clear(); pTracks->reserve(nPart); for (int j = 0; j < nPart; ++j) { double px = R.Gaus(0,10); double py = R.Gaus(0,10); double pt = sqrt(px*px +py*py); double eta = R.Uniform(-3,3); double phi = R.Uniform(0.0 , 2*TMath::Pi() ); RhoEtaPhiVector vcyl( pt, eta, phi); // set energy double E = sqrt( vcyl.R()*vcyl.R() + M*M); XYZTVector q( vcyl.X(), vcyl.Y(), vcyl.Z(), E); // fill track vector pTracks->push_back(q); // evaluate sum of components to check sum += q.x()+q.y()+q.z()+q.t(); } t1.Fill(); } f1.Write(); timer.Stop(); std::cout << " Time for new Vector " << timer.RealTime() << " " << timer.CpuTime() << std::endl; t1.Print(); return sum; }
//================================================================== void doIt() { TFile file("treeClass.root","recreate") ; TRandom * r = new TRandom() ; TTree theTree("treeClass", "A tree with a class") ; Event * event = new Event() ; theTree.Branch("eventBranch", "Event", &event, 16000, 0) ; // No splitting for( int ev=0; ev<10; ++ev) { event->setEventNumber(ev) ; std::cout << __LINE__ << "]\t[" << __PRETTY_FUNCTION__ << "]\tEvent: " << ev << std::endl ; for(int i=0; i<(int)r->Gaus(5,2); ++i) { double t = r->Gaus(50,12) ; std::cout << __LINE__ << "]\t[" << __PRETTY_FUNCTION__ << "]\t t: " << t << std::endl ; event->addTrack(t) ; } double x = r->Gaus(150,12) ; std::cout << __LINE__ << "]\t[" << __PRETTY_FUNCTION__ << "]\t xw: " << x << std::endl ; event->setX(x) ; std::cout << __LINE__ << "]\t[" << __PRETTY_FUNCTION__ << "]\t xr: " << event->x() << std::endl ; theTree.Fill() ; event->cleanData() ; } // theTree.BuildIndex("getEventNumber") ; file.Write() ; file.Close() ; std::cout << __LINE__ << "]\t[" << __PRETTY_FUNCTION__ << "]\tFile treeClass.root written" << std::endl ; }
void roottest() { TCanvas *c1 = new TCanvas("c1","demo",200,10,700,500); c1->SetFillColor(42); TRandom r; gRandom->SetSeed(); TH1F *histo1 = new TH1F("histo1","s",50,0.,50.); histo1->SetMarkerStyle(21); for (int i=0; i<500; i++) { float p1=r.Gaus(10,2); histo1->Fill(p1); } histo1->Draw(""); c1->SaveAs("c1.gif"); }
void treegetval() { // create a simple TTree with 5 branches Int_t run, evt; Float_t x,y,z; TTree *T = new TTree("T","test friend trees"); T->Branch("Run",&run,"Run/I"); T->Branch("Event",&evt,"Event/I"); T->Branch("x",&x,"x/F"); T->Branch("y",&y,"y/F"); T->Branch("z",&z,"z/F"); TRandom r; for (Int_t i=0;i<10000;i++) { if (i < 5000) run = 1; else run = 2; evt = i; x = r.Gaus(10,1); y = r.Gaus(20,2); z = r.Landau(2,1); T->Fill(); } // Draw with option goff and generate seven variables Int_t n = T->Draw("x:y:z:Run:Event:sin(x):cos(x)","Run==1","goff"); printf("The arrays' dimension is %d\n",n); // Retrieve variables 5 et 6 Double_t *vxs = T->GetVal(5); Double_t *vxc = T->GetVal(6); // Draw with option goff and generate only one variable T->Draw("x","Run==1","goff"); // Retrieve variable 0 Double_t *vx = T->GetVal(0); // Create and draw graphs TGraph *gs = new TGraph(n,vx,vxs); TGraph *gc = new TGraph(n,vx,vxc); gs->Draw("ap"); gc->Draw("p"); }
void candleplot() { gStyle->SetTimeOffset(0); TRandom *rand = new TRandom(); TDatime *dateBegin = new TDatime(2010,1,1,0,0,0); TDatime *dateEnd = new TDatime(2011,1,1,0,0,0); TH2I *h1 = new TH2I("h1","Machine A + B",12,dateBegin->Convert(),dateEnd->Convert(),1000,0,1000); TH2I *h2 = new TH2I("h2","Machine B",12,dateBegin->Convert(),dateEnd->Convert(),1000,0,1000); h1->GetXaxis()->SetTimeDisplay(1); h1->GetXaxis()->SetTimeFormat("%m/%y"); h1->GetXaxis()->SetTitle("Date [month/year]"); float Rand; for (int i = dateBegin->Convert(); i < dateEnd->Convert(); i+=86400*30) { for (int j = 0; j < 1000; j++) { Rand = rand->Gaus(500+sin(i/10000000.)*100,50); h1->Fill(i,Rand); Rand = rand->Gaus(500+sin(i/11000000.)*100,70); h2->Fill(i,Rand); } } h1->SetBarWidth(0.4); h1->SetBarOffset(-0.25); h1->SetFillColor(kYellow); h1->SetFillStyle(1001); h2->SetBarWidth(0.4); h2->SetBarOffset(0.25); h2->SetLineColor(kRed); h2->SetFillColor(kGreen); TCanvas *c1 = new TCanvas(); h1->Draw("candle2"); h2->Draw("candle3 same"); gPad->BuildLegend(0.78,0.695,0.980,0.935,"","f"); }
void CreateParentTree() { // create a simple TTree with 5 branches // Two branches ("Run" and "Event") will be used to index the Tree TFile *f = new TFile("treeparent.root","recreate"); TTree *T = new TTree("T","test friend trees"); T->Branch("Run",&Run,"Run/I"); T->Branch("Event",&Event,"Event/I"); T->Branch("x",&x,"x/F"); T->Branch("y",&y,"y/F"); T->Branch("z",&z,"z/F"); TRandom r; for (Int_t i=0;i<10000;i++) { if (i < 5000) Run = 1; else Run = 2; Event = i; x = r.Gaus(10,1); y = r.Gaus(20,2); z = r.Landau(2,1); T->Fill(); } T->Print(); T->Write(); delete f; }
void jetEnergy(Double_t fRMS, Double_t fTowerE, Double_t fZSThreshold, Int_t fIter) { Double_t jetEnergySum = 0; Int_t counter = 0; Int_t sumCounter = 0; TRandom *noise = new TRandom; for(Int_t i = 0; i < fIter; i++){ counter++; for(Int_t j = 0; j < 20; j++){ Double_t energy = fTowerE + noise->Gaus(0., fRMS); if(energy > fZSThreshold){ sumCounter++; jetEnergySum += energy; } } if(counter%1000 == 0) cout<<">> Iteration: "<<counter<<", Jet energy = "<<jetEnergySum/counter<<" MeV\n"; } cout<<">> Sum counter = "<<sumCounter<<"\n"; }
TLorentzVector* applyResolution(TLorentzVector *l_gen){ if(randomForSmearing.Uniform()<.9){ double l_Perp = l_gen->Perp()+(randomForSmearing.Gaus(0,0.012*1.15* l_gen->Perp()+0.00000*1.15* l_gen->Perp()* l_gen->Perp() )); double l_Theta = l_gen->Theta()+(randomForSmearing.Gaus(0,0.001)); double l_Phi = l_gen->Phi()+(randomForSmearing.Gaus(0,0.001)); }else{ double l_Perp = l_gen->Perp()+randomForSmearing.Gaus(-l_gen->Perp()*.04,l_gen->Perp()*.08); //double l_Perp = l_gen->Perp(); double l_Theta = l_gen->Theta()+(randomForSmearing.Gaus(0,0.001)); double l_Phi = l_gen->Phi()+(randomForSmearing.Gaus(0,0.001)); } double l_Px = l_Perp*cos(l_Phi); double l_Py = l_Perp*sin(l_Phi); double l_Pz = l_Perp/tan(l_Theta); double l_E = sqrt(l_Px*l_Px+l_Py*l_Py+l_Pz*l_Pz); return (new TLorentzVector( l_Px, l_Py, l_Pz, l_E )); }
int main(int argc, char** argv) { string inputfile; string outputfile; vector<string> datafiles; /* Argument parsing */ /* ---------------- */ if( argc != 3 ) { Usage(); } else { inputfile = argv[1]; outputfile = argv[2]; string extension = inputfile.substr( inputfile.length()-5, 5 ); /* A single input file */ if( extension == ".root" ) { cout<<"A single input file, "<<inputfile<<endl; datafiles.push_back(inputfile); } /* Input file is a list */ else if( extension == ".list" ) { cout<<"A list of root files, "<<inputfile<<endl; /* Grab all the data files in the list */ ifstream inlist( inputfile.c_str() ); string line; while( getline( inlist, line ) ) { datafiles.push_back( line ); } } /* Other errors */ else { Usage(); } } /* Load the StreamChain and initializa StreamChain Tree reader */ /* ----------------------------------------------------------- */ TChain* EventChain = new TChain("Event"); for( unsigned int i =0; i<datafiles.size(); i++ ) { EventChain->Add( datafiles[i].c_str() ); } cout<<datafiles.size()<<" data files will be processed."<<endl; // Load the ReadinChain Tree // Get the ReadinChain Tree reader TR = new TreeReader; TR->Init(EventChain); /* Begin Job */ /* --------- */ if( BeginJob() == 0 ) { cout<<"BeginJob failed"<<endl; return 0; } TFile f( outputfile.c_str(), "RECREATE" ); TH1F* hDistOrg = new TH1F("DistOrg","DistOrg",1000,0,3500); TH1F* hDistNew = new TH1F("DistNew","DistNew",1000,0,3500); int nTot = 0; int nOrg = 0; int nNew = 0; TRandom rand; /* The main loop over every stream entries */ /* --------------------------------------- */ unsigned int entries = EventChain->GetEntries(); for( unsigned int entry=0; entry<entries; entry++ ) { unsigned int localentry = EventChain->LoadTree(entry); int ret = TR->GetEntry( localentry ); if( ret==0 ) { cout<<"Warning: Read error"<<endl; } /*** Test each entry here ***/ if( TR->Fold != 2 ) continue; if( TR->E[1] < 1.9988 ) continue; if( TR->E[1] > 2.9852 ) continue; nTot++; /* Original case */ { /* Useful event left */ double x0,y0,z0, x1,y1,z1; /* IBD primary vertex */ x0 = TR->XT[0]; y0 = TR->YT[0]; z0 = TR->ZT[0]; /* Gamma dep center */ x1 = TR->XCpt[1]; y1 = TR->YCpt[1]; z1 = TR->ZCpt[1]; /* Step 1, gamma range */ /* Step 2, rec shrink */ x0 *= 0.97; y0 *= 0.97; z0 *= 0.89; /* Step 3, resolution */ x0 += rand.Gaus(0, 160); y0 += rand.Gaus(0, 160); z0 += rand.Gaus(0, 120); x1 += rand.Gaus(0, 160); y1 += rand.Gaus(0, 160); z1 += rand.Gaus(0, 120); double l = sqrt( pow((x1-x0),2) + pow((y1-y0),2) + pow((z1-z0),2) ); hDistOrg->Fill(l); if( l<500 ) nOrg++; } /* New case */ { /* Useful event left */ double x0,y0,z0, x1,y1,z1; /* IBD primary vertex */ x0 = TR->XT[0]; y0 = TR->YT[0]; z0 = TR->ZT[0]; /* Gamma dep center */ x1 = TR->XCpt[1]; y1 = TR->YCpt[1]; z1 = TR->ZCpt[1]; /* Step 1, gamma range */ x1 = x0 + (x1-x0)* (1-0.007); y1 = y0 + (y1-y0)* (1-0.007); z1 = z0 + (z1-z0)* (1-0.007); /* step 2, rec shrink */ x0 *= 0.97; y0 *= 0.97; z0 *= 0.89; x0 *= (1-0.012); y0 *= (1-0.012); z0 *= (1-0.016); /* Step 3, resolution */ x0 += rand.Gaus(0, 160 * (1-0.019)); y0 += rand.Gaus(0, 160 * (1-0.019)); z0 += rand.Gaus(0, 120 * (1-0.025)); x1 += rand.Gaus(0, 160 * (1-0.019)); y1 += rand.Gaus(0, 160 * (1-0.019)); z1 += rand.Gaus(0, 120 * (1-0.025)); double l = sqrt( pow((x1-x0),2) + pow((y1-y0),2) + pow((z1-z0),2) ); hDistNew->Fill(l); if( l<500 ) nNew++; } /*** End of each entry ***/ } f.Write(); double EffOrg = nOrg/double(nTot); double ErrOrg = sqrt( EffOrg*(1-EffOrg)/double(nTot) ); double EffNew = nNew/double(nTot); double ErrNew = sqrt( EffNew*(1-EffNew)/double(nTot) ); cout<<nTot<<"\t"<<nOrg<<"\t"<<nNew<<endl; cout<<EffOrg<<"+/-"<<ErrOrg<<" vs. "<<EffNew<<"+/-"<<ErrNew<<endl; /* End Job */ /* ------- */ if( EndJob() == 0 ) { cout<<"BeginJob failed"<<endl; return 0; } return 1; }
void RAA_read_eMaxSumCandPlots( Int_t radius = 3 ) { gStyle->SetOptStat(0); TH1::SetDefaultSumw2(); TH2::SetDefaultSumw2(); char* etaWidth = (char*)"20_eta_20"; Int_t etaLow = 20; Int_t etaHigh = 20; // char * etaWidth = (char*)Form("%d_eta_%d",etaLow, etaHigh); cout<<"etaWidth = "<<etaWidth<<endl; cout<<"Radius = "<<radius<<endl; Float_t pfptmin=30; Float_t trMaxCut=0.01; // to run macro in test mode and not process whole tree, make Short=1 // to read all entries, make Short=0 Int_t Short=0; long TestEntries=10000; long entries; if(radius==2){ pfptmin = 30; } else if(radius==3){ pfptmin = 40; } else if(radius==4){ pfptmin = 50; } bool isSymm = false; if(etaLow == etaHigh) isSymm = true; char * ntuple = (char*)"Pawan"; // or "Pawan" // the cut is a 3 step cut based on the different value of the calopt/pfpt - copy the following lines into your loop (with the corresponding branch address set) // if(calopt/pfpt <= 0.5 && eMax/Sumcand < 0.05) hGood->Fill(); // if(calopt/pfpt > 0.5 && calopt/pfpt <= 0.85 && eMax/Sumcand < (18/7 *(Float_t)calopt_1/pfpt_1 - 9/7)) ) hGood->Fill(); // if(calopt/pfpt > 0.85 & eMax/Sumcand > 0.9) hGood->Fill(); TFile * fData, * fMC; TTree * Data_matched, * Data_unmatched, *MC_matched, * MC_unmatched; TCanvas * ceMaxSumcand_jet55[ptSelection], * ceMaxSumcand_jet65[ptSelection], * ceMaxSumcand_jet80[ptSelection]; if(ntuple == "Pawan"){ fData = TFile::Open("/mnt/hadoop/cms/store/user/pawan/trees/JetRaaTree_akPu234_PbPb_DATA.root"); fMC = TFile::Open("/mnt/hadoop/cms/store/user/pawan/trees/JetRaaTree_akPu234_PbPb_MC.root"); Data_matched = (TTree*)fData->Get(Form("akPu%dJetAnalyzer/jetTree",radius)); MC_matched = (TTree*)fMC->Get(Form("akPu%dJetAnalyzer/jetTree",radius)); } if(ntuple == "Raghav"){ // Raghav's ntuples - running to find the difference in spectra between Pawan's and mine. fData = TFile::Open(Form("/export/d00/scratch/rkunnawa/rootfiles/PbPb_Data_calo_pf_jet_correlation_deltaR_0p2_akPu%d_20150331.root",radius)); fMC = TFile::Open(Form("/export/d00/scratch/rkunnawa/rootfiles/PbPb_MC_calo_pf_jet_correlation_deltaR_0p2_akPu%d_20150331.root",radius)); Data_matched= (TTree*)fData->Get("matchedJets"); Data_unmatched = (TTree*)fData->Get("unmatchedPFJets"); MC_matched = (TTree*)fMC->Get("matchedJets"); MC_unmatched = (TTree*)fMC->Get("unmatchedPFJets"); } // TH2F* hData_eMaxSumcand_calopfpt_ptselection[ptSelection]; // TH2F* hMC_eMaxSumcand_calopfpt_ptselection[ptSelection]; // TH2F* hMC_eMaxSumcand_calopfpt_refptselection[ptSelection]; // TCanvas * ceMaxSumcand [ptSelection]; TLine * CutA_1 = new TLine(0.5, 0.05, 0.85, 0.9); CutA_1->SetLineStyle(2); CutA_1->SetLineWidth(2); CutA_1->SetLineColor(kRed); TLine * CutA_2 = new TLine(0.85, 0.9, 0.85, 5); CutA_2->SetLineStyle(2); CutA_2->SetLineWidth(2); CutA_2->SetLineColor(kRed); TLine * CutA_3 = new TLine(0, 0.05, 0.5, 0.05); CutA_3->SetLineStyle(2); CutA_3->SetLineWidth(2); CutA_3->SetLineColor(kRed); TH2F* hData_eMaxSumcand_calopfpt_ptselection_jet55[ptSelection]; TH2F* hMC_eMaxSumcand_calopfpt_ptselection_jet55[ptSelection]; TH2F* hMC_eMaxSumcand_calopfpt_refptselection_jet55[ptSelection]; TH2F* hData_eMaxSumcand_calopfpt_ptselection_jet65[ptSelection]; TH2F* hMC_eMaxSumcand_calopfpt_ptselection_jet65[ptSelection]; TH2F* hMC_eMaxSumcand_calopfpt_refptselection_jet65[ptSelection]; TH2F* hData_eMaxSumcand_calopfpt_ptselection_jet80[ptSelection]; TH2F* hMC_eMaxSumcand_calopfpt_ptselection_jet80[ptSelection]; TH2F* hMC_eMaxSumcand_calopfpt_refptselection_jet80[ptSelection]; TH2F* hData_unmatch_eMaxSumcand_calopfpt_ptselection_jet55[ptSelection]; TH2F* hMC_unmatch_eMaxSumcand_calopfpt_ptselection_jet55[ptSelection]; TH2F* hMC_unmatch_eMaxSumcand_calopfpt_refptselection_jet55[ptSelection]; TH2F* hData_unmatch_eMaxSumcand_calopfpt_ptselection_jet65[ptSelection]; TH2F* hMC_unmatch_eMaxSumcand_calopfpt_ptselection_jet65[ptSelection]; TH2F* hMC_unmatch_eMaxSumcand_calopfpt_refptselection_jet65[ptSelection]; TH2F* hData_unmatch_eMaxSumcand_calopfpt_ptselection_jet80[ptSelection]; TH2F* hMC_unmatch_eMaxSumcand_calopfpt_ptselection_jet80[ptSelection]; TH2F* hMC_unmatch_eMaxSumcand_calopfpt_refptselection_jet80[ptSelection]; for(int a = 0;a<ptSelection; ++a) { hData_eMaxSumcand_calopfpt_ptselection_jet55[a] = new TH2F(Form("hData_eMaxSumcand_calopfpt_ptselection_jet55_%d",a),"",100, 0, 2.5, 100, 0, 5); hMC_eMaxSumcand_calopfpt_ptselection_jet55[a] = new TH2F(Form("hMC_eMaxSumcand_calopfpt_ptselection_jet55_%d",a),"",100, 0, 2.5, 100, 0, 5); hMC_eMaxSumcand_calopfpt_refptselection_jet55[a] = new TH2F(Form("hMC_eMaxSumcand_calopfpt_refptselection_jet55_%d",a),"",100, 0, 2.5, 100, 0, 5); hData_unmatch_eMaxSumcand_calopfpt_ptselection_jet55[a] = new TH2F(Form("hData_unmatch_eMaxSumcand_calopfpt_ptselection_jet55_%d",a),"",100, 0, 2.5, 100, 0, 5); hMC_unmatch_eMaxSumcand_calopfpt_ptselection_jet55[a] = new TH2F(Form("hMC_unmatch_eMaxSumcand_calopfpt_ptselection_jet55_%d",a),"",100, 0, 2.5, 100, 0, 5); hMC_unmatch_eMaxSumcand_calopfpt_refptselection_jet55[a] = new TH2F(Form("hMC_unmatch_eMaxSumcand_calopfpt_refptselection_jet55_%d",a),"",100, 0, 2.5, 100, 0, 5); hData_eMaxSumcand_calopfpt_ptselection_jet65[a] = new TH2F(Form("hData_eMaxSumcand_calopfpt_ptselection_jet65_%d",a),"",100, 0, 2.5, 100, 0, 5); hMC_eMaxSumcand_calopfpt_ptselection_jet65[a] = new TH2F(Form("hMC_eMaxSumcand_calopfpt_ptselection_jet65_%d",a),"",100, 0, 2.5, 100, 0, 5); hMC_eMaxSumcand_calopfpt_refptselection_jet65[a] = new TH2F(Form("hMC_eMaxSumcand_calopfpt_refptselection_jet65_%d",a),"",100, 0, 2.5, 100, 0, 5); hData_unmatch_eMaxSumcand_calopfpt_ptselection_jet65[a] = new TH2F(Form("hData_unmatch_eMaxSumcand_calopfpt_ptselection_jet65_%d",a),"",100, 0, 2.5, 100, 0, 5); hMC_unmatch_eMaxSumcand_calopfpt_ptselection_jet65[a] = new TH2F(Form("hMC_unmatch_eMaxSumcand_calopfpt_ptselection_jet65_%d",a),"",100, 0, 2.5, 100, 0, 5); hMC_unmatch_eMaxSumcand_calopfpt_refptselection_jet65[a] = new TH2F(Form("hMC_unmatch_eMaxSumcand_calopfpt_refptselection_jet65_%d",a),"",100, 0, 2.5, 100, 0, 5); hData_eMaxSumcand_calopfpt_ptselection_jet80[a] = new TH2F(Form("hData_eMaxSumcand_calopfpt_ptselection_jet80_%d",a),"",100, 0, 2.5, 100, 0, 5); hMC_eMaxSumcand_calopfpt_ptselection_jet80[a] = new TH2F(Form("hMC_eMaxSumcand_calopfpt_ptselection_jet80_%d",a),"",100, 0, 2.5, 100, 0, 5); hMC_eMaxSumcand_calopfpt_refptselection_jet80[a] = new TH2F(Form("hMC_eMaxSumcand_calopfpt_refptselection_jet80_%d",a),"",100, 0, 2.5, 100, 0, 5); hData_unmatch_eMaxSumcand_calopfpt_ptselection_jet80[a] = new TH2F(Form("hData_unmatch_eMaxSumcand_calopfpt_ptselection_jet80_%d",a),"",100, 0, 2.5, 100, 0, 5); hMC_unmatch_eMaxSumcand_calopfpt_ptselection_jet80[a] = new TH2F(Form("hMC_unmatch_eMaxSumcand_calopfpt_ptselection_jet80_%d",a),"",100, 0, 2.5, 100, 0, 5); hMC_unmatch_eMaxSumcand_calopfpt_refptselection_jet80[a] = new TH2F(Form("hMC_unmatch_eMaxSumcand_calopfpt_refptselection_jet80_%d",a),"",100, 0, 2.5, 100, 0, 5); } // 1 - Data, 2 - MC Float_t pfpt_1[1000], pfpt_2[1000]; Float_t pfrefpt_2[1000]; Float_t calopt_1[1000], calopt_2[1000]; Int_t npf_1, npf_2; Int_t isCaloMatch_1[1000], isCaloMatch_2[1000]; Float_t eMax_1[1000], eMax_2[1000]; Float_t chMax_1[1000], chMax_2[1000]; Float_t neMax_1[1000], neMax_2[1000]; Float_t phMax_1[1000], phMax_2[1000]; Float_t muMax_1[1000], muMax_2[1000]; Float_t trMax_1[1000], trMax_2[1000]; Float_t eSum_1[1000], eSum_2[1000]; Float_t chSum_1[1000], chSum_2[1000]; // Float_t trSum_1[1000], trSum_2[1000]; Float_t phSum_1[1000], phSum_2[1000]; Float_t neSum_1[1000], neSum_2[1000]; Float_t muSum_1[1000], muSum_2[1000]; Int_t jet55_1, jet65_1, jet80_1; Int_t jet55_p_1, jet65_p_1, jet80_p_1; Int_t jet55_2, jet65_2, jet80_2; Int_t jet55_p_2; Float_t pthat_2; Double_t weight; Int_t subid_2[1000]; Int_t hiBin_1, hiBin_2; Float_t eta_1[1000], eta_2[1000]; Float_t pfrawpt_1[1000], pfrawpt_2[1000]; Int_t nref_2; Int_t pfrefidx_2[1000]; //! REF -> PF match index Float_t refdrjt_2[1000]; if(ntuple == "Pawan"){ Data_matched->SetBranchAddress("npf", &npf_1); Data_matched->SetBranchAddress("isCaloMatch", &isCaloMatch_1); Data_matched->SetBranchAddress("calopt",&calopt_1); Data_matched->SetBranchAddress("pfpt",&pfpt_1); Data_matched->SetBranchAddress("eMax",&eMax_1); Data_matched->SetBranchAddress("chMax",&chMax_1); Data_matched->SetBranchAddress("trMax",&trMax_1); Data_matched->SetBranchAddress("neMax",&neMax_1); Data_matched->SetBranchAddress("phMax",&phMax_1); Data_matched->SetBranchAddress("muMax",&muMax_1); Data_matched->SetBranchAddress("chSum",&chSum_1); // Data_matched->SetBranchAddress("trSum",&trSum_1); Data_matched->SetBranchAddress("phSum",&phSum_1); Data_matched->SetBranchAddress("neSum",&neSum_1); Data_matched->SetBranchAddress("muSum",&muSum_1); Data_matched->SetBranchAddress("hiBin",&hiBin_1); Data_matched->SetBranchAddress("jet55",&jet55_1); Data_matched->SetBranchAddress("jet65",&jet65_1); Data_matched->SetBranchAddress("jet80",&jet80_1); Data_matched->SetBranchAddress("jet55_prescl",&jet55_p_1); Data_matched->SetBranchAddress("jet65_prescl",&jet65_p_1); Data_matched->SetBranchAddress("jet80_prescl",&jet80_p_1); Data_matched->SetBranchAddress("pfeta",&eta_1); Data_matched->SetBranchAddress("pfrawpt",&pfrawpt_1); } #if 0 if(ntuple == "Raghav") { Data_matched->SetBranchAddress("calopt",&calopt_1); Data_matched->SetBranchAddress("pfpt",&pfpt_1); Data_matched->SetBranchAddress("eMax",&eMax_1); Data_matched->SetBranchAddress("chMax",&chMax_1); Data_matched->SetBranchAddress("trMax",&trMax_1); Data_matched->SetBranchAddress("neMax",&neMax_1); Data_matched->SetBranchAddress("phMax",&phMax_1); Data_matched->SetBranchAddress("chSum",&chSum_1); // Data_matched->SetBranchAddress("trSum",&trSum_1); Data_matched->SetBranchAddress("phSum",&phSum_1); Data_matched->SetBranchAddress("neSum",&neSum_1); Data_matched->SetBranchAddress("muSum",&muSum_1); Data_matched->SetBranchAddress("hiBin",&hiBin_1); Data_matched->SetBranchAddress("jet55",&jet55_1); Data_matched->SetBranchAddress("jet65",&jet65_1); Data_matched->SetBranchAddress("jet80",&jet80_1); Data_matched->SetBranchAddress("jet55_prescl",&jet55_p_1); Data_matched->SetBranchAddress("jet65_prescl",&jet65_p_1); Data_matched->SetBranchAddress("jet80_prescl",&jet80_p_1); Data_matched->SetBranchAddress("pfeta",&eta_1); Data_matched->SetBranchAddress("pfrawpt",&pfrawpt_1); Data_unmatched->SetBranchAddress("pfpt",&pfpt_1); Data_unmatched->SetBranchAddress("eMax",&eMax_1); Data_unmatched->SetBranchAddress("chMax",&chMax_1); Data_unmatched->SetBranchAddress("trMax",&trMax_1); Data_unmatched->SetBranchAddress("chSum",&chSum_1); // Data_unmatched->SetBranchAddress("trSum",&trSum_1); Data_unmatched->SetBranchAddress("phSum",&phSum_1); Data_unmatched->SetBranchAddress("neSum",&neSum_1); Data_unmatched->SetBranchAddress("muSum",&muSum_1); Data_unmatched->SetBranchAddress("hiBin",&hiBin_1); Data_unmatched->SetBranchAddress("jet55",&jet55_1); Data_unmatched->SetBranchAddress("jet65",&jet65_1); Data_unmatched->SetBranchAddress("jet80",&jet80_1); Data_unmatched->SetBranchAddress("jet55_prescl",&jet55_p_1); Data_unmatched->SetBranchAddress("jet65_prescl",&jet65_p_1); Data_unmatched->SetBranchAddress("jet80_prescl",&jet80_p_1); Data_unmatched->SetBranchAddress("pfeta",&eta_1); Data_unmatched->SetBranchAddress("pfrawpt",&pfrawpt_1); } #endif MC_matched->SetBranchAddress("npf", &npf_2); MC_matched->SetBranchAddress("nref", &nref_2); MC_matched->SetBranchAddress("pfrefidx",&pfrefidx_2); MC_matched->SetBranchAddress("refdrjt",&refdrjt_2); MC_matched->SetBranchAddress("pthat", &pthat_2); MC_matched->SetBranchAddress("isCaloMatch", &isCaloMatch_2); MC_matched->SetBranchAddress("calopt",&calopt_2); MC_matched->SetBranchAddress("pfpt",&pfpt_2); MC_matched->SetBranchAddress("eMax",&eMax_2); MC_matched->SetBranchAddress("chMax",&chMax_2); MC_matched->SetBranchAddress("trMax",&trMax_2); MC_matched->SetBranchAddress("neMax",&neMax_2); MC_matched->SetBranchAddress("phMax",&phMax_2); MC_matched->SetBranchAddress("muMax",&muMax_2); MC_matched->SetBranchAddress("chSum",&chSum_2); // MC_matched->SetBranchAddress("trSum",&trSum_2); MC_matched->SetBranchAddress("phSum",&phSum_2); MC_matched->SetBranchAddress("neSum",&neSum_2); MC_matched->SetBranchAddress("muSum",&muSum_2); MC_matched->SetBranchAddress("hiBin",&hiBin_2); if(ntuple == "Pawan") MC_matched->SetBranchAddress("refpt",&pfrefpt_2); //if(ntuple == "Raghav") MC_matched->SetBranchAddress("pfrefpt",&pfrefpt_2); MC_matched->SetBranchAddress("jet55",&jet55_2); MC_matched->SetBranchAddress("jet65",&jet65_2); MC_matched->SetBranchAddress("jet80",&jet80_2); MC_matched->SetBranchAddress("weight", &weight); MC_matched->SetBranchAddress("subid", &subid_2); MC_matched->SetBranchAddress("jet55_prescl",&jet55_p_2); MC_matched->SetBranchAddress("pfeta",&eta_2); MC_matched->SetBranchAddress("pfrawpt",&pfrawpt_2); #if 0 if(ntuple == "Raghav"){ MC_unmatched->SetBranchAddress("pfpt",&pfpt_2); MC_unmatched->SetBranchAddress("eMax",&eMax_2); MC_unmatched->SetBranchAddress("chMax",&chMax_2); MC_unmatched->SetBranchAddress("trMax",&trMax_2); MC_unmatched->SetBranchAddress("chSum",&chSum_2); // MC_unmatched->SetBranchAddress("trSum",&trSum_2); MC_unmatched->SetBranchAddress("phSum",&phSum_2); MC_unmatched->SetBranchAddress("neSum",&neSum_2); MC_unmatched->SetBranchAddress("muSum",&muSum_2); MC_unmatched->SetBranchAddress("hiBin",&hiBin_2); if(ntuple == "Pawan") MC_unmatched->SetBranchAddress("refpt",&pfrefpt_2); if(ntuple == "Raghav") MC_unmatched->SetBranchAddress("pfrefpt",&pfrefpt_2); MC_unmatched->SetBranchAddress("jet55",&jet55_2); MC_unmatched->SetBranchAddress("jet65",&jet65_2); MC_unmatched->SetBranchAddress("jet80",&jet80_2); MC_unmatched->SetBranchAddress("weight", & weight); MC_unmatched->SetBranchAddress("subid", &subid_2); MC_unmatched->SetBranchAddress("jet55_prescl",&jet55_p_2); MC_unmatched->SetBranchAddress("pfeta",&eta_2); MC_unmatched->SetBranchAddress("pfrawpt",&pfrawpt_2); } #endif // data loop // test mode is Short=1 if(Short==1){ entries=TestEntries; } else { entries = Data_matched->GetEntries(); } //entries = 1000; Float_t Jet55_prescl = 2.0475; // get the random value for smear systematics, TRandom rnd, value per jet = rnd.Gaus(0,1); TRandom rnd; TH1F * htest = new TH1F("htest","",nbins_pt, boundaries_pt); cout<<"matched Data ntuple "<<endl; for(long nentry = 0; nentry < entries; ++nentry ){ if(nentry%100000 == 0) cout<<nentry<<"/"<<entries<<endl; Data_matched->GetEntry(nentry); Int_t cBin = findBin(hiBin_1); if(cBin == -1 || cBin >= nbins_cent) continue; Float_t wght = 1; // if(etaBoundary == 1.0){ // if(radius == 2) wght = R2nCorr[cBin][htest->FindBin(pfpt_1)]; // if(radius == 3) wght = R3nCorr[cBin][htest->FindBin(pfpt_1)]; // if(radius == 4) wght = R4nCorr[cBin][htest->FindBin(pfpt_1)]; // } for(int g = 0; g<npf_1; ++g){ // jet loop if(isSymm && TMath::Abs(eta_1[g]) > (Float_t)etaHigh/10) continue; if(!isSymm && (TMath::Abs(eta_1[g]) < (Float_t)etaLow/10 || TMath::Abs(eta_1[g]) > (Float_t)etaHigh/10)) continue; Float_t Sumcand = chSum_1[g] + phSum_1[g] + neSum_1[g] + muSum_1[g]; // cout<<"find my ptbin with pfpt_1[g]: "<<pfpt_1[g]<<endl; int ptbin=findPtBin(pfpt_1[g]); // cout<<"ptbin is: "<<ptbin<<endl; if(ptbin==-1){ continue; } if(isCaloMatch_1[g] == 1){ if(jet55_1 == 1 && jet65_1 == 0 && jet80_1 == 0 ) { hData_eMaxSumcand_calopfpt_ptselection_jet55[ptbin]->Fill(calopt_1[g]/pfpt_1[g],eMax_1[g]/Sumcand); // hData_Jet55_noCut->Fill(pfpt_1[g], Jet55_prescl* wght); // hpbpb_Data_Jet55_noCut[cBin]->Fill(pfpt_1[g], Jet55_prescl* wght); } if(jet65_1 == 1 && jet80_1 == 0 ) { hData_eMaxSumcand_calopfpt_ptselection_jet65[ptbin]->Fill(calopt_1[g]/pfpt_1[g],eMax_1[g]/Sumcand); } if(jet80_1 == 1) { hData_eMaxSumcand_calopfpt_ptselection_jet80[ptbin]->Fill(calopt_1[g]/pfpt_1[g],eMax_1[g]/Sumcand); } } // fill the histograms with unmatched Jets if(isCaloMatch_1[g] ==0) { if(jet55_1 == 1 && jet65_1 == 0 && jet80_1 == 0 ) { hData_unmatch_eMaxSumcand_calopfpt_ptselection_jet55[ptbin]->Fill(0.,eMax_1[g]/Sumcand); } if(jet65_1 == 1 && jet80_1 == 0 ) { hData_unmatch_eMaxSumcand_calopfpt_ptselection_jet65[ptbin]->Fill(0.,eMax_1[g]/Sumcand); } if(jet80_1 == 1) { hData_unmatch_eMaxSumcand_calopfpt_ptselection_jet80[ptbin]->Fill(0.,eMax_1[g]/Sumcand); } } // end caloMatch loop // } // end pfptbin check loop }// jet loop }// data ntuple loop #if 0 if(ntuple == "Raghav"){ // data unmatched loop: entries = Data_unmatched->GetEntries(); //entries = 1000; cout<<"Unmatched Data ntuple "<<endl; for(long nentry = 0; nentry < entries; ++nentry ){ if(nentry%100000 == 0) cout<<nentry<<"/"<<entries<<endl; Data_unmatched->GetEntry(nentry); Int_t cBin = findBin(hiBin_1); if(cBin == -1 || cBin >= nbins_cent) continue; if(isSymm && TMath::Abs(eta_1) > (Float_t)etaHigh/10) continue; if(!isSymm && (TMath::Abs(eta_1) < (Float_t)etaLow/10 || TMath::Abs(eta_1) > (Float_t)etaHigh/10)) continue; Float_t wght = 1; // if(etaBoundary == 1.0){ // if(radius == 2) wght = R2nCorr[cBin][htest->FindBin(pfpt_1)]; // if(radius == 3) wght = R3nCorr[cBin][htest->FindBin(pfpt_1)]; // if(radius == 4) wght = R4nCorr[cBin][htest->FindBin(pfpt_1)]; // } Float_t Sumcand = chSum_1 + phSum_1 + neSum_1 + muSum_1; if(jet55_1 == 1 && jet65_1 == 0 && jet80_1 == 0 ) { hData_unmatched_Jet55_noCut->Fill(pfpt_1, Jet55_prescl*wght); hpbpb_Data_Jet55_noCut[cBin]->Fill(pfpt_1, Jet55_prescl*wght); } if(jet65_1 == 1 && jet80_1 == 0 ) { hData_unmatched_Jet65_noCut->Fill(pfpt_1, wght); hpbpb_Data_Jet65_noCut[cBin]->Fill(pfpt_1, wght); } if(jet80_1 == 1) { hData_unmatched_Jet80_noCut->Fill(pfpt_1, wght); hpbpb_Data_Jet80_noCut[cBin]->Fill(pfpt_1, wght); } }// data ntuple loop }// only for different Raghav's ntuple #endif if(Short==1){ entries=TestEntries; } else { entries = MC_matched->GetEntries(); } //entries = 1000; // MC loop cout<<" looking at matched MC ntuple "<<endl; for(long nentry = 0; nentry < entries; ++nentry){ if(nentry%100000 == 0) cout<<nentry<<"/"<<entries<<endl; MC_matched->GetEntry(nentry); Int_t cBin = findBin(hiBin_2); if(cBin == -1 || cBin >= nbins_cent) continue; for(int g = 0; g<npf_2; ++g){ Float_t Sumcand = chSum_2[g] + phSum_2[g] + neSum_2[g] + muSum_2[g]; int refid = -1; if(pfpt_2[g] > 2 * pthat_2) continue; refid = pfrefidx_2[g]; if(subid_2[refid] != 0 || fabs(refdrjt_2[refid]) > kdelrcut) continue; if(refid < 0) continue; if(isSymm && TMath::Abs(eta_2[g]) > (Float_t)etaHigh/10) continue; if(!isSymm && (TMath::Abs(eta_2[g]) < (Float_t)etaLow/10 || TMath::Abs(eta_2[g]) > (Float_t)etaHigh/10)) continue; int ptbin=findPtBin(pfpt_2[g]); int refptbin=findPtBin(pfrefpt_2[refid]); if(ptbin==-1){ continue; } if(isCaloMatch_2[g] == 1){ // hpbpb_gen[cBin]->Fill(pfrefpt_2[refid], weight); // hpbpb_reco[cBin]->Fill(pfpt_2[g], weight); // hpbpb_matrix[cBin]->Fill(pfrefpt_2[refid], pfpt_2[g], weight); // hpbpb_MC_noCut[cBin]->Fill(pfrefpt_2[refid], weight); if(jet55_2 == 1 && jet65_2==0 && jet80_2 == 0){ hMC_eMaxSumcand_calopfpt_ptselection_jet55[ptbin]->Fill(calopt_2[g]/pfpt_2[g],eMax_2[g]/Sumcand); if(ptbin==refptbin){ hMC_eMaxSumcand_calopfpt_refptselection_jet55[ptbin]->Fill(calopt_2[g]/pfpt_2[g],eMax_2[g]/Sumcand); } // hMC_Jet55_noCut->Fill(pfrefpt_2[refid], weight); // hpbpb_MC_Jet55_noCut[cBin]->Fill(pfrefpt_2[refid],weight); } if(jet65_2 == 1 && jet80_2 == 0){ hMC_eMaxSumcand_calopfpt_ptselection_jet65[ptbin]->Fill(calopt_2[g]/pfpt_2[g],eMax_2[g]/Sumcand); if(ptbin==refptbin){ hMC_eMaxSumcand_calopfpt_refptselection_jet65[ptbin]->Fill(calopt_2[g]/pfpt_2[g],eMax_2[g]/Sumcand); } } if(jet80_2 == 1){ hMC_eMaxSumcand_calopfpt_ptselection_jet80[ptbin]->Fill(calopt_2[g]/pfpt_2[g],eMax_2[g]/Sumcand); if(ptbin==refptbin){ hMC_eMaxSumcand_calopfpt_refptselection_jet80[ptbin]->Fill(calopt_2[g]/pfpt_2[g],eMax_2[g]/Sumcand); } }// jet 80 selection }// matched jets if(isCaloMatch_2[g] == 0){ // hpbpb_MC_noCut[cBin]->Fill(pfrefpt_2[refid], weight); if(jet55_2 == 1 && jet65_2==0 && jet80_2 == 0){ hMC_unmatch_eMaxSumcand_calopfpt_ptselection_jet55[ptbin]->Fill(0.,eMax_2[g]/Sumcand); if(ptbin==refptbin){ hMC_unmatch_eMaxSumcand_calopfpt_refptselection_jet55[ptbin]->Fill(0.,eMax_2[g]/Sumcand); } } if(jet65_2 == 1 && jet80_2 == 0){ hMC_unmatch_eMaxSumcand_calopfpt_ptselection_jet65[ptbin]->Fill(0.,eMax_2[g]/Sumcand); if(ptbin==refptbin){ hMC_unmatch_eMaxSumcand_calopfpt_refptselection_jet65[ptbin]->Fill(0.,eMax_2[g]/Sumcand); } } if(jet80_2 == 1){ hMC_unmatch_eMaxSumcand_calopfpt_ptselection_jet80[ptbin]->Fill(0.,eMax_2[g]/Sumcand); if(ptbin==refptbin){ hMC_unmatch_eMaxSumcand_calopfpt_refptselection_jet80[ptbin]->Fill(0.,eMax_2[g]/Sumcand); } } }//unmatched jets }// jet loop }// mc ntuple loop #if 0 if(ntuple == "Raghav"){ entries = MC_unmatched->GetEntries(); //entries = 1000; // MC loop cout<<" looking at unmatched MC ntuple"<<endl; for(long nentry = 0; nentry < entries; ++nentry){ if(nentry%100000 == 0) cout<<nentry<<"/"<<entries<<endl; MC_unmatched->GetEntry(nentry); if(subid_2 != 0) continue; Int_t cBin = findBin(hiBin_2); if(cBin == -1 || cBin >= nbins_cent) continue; Float_t Sumcand = chSum_2 + phSum_2 + neSum_2 + muSum_2; if(isSymm && TMath::Abs(eta_2) > (Float_t)etaHigh/10) continue; if(!isSymm && (TMath::Abs(eta_2) < (Float_t)etaLow/10 || TMath::Abs(eta_2) > (Float_t)etaHigh/10)) continue; weight = (Float_t)weight * 1e-5; if(eMax_2/Sumcand < 0.05 ){ hpbpb_gen[cBin]->Fill(pfrefpt_2, weight); hpbpb_reco[cBin]->Fill(pfpt_2, weight); hpbpb_matrix[cBin]->Fill(pfrefpt_2, pfpt_2, weight); } hpbpb_MC_noCut[cBin]->Fill(pfrefpt_2, weight); if(jet55_2 == 1 && jet65_2==0 && jet80_2 == 0){ hpbpb_MC_Jet55_noCut[cBin]->Fill(pfrefpt_2,weight); hMC_unmatched_Jet55_noCut->Fill(pfrefpt_2, weight); if(eMax_2/Sumcand < 0.05 ){ hpbpb_Jet55_gen[cBin]->Fill(pfrefpt_2, weight); hpbpb_Jet55_GenSmear[cBin]->Fill(pfrefpt_2 + rnd.Gaus(0,1), weight); hpbpb_Jet55_reco[cBin]->Fill(pfpt_2, weight); hpbpb_Jet55_RecoSmear[cBin]->Fill(pfpt_2 + rnd.Gaus(0,1), weight); hpbpb_Jet55_raw[cBin]->Fill(pfrawpt_2, weight); hpbpb_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); hpbpb_matrix_HLT_GenSmear[cBin]->Fill(pfrefpt_2 + rnd.Gaus(0,1), pfpt_2, weight); hpbpb_matrix_HLT_RecoSmear[cBin]->Fill(pfrefpt_2, pfpt_2 + rnd.Gaus(0,1), weight); hpbpb_matrix_HLT_BothSmear[cBin]->Fill(pfrefpt_2 + rnd.Gaus(0,1), pfpt_2 + rnd.Gaus(0,1), weight); hpbpb_Jet55_gen2pSmear[cBin]->Fill(pfrefpt_2 * (1. + 0.02/nbins_cent*(nbins_cent-cBin)), weight); hpbpb_matrix_HLT_gen2pSmear[cBin]->Fill(pfrefpt_2 * (1. + 0.02/nbins_cent*(nbins_cent-cBin)), pfpt_2, weight); hMC_unmatched_Jet55_CutA->Fill(pfrefpt_2, weight); hpbpb_anaBin_Jet55_gen[cBin]->Fill(pfrefpt_2, weight); hpbpb_anaBin_Jet55_reco[cBin]->Fill(pfpt_2, weight); hpbpb_anaBin_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); } else hMC_unmatched_Jet55_CutA_rej->Fill(pfrefpt_2, weight); } if(jet65_2 == 1 && jet80_2 == 0){ hpbpb_MC_Jet65_noCut[cBin]->Fill(pfrefpt_2,weight); hMC_unmatched_Jet65_noCut->Fill(pfrefpt_2, weight); if(eMax_2/Sumcand < 0.05 ){ hpbpb_Jet65_gen[cBin]->Fill(pfrefpt_2, weight); hpbpb_Jet65_GenSmear[cBin]->Fill(pfrefpt_2 + rnd.Gaus(0,1), weight); hpbpb_Jet65_reco[cBin]->Fill(pfpt_2, weight); hpbpb_Jet65_RecoSmear[cBin]->Fill(pfpt_2 + rnd.Gaus(0,1), weight); hpbpb_Jet65_raw[cBin]->Fill(pfrawpt_2, weight); hpbpb_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); hpbpb_matrix_HLT_GenSmear[cBin]->Fill(pfrefpt_2 + rnd.Gaus(0,1), pfpt_2, weight); hpbpb_matrix_HLT_RecoSmear[cBin]->Fill(pfrefpt_2, pfpt_2 + rnd.Gaus(0,1), weight); hpbpb_matrix_HLT_BothSmear[cBin]->Fill(pfrefpt_2 + rnd.Gaus(0,1), pfpt_2 + rnd.Gaus(0,1), weight); hpbpb_Jet65_gen2pSmear[cBin]->Fill(pfrefpt_2 * (1. + 0.02/nbins_cent*(nbins_cent-cBin)), weight); hpbpb_matrix_HLT_gen2pSmear[cBin]->Fill(pfrefpt_2 * (1. + 0.02/nbins_cent*(nbins_cent-cBin)), pfpt_2, weight); hMC_unmatched_Jet65_CutA->Fill(pfrefpt_2, weight); hpbpb_anaBin_Jet65_gen[cBin]->Fill(pfrefpt_2, weight); hpbpb_anaBin_Jet65_reco[cBin]->Fill(pfpt_2, weight); hpbpb_anaBin_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); } else hMC_unmatched_Jet65_CutA_rej->Fill(pfrefpt_2); } if(jet80_2 == 1){ hpbpb_MC_Jet80_noCut[cBin]->Fill(pfrefpt_2,weight); hMC_unmatched_Jet80_noCut->Fill(pfrefpt_2, weight); if(eMax_2/Sumcand < 0.05 ){ hpbpb_Jet80_gen[cBin]->Fill(pfrefpt_2, weight); hpbpb_Jet80_GenSmear[cBin]->Fill(pfrefpt_2 + rnd.Gaus(0,1), weight); hpbpb_Jet80_reco[cBin]->Fill(pfpt_2, weight); hpbpb_Jet80_RecoSmear[cBin]->Fill(pfpt_2 + rnd.Gaus(0,1), weight); hpbpb_Jet80_raw[cBin]->Fill(pfrawpt_2, weight); hpbpb_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); hpbpb_matrix_HLT_GenSmear[cBin]->Fill(pfrefpt_2 + rnd.Gaus(0,1), pfpt_2, weight); hpbpb_matrix_HLT_RecoSmear[cBin]->Fill(pfrefpt_2, pfpt_2 + rnd.Gaus(0,1), weight); hpbpb_matrix_HLT_BothSmear[cBin]->Fill(pfrefpt_2 + rnd.Gaus(0,1), pfpt_2 + rnd.Gaus(0,1), weight); hpbpb_Jet80_gen2pSmear[cBin]->Fill(pfrefpt_2 * (1. + 0.02/nbins_cent*(nbins_cent-cBin)), weight); hpbpb_matrix_HLT_gen2pSmear[cBin]->Fill(pfrefpt_2 * (1. + 0.02/nbins_cent*(nbins_cent-cBin)), pfpt_2, weight); hMC_unmatched_Jet80_CutA->Fill(pfrefpt_2, weight); hpbpb_anaBin_Jet80_gen[cBin]->Fill(pfrefpt_2, weight); hpbpb_anaBin_Jet80_reco[cBin]->Fill(pfpt_2, weight); hpbpb_anaBin_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); }else hMC_unmatched_Jet80_CutA_rej->Fill(pfrefpt_2, weight); } }// mc unmatched ntuple loop } #endif TFile fout(Form("%s_TTree_PbPb_Data_MC_finebins_%s_R0p%d_eMaxOverSumCand.root",ntuple,etaWidth,radius),"RECREATE"); fout.cd(); // hpbpb_MC_noCut[i]->Write(); for(int a = 0;a<ptSelection; ++a) { hData_eMaxSumcand_calopfpt_ptselection_jet55[a]->Add(hData_unmatch_eMaxSumcand_calopfpt_ptselection_jet55[a]); hMC_eMaxSumcand_calopfpt_ptselection_jet55[a]->Add(hMC_unmatch_eMaxSumcand_calopfpt_ptselection_jet55[a]); hMC_eMaxSumcand_calopfpt_refptselection_jet55[a]->Add(hMC_unmatch_eMaxSumcand_calopfpt_refptselection_jet55[a]); hData_eMaxSumcand_calopfpt_ptselection_jet65[a]->Add(hData_unmatch_eMaxSumcand_calopfpt_ptselection_jet65[a]); hMC_eMaxSumcand_calopfpt_ptselection_jet65[a]->Add(hMC_unmatch_eMaxSumcand_calopfpt_ptselection_jet65[a]); hMC_eMaxSumcand_calopfpt_refptselection_jet65[a]->Add(hMC_unmatch_eMaxSumcand_calopfpt_refptselection_jet65[a]); hData_eMaxSumcand_calopfpt_ptselection_jet80[a]->Add(hData_unmatch_eMaxSumcand_calopfpt_ptselection_jet80[a]); hMC_eMaxSumcand_calopfpt_ptselection_jet80[a]->Add(hMC_unmatch_eMaxSumcand_calopfpt_ptselection_jet80[a]); hMC_eMaxSumcand_calopfpt_refptselection_jet80[a]->Add(hMC_unmatch_eMaxSumcand_calopfpt_refptselection_jet80[a]); hData_eMaxSumcand_calopfpt_ptselection_jet55[a]->Write(); hMC_eMaxSumcand_calopfpt_ptselection_jet55[a]->Write(); hMC_eMaxSumcand_calopfpt_refptselection_jet55[a]->Write(); hData_eMaxSumcand_calopfpt_ptselection_jet65[a]->Write(); hMC_eMaxSumcand_calopfpt_ptselection_jet65[a]->Write(); hMC_eMaxSumcand_calopfpt_refptselection_jet65[a]->Write(); hData_eMaxSumcand_calopfpt_ptselection_jet80[a]->Write(); hMC_eMaxSumcand_calopfpt_ptselection_jet80[a]->Write(); hMC_eMaxSumcand_calopfpt_refptselection_jet80[a]->Write(); } for(int a = 0;a<ptSelection; ++a) { ceMaxSumcand_jet55[a] = new TCanvas(Form("ceMaxSumcand_jet55_%d",a),"",1000,800); ceMaxSumcand_jet55[a]->Divide(3,1); ceMaxSumcand_jet55[a]->cd(1); ceMaxSumcand_jet55[a]->cd(1)->SetLogz(); hData_eMaxSumcand_calopfpt_ptselection_jet55[a]->SetXTitle("calopt/pfpt"); hData_eMaxSumcand_calopfpt_ptselection_jet55[a]->SetYTitle("eMax/(chSum+phSum+neSum+muSum)"); hData_eMaxSumcand_calopfpt_ptselection_jet55[a]->Draw("colz"); drawText(Form("%d < pfpt < %d", ptBoundary[a], ptBoundary[a+1]),0.2,0.7,14); drawText("Data - jet55 !jet65 !jet80",0.25,0.8,14); CutA_1->Draw(); CutA_2->Draw(); CutA_3->Draw(); ceMaxSumcand_jet55[a]->cd(2); ceMaxSumcand_jet55[a]->cd(2)->SetLogz(); hMC_eMaxSumcand_calopfpt_ptselection_jet55[a]->SetXTitle("calopt/pfpt"); hMC_eMaxSumcand_calopfpt_ptselection_jet55[a]->SetYTitle("eMax/(chSum+phSum+neSum+muSum)"); hMC_eMaxSumcand_calopfpt_ptselection_jet55[a]->Draw("colz"); drawText(Form("%d < pfpt < %d", ptBoundary[a], ptBoundary[a+1]),0.2,0.7,14); drawText("MC - jet55 !jet65 !jet80",0.25,0.8,14); CutA_1->Draw(); CutA_2->Draw(); CutA_3->Draw(); ceMaxSumcand_jet55[a]->cd(3); ceMaxSumcand_jet55[a]->cd(3)->SetLogz(); hMC_eMaxSumcand_calopfpt_refptselection_jet55[a]->SetXTitle("calopt/pfpt"); hMC_eMaxSumcand_calopfpt_refptselection_jet55[a]->SetYTitle("eMax/(chSum+phSum+neSum+muSum)"); hMC_eMaxSumcand_calopfpt_refptselection_jet55[a]->Draw("colz"); drawText(Form("%d < pfpt, refpt < %d", ptBoundary[a], ptBoundary[a+1]),0.2,0.7,14); drawText("MC - jet55 !jet65 !jet80",0.25,0.8,14); CutA_1->Draw(); CutA_2->Draw(); CutA_3->Draw(); ceMaxSumcand_jet55[a]->SaveAs(Form("Plots_eMaxOverSumCand/eMaxOverSumCand_calpfpt_PbPb_jet55_showingCut_fullstat_R0p%d_%d_ptrange_%d.pdf",radius, ptBoundary[a], ptBoundary[a+1]),"RECREATE"); ceMaxSumcand_jet65[a] = new TCanvas(Form("ceMaxSumcand_jet65_%d",a),"",1000,800); ceMaxSumcand_jet65[a]->Divide(3,1); ceMaxSumcand_jet65[a]->cd(1); ceMaxSumcand_jet65[a]->cd(1)->SetLogz(); hData_eMaxSumcand_calopfpt_ptselection_jet65[a]->SetXTitle("calopt/pfpt"); hData_eMaxSumcand_calopfpt_ptselection_jet65[a]->SetYTitle("eMax/(chSum+phSum+neSum+muSum)"); hData_eMaxSumcand_calopfpt_ptselection_jet65[a]->Draw("colz"); drawText(Form("%d < pfpt < %d", ptBoundary[a], ptBoundary[a+1]),0.2,0.7,14); drawText("Data - jet65 !jet80",0.25,0.8,14); CutA_1->Draw(); CutA_2->Draw(); CutA_3->Draw(); ceMaxSumcand_jet65[a]->cd(2); ceMaxSumcand_jet65[a]->cd(2)->SetLogz(); hMC_eMaxSumcand_calopfpt_ptselection_jet65[a]->SetXTitle("calopt/pfpt"); hMC_eMaxSumcand_calopfpt_ptselection_jet65[a]->SetYTitle("eMax/(chSum+phSum+neSum+muSum)"); hMC_eMaxSumcand_calopfpt_ptselection_jet65[a]->Draw("colz"); drawText(Form("%d < pfpt < %d", ptBoundary[a], ptBoundary[a+1]),0.2,0.7,14); drawText("MC - jet65 !jet80",0.25,0.8,14); CutA_1->Draw(); CutA_2->Draw(); CutA_3->Draw(); ceMaxSumcand_jet65[a]->cd(3); ceMaxSumcand_jet65[a]->cd(3)->SetLogz(); hMC_eMaxSumcand_calopfpt_refptselection_jet65[a]->SetXTitle("calopt/pfpt"); hMC_eMaxSumcand_calopfpt_refptselection_jet65[a]->SetYTitle("eMax/(chSum+phSum+neSum+muSum)"); hMC_eMaxSumcand_calopfpt_refptselection_jet65[a]->Draw("colz"); drawText(Form("%d < pfpt, refpt < %d", ptBoundary[a], ptBoundary[a+1]),0.2,0.7,14); drawText("MC - jet65 !jet80",0.25,0.8,14); CutA_1->Draw(); CutA_2->Draw(); CutA_3->Draw(); ceMaxSumcand_jet65[a]->SaveAs(Form("Plots_eMaxOverSumCand/eMaxOverSumCand_calpfpt_PbPb_jet65_showingCut_fullstat_R0p%d_%d_ptrange_%d.pdf",radius, ptBoundary[a], ptBoundary[a+1]),"RECREATE"); ceMaxSumcand_jet80[a] = new TCanvas(Form("ceMaxSumcand_jet80_%d",a),"",1000,800); ceMaxSumcand_jet80[a]->Divide(3,1); ceMaxSumcand_jet80[a]->cd(1); ceMaxSumcand_jet80[a]->cd(1)->SetLogz(); hData_eMaxSumcand_calopfpt_ptselection_jet80[a]->SetXTitle("calopt/pfpt"); hData_eMaxSumcand_calopfpt_ptselection_jet80[a]->SetYTitle("eMax/(chSum+phSum+neSum+muSum)"); hData_eMaxSumcand_calopfpt_ptselection_jet80[a]->Draw("colz"); drawText(Form("%d < pfpt < %d", ptBoundary[a], ptBoundary[a+1]),0.2,0.7,14); drawText("Data - jet80",0.25,0.8,14); CutA_1->Draw(); CutA_2->Draw(); CutA_3->Draw(); ceMaxSumcand_jet80[a]->cd(2); ceMaxSumcand_jet80[a]->cd(2)->SetLogz(); hMC_eMaxSumcand_calopfpt_ptselection_jet80[a]->SetXTitle("calopt/pfpt"); hMC_eMaxSumcand_calopfpt_ptselection_jet80[a]->SetYTitle("eMax/(chSum+phSum+neSum+muSum)"); hMC_eMaxSumcand_calopfpt_ptselection_jet80[a]->Draw("colz"); drawText(Form("%d < pfpt < %d", ptBoundary[a], ptBoundary[a+1]),0.2,0.7,14); drawText("MC - jet80",0.25,0.8,14); CutA_1->Draw(); CutA_2->Draw(); CutA_3->Draw(); ceMaxSumcand_jet80[a]->cd(3); ceMaxSumcand_jet80[a]->cd(3)->SetLogz(); hMC_eMaxSumcand_calopfpt_refptselection_jet80[a]->SetXTitle("calopt/pfpt"); hMC_eMaxSumcand_calopfpt_refptselection_jet80[a]->SetYTitle("eMax/(chSum+phSum+neSum+muSum)"); hMC_eMaxSumcand_calopfpt_refptselection_jet80[a]->Draw("colz"); drawText(Form("%d < pfpt, refpt < %d", ptBoundary[a], ptBoundary[a+1]),0.2,0.7,14); drawText("MC - jet80",0.25,0.8,14); CutA_1->Draw(); CutA_2->Draw(); CutA_3->Draw(); ceMaxSumcand_jet80[a]->SaveAs(Form("Plots_eMaxOverSumCand/eMaxOverSumCand_calpfpt_PbPb_jet80_showingCut_fullstat_R0p%d_%d_ptrange_%d.pdf",radius, ptBoundary[a], ptBoundary[a+1]),"RECREATE"); } }
void Class_Test() { //_data=data; Hist= new TH2D("Gaus_hist","Gaus_hist",50,-10,10,50,-10,10); Hist_PDF= new TH2D("Gaus_hist_PDF","Gaus_hist_PDF",50,-10,10,50,-10,10); Hist_Interpol= new TH2D("Gaus_hist_Interpol","Gaus_hist_Interpol",50,-10,10,50,-10,10); std::vector<Double_t> data (20000); std::vector<Double_t> points_x (10000); std::vector<Double_t> points_y (10000); std::vector<Double_t> weights (10000); for (int i=0;i<10000;i++) { points_x[i]=r.Gaus(0,2); points_y[i]=r.Gaus(0,4); //std::cout<< points_x[i] <<endl; data[2*i]=points_x[i]+points_y[i]; data[2*i+1]=points_x[i]-2*points_y[i]; //weights[i]=r.Rndm(); weights[i]=1; Hist->Fill(points_x[i]+points_y[i],points_x[i]-2*points_y[i],weights[i]); } int i_x,i_y; Double_t eval,interpol; TStopwatch w; w.Start(); A= new NDPdfTreeAllBin(data,"a",1,3,true,10000,2,weights,2,10,5); std::vector<double> X(2); Double_t res=0; Double_t res2=0; w.Print(); w.Start(); for (int i=1; i<=50; i++) { for (int j=1;j<=50;j++) { X[0] = Hist->GetXaxis()->GetBinCenter(i); X[1] = Hist->GetYaxis()->GetBinCenter(j); eval=A->evaluate(X.data()); interpol=A->Interpol(X.data()); //i_x=Hist->GetXaxis()->FindFixBin(X[0][i]); //i_y=Hist->GetYaxis()->FindFixBin(X[1][i]); //std::cout<<" i = " << i << " j = " << j << " eval = " << eval << " hist = " << Hist->GetBinContent(i,j)<< endl; Hist_PDF->SetBinContent(i,j,eval); Hist_Interpol->SetBinContent(i,j,interpol); //Double_t g= TMath::Gaus(X[0],100,4, true)*TMath::Gaus(X[1],100,4,true)*10000*Hist->GetXaxis()->GetBinWidth(i)*Hist->GetYaxis()->GetBinWidth(j); Double_t g=Hist->GetBinContent(i,j); res+=eval-g; if (g>0) res2+=(eval-g)*(eval-g)/g; cout<<"TEST"<<res2<<endl; } } w.Print(); Hist->Scale(1/Hist->Integral()); Hist_PDF->Scale(1/Hist_PDF->Integral()); Hist_Interpol->Scale(1/Hist_Interpol->Integral()); Hist->SetLineColor(kRed); Hist_PDF->SetLineColor(kBlue); Hist_Interpol->SetLineColor(kMagenta); cout <<"res=" << res << " res2= " <<res2<< " " <<res2/2500 <<endl; Hist->Draw("LEGO"); new TCanvas(); Hist_PDF->Draw("LEGO"); new TCanvas(); Hist_Interpol->Draw("LEGO"); }
void RAA_plot_yetkinCutEfficiency_minbias(char* etaWidth = (char*)"10_eta_18", Int_t radius = 4, Int_t etaLow = 10, Int_t etaHigh = 18) { TH1::SetDefaultSumw2(); // the cut is a 3 step cut based on the different value of the calopt/pfpt - copy the following lines into your loop (with the corresponding branch address set) // if(calopt/pfpt <= 0.5 && eMax/Sumcand < 0.05) hGood->Fill(); // if(calopt/pfpt > 0.5 && calopt/pfpt <= 0.85 && eMax/Sumcand < (18/7 *(Float_t)calopt_1/pfpt_1 - 9/7)) ) hGood->Fill(); // if(calopt/pfpt > 0.85 & eMax/Sumcand > 0.9) hGood->Fill(); cout<<"etaWidth = "<<etaWidth<<endl; bool isSymm = false; if(etaLow == etaHigh) isSymm = true; TFile * fData; fData = TFile::Open("/mnt/hadoop/cms/store/user/pawan/ntuples/JetRaa_akPu234_PbPb_MinBias.root"); TTree * Data_matched= (TTree*)fData->Get(Form("akPu%dJetAnalyzer/matchedJets",radius)); TTree * Data_unmatched = (TTree*)fData->Get(Form("akPu%dJetAnalyzer/unmatchedPFJets",radius)); // TTree * MC_matched = (TTree*)fMC->Get("matchedJets"); // TTree * MC_unmatched = (TTree*)fMC->Get("unmatchedPFJets"); // //get the spectra with the specific trigger object from the different files. // TH1F *hpbpb_Jet80_gen[nbins_cent],*hpbpb_Jet80_reco[nbins_cent]; // TH1F *hpbpb_Jet65_gen[nbins_cent],*hpbpb_Jet65_reco[nbins_cent]; // TH1F *hpbpb_Jet55_gen[nbins_cent],*hpbpb_Jet55_reco[nbins_cent]; // TH1F *hpbpb_JetComb_gen[nbins_cent],*hpbpb_JetComb_reco[nbins_cent]; // //TH1F *hpbpb_gen[nbins_cent],*hpbpb_reco[nbins_cent]; // //TH2F *hpbpb_matrix[nbins_cent]; // TH2F *hpbpb_matrix_HLT[nbins_cent]; // //TH2F *hpbpb_mcclosure_matrix[nbins_cent]; // TH2F *hpbpb_mcclosure_matrix_HLT[nbins_cent]; // //TH2F *hpbpb_response[nbins_cent]; // TH1F *hpbpb_mcclosure_JetComb_data[nbins_cent]; // //TH1F *hpbpb_mcclosure_data[nbins_cent]; // TH1F *hpbpb_mcclosure_Jet80_data[nbins_cent]; // TH1F *hpbpb_mcclosure_Jet65_data[nbins_cent]; // TH1F *hpbpb_mcclosure_Jet55_data[nbins_cent]; // //TH1F *hpbpb_mcclosure_gen[nbins_cent]; // TH1F *hpbpb_mcclosure_JetComb_gen[nbins_cent]; // TH1F *hpbpb_mcclosure_Jet80_gen[nbins_cent]; // TH1F *hpbpb_mcclosure_Jet65_gen[nbins_cent]; // TH1F *hpbpb_mcclosure_Jet55_gen[nbins_cent]; TH1F *hpbpb_TrgObj80[nbins_cent]; TH1F *hpbpb_TrgObj65[nbins_cent]; TH1F *hpbpb_TrgObj55[nbins_cent]; TH1F *hpbpb_TrgObjComb[nbins_cent]; TH1F * hpbpb_noTrg[nbins_cent]; // JEC systematics TH1F *hpbpb_JEC_TrgObjComb[nbins_cent]; // Smear systematics TH1F *hpbpb_Smear_TrgObjComb[nbins_cent]; for(int i = 0;i<nbins_cent;++i){ //cout<<"cent bin = "<<i<<endl; hpbpb_noTrg[i] = new TH1F(Form("hpbpb_noTrg_R%d_%s_cent%d",radius,etaWidth,i),"",400,0,400); hpbpb_TrgObj80[i] = new TH1F(Form("hpbpb_HLT80_R%d_%s_cent%d",radius,etaWidth,i),Form("Spectra from Jet 80 R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_TrgObj65[i] = new TH1F(Form("hpbpb_HLT65_R%d_%s_cent%d",radius,etaWidth,i),Form("Spectra from Jet 65 && !jet80 R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_TrgObj55[i] = new TH1F(Form("hpbpb_HLT55_R%d_%s_cent%d",radius,etaWidth,i),Form("Spectra from Jet 55 && !jet65 && !jet80 R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_TrgObjComb[i] = new TH1F(Form("hpbpb_HLTComb_R%d_%s_cent%d",radius,etaWidth,i),Form("Trig Combined Spectra R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_JEC_TrgObjComb[i] = new TH1F(Form("hpbpb_JEC_HLTComb_R%d_%s_cent%d",radius,etaWidth,i),Form("Trig Combined Spectra R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_Smear_TrgObjComb[i] = new TH1F(Form("hpbpb_Smear_HLTComb_R%d_%s_cent%d",radius,etaWidth,i),Form("Trig Combined Spectra R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); #if 0 //hpbpb_gen[i] = new TH1F(Form("hpbpb_gen_R%d_%s_cent%d",radius,etaWidth,i),Form("Gen refpt R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); //cout<<"A"<<endl; //hpbpb_reco[i] = new TH1F(Form("hpbpb_reco_R%d_%s_cent%d",radius,etaWidth,i),Form("Reco jtpt R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); //cout<<"B"<<endl; //hpbpb_matrix[i] = new TH2F(Form("hpbpb_matrix_R%d_%s_cent%d",radius,etaWidth,i),Form("Matrix refpt jtpt R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400,400,0,400); hpbpb_matrix_HLT[i] = new TH2F(Form("hpbpb_matrix_HLT_R%d_%s_cent%d",radius,etaWidth,i),Form("Matrix refpt jtpt from trigger addition R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400,400,0,400); //hpbpb_mcclosure_matrix[i] = new TH2F(Form("hpbpb_mcclosure_matrix_R%d_%s_cent%d",radius,etaWidth,i),Form("Matrix for mcclosure refpt jtpt R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400,400,0,400); hpbpb_mcclosure_matrix_HLT[i] = new TH2F(Form("hpbpb_mcclosure_matrix_HLT_R%d_%s_cent%d",radius,etaWidth,i),Form("Matrix for mcclosure refpt jtpt from Jet triggers R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400,400,0,400); //cout<<"C"<<endl; //hpbpb_mcclosure_data[i] = new TH1F(Form("hpbpb_mcclosure_data_R%d_%s_cent%d",radius,etaWidth,i),Form("data for unfolding mc closure test R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_mcclosure_JetComb_data[i] = new TH1F(Form("hpbpb_mcclosure_JetComb_data_R%d_%s_cent%d",radius,etaWidth,i),Form("data for unfolding mc closure test trigger combined R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_mcclosure_Jet80_data[i] = new TH1F(Form("hpbpb_mcclosure_Jet80_data_R%d_%s_cent%d",radius,etaWidth,i),Form("data for unfolding mc closure test trigger 80 R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_mcclosure_Jet65_data[i] = new TH1F(Form("hpbpb_mcclosure_Jet65_data_R%d_%s_cent%d",radius,etaWidth,i),Form("data for unfolding mc closure test trigger 65 R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_mcclosure_Jet55_data[i] = new TH1F(Form("hpbpb_mcclosure_Jet55_data_R%d_%s_cent%d",radius,etaWidth,i),Form("data for unfolding mc closure test trigger 55 R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); //hpbpb_mcclosure_gen[i] = new TH1F(Form("hpbpb_mcclosure_gen_R%d_%s_cent%d",radius,etaWidth,i),Form("gen spectra for unfolding mc closure test R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_mcclosure_JetComb_gen[i] = new TH1F(Form("hpbpb_mcclosure_gen_JetComb_R%d_%s_cent%d",radius,etaWidth,i),Form("gen spectra for unfolding mc closure test trigger combined R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_mcclosure_Jet80_gen[i] = new TH1F(Form("hpbpb_mcclosure_gen_Jet80_R%d_%s_cent%d",radius,etaWidth,i),Form("gen spectra for unfolding mc closure test trigger 80 R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_mcclosure_Jet65_gen[i] = new TH1F(Form("hpbpb_mcclosure_gen_Jet65_R%d_%s_cent%d",radius,etaWidth,i),Form("gen spectra for unfolding mc closure test trigger 65 R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_mcclosure_Jet55_gen[i] = new TH1F(Form("hpbpb_mcclosure_gen_Jet55_R%d_%s_cent%d",radius,etaWidth,i),Form("gen spectra for unfolding mc closure test trigger 55 R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_JetComb_gen[i] = new TH1F(Form("hpbpb_JetComb_gen_R%d_%s_cent%d",radius,etaWidth,i),Form("Gen refpt from HLT trigger combined R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_JetComb_reco[i] = new TH1F(Form("hpbpb_JetComb_reco_R%d_%s_cent%d",radius,etaWidth,i),Form("reco jtpt from HLT trigger combined R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_Jet80_gen[i] = new TH1F(Form("hpbpb_Jet80_gen_R%d_%s_cent%d",radius,etaWidth,i),Form("Gen refpt from Jet80 trigger R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_Jet80_reco[i] = new TH1F(Form("hpbpb_Jet80_reco_R%d_%s_cent%d",radius,etaWidth,i),Form("reco jtpt from Jet80 trigger R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_Jet65_gen[i] = new TH1F(Form("hpbpb_Jet65_gen_R%d_%s_cent%d",radius,etaWidth,i),Form("Gen refpt from Jet65 && !Jet80 trigger R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_Jet65_reco[i] = new TH1F(Form("hpbpb_Jet65_reco_R%d_%s_cent%d",radius,etaWidth,i),Form("reco jtpt from Jet65 && !Jet80 trigger R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_Jet55_gen[i] = new TH1F(Form("hpbpb_Jet55_gen_R%d_%s_cent%d",radius,etaWidth,i),Form("Gen refpt from Jet55 && !Jet65 && !Jet80 trigger R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); hpbpb_Jet55_reco[i] = new TH1F(Form("hpbpb_Jet55_reco_R%d_%s_cent%d",radius,etaWidth,i),Form("reco jtpt from Jet55 && !Jet65 && !Jet80 trigger R%d %s %2.0f - %2.0f cent",radius,etaWidth,5*boundaries_cent[i],5*boundaries_cent[i+1]),400,0,400); #endif }// centrality bin loop // Define all the histograms necessary for the analysis: // 1 - Data, 2 - MC Float_t pfpt_1, pfpt_2; Float_t pfrefpt_2; Float_t calopt_1, calopt_2; Float_t eMax_1, eMax_2; Float_t chMax_1, chMax_2; Float_t chSum_1, chSum_2; Float_t phSum_1, phSum_2; Float_t neSum_1, neSum_2; Float_t muSum_1, muSum_2; Int_t jet55_1, jet65_1, jet80_1; Int_t jet55_p_1, jet65_p_1, jet80_p_1; Int_t jet55_2, jet65_2, jet80_2; Int_t jet55_p_2; Float_t weight; Int_t subid_2; Int_t hiBin_1, hiBin_2; Int_t jetMB_1, jetMB_p_1; Float_t eta_1, eta_2; Float_t pfrawpt_1, pfrawpt_2; Data_matched->SetBranchAddress("calopt",&calopt_1); Data_matched->SetBranchAddress("pfpt",&pfpt_1); Data_matched->SetBranchAddress("eMax",&eMax_1); Data_matched->SetBranchAddress("chMax",&chMax_1); Data_matched->SetBranchAddress("chSum",&chSum_1); Data_matched->SetBranchAddress("phSum",&phSum_1); Data_matched->SetBranchAddress("neSum",&neSum_1); Data_matched->SetBranchAddress("muSum",&muSum_1); Data_matched->SetBranchAddress("hiBin",&hiBin_1); Data_matched->SetBranchAddress("jetMB",&jetMB_1); Data_matched->SetBranchAddress("jet55",&jet55_1); Data_matched->SetBranchAddress("jet65",&jet65_1); Data_matched->SetBranchAddress("jet80",&jet80_1); Data_matched->SetBranchAddress("jetMB_prescl",&jetMB_p_1); Data_matched->SetBranchAddress("jet55_prescl",&jet55_p_1); Data_matched->SetBranchAddress("jet65_prescl",&jet65_p_1); Data_matched->SetBranchAddress("jet80_prescl",&jet80_p_1); Data_matched->SetBranchAddress("pfeta",&eta_1); Data_matched->SetBranchAddress("pfrawpt",&pfrawpt_1); Data_unmatched->SetBranchAddress("pfpt",&pfpt_1); Data_unmatched->SetBranchAddress("eMax",&eMax_1); Data_unmatched->SetBranchAddress("chMax",&chMax_1); Data_unmatched->SetBranchAddress("chSum",&chSum_1); Data_unmatched->SetBranchAddress("phSum",&phSum_1); Data_unmatched->SetBranchAddress("neSum",&neSum_1); Data_unmatched->SetBranchAddress("muSum",&muSum_1); Data_unmatched->SetBranchAddress("hiBin",&hiBin_1); Data_unmatched->SetBranchAddress("jet55",&jet55_1); Data_unmatched->SetBranchAddress("jet65",&jet65_1); Data_unmatched->SetBranchAddress("jet80",&jet80_1); Data_unmatched->SetBranchAddress("jetMB",&jetMB_1); Data_unmatched->SetBranchAddress("jetMB_prescl",&jetMB_p_1); Data_unmatched->SetBranchAddress("jet55_prescl",&jet55_p_1); Data_unmatched->SetBranchAddress("jet65_prescl",&jet65_p_1); Data_unmatched->SetBranchAddress("jet80_prescl",&jet80_p_1); Data_unmatched->SetBranchAddress("pfeta",&eta_1); Data_unmatched->SetBranchAddress("pfrawpt",&pfrawpt_1); #if 0 MC_matched->SetBranchAddress("calopt",&calopt_2); MC_matched->SetBranchAddress("pfpt",&pfpt_2); MC_matched->SetBranchAddress("eMax",&eMax_2); MC_matched->SetBranchAddress("chMax",&chMax_2); MC_matched->SetBranchAddress("chSum",&chSum_2); MC_matched->SetBranchAddress("phSum",&phSum_2); MC_matched->SetBranchAddress("neSum",&neSum_2); MC_matched->SetBranchAddress("muSum",&muSum_2); MC_matched->SetBranchAddress("hiBin",&hiBin_2); MC_matched->SetBranchAddress("pfrefpt",&pfrefpt_2); MC_matched->SetBranchAddress("jet55",&jet55_2); MC_matched->SetBranchAddress("jet65",&jet65_2); MC_matched->SetBranchAddress("jet80",&jet80_2); MC_matched->SetBranchAddress("weight", &weight); MC_matched->SetBranchAddress("subid", &subid_2); MC_matched->SetBranchAddress("jet55_prescl",&jet55_p_2); MC_unmatched->SetBranchAddress("pfpt",&pfpt_2); MC_unmatched->SetBranchAddress("eMax",&eMax_2); MC_unmatched->SetBranchAddress("chMax",&chMax_2); MC_unmatched->SetBranchAddress("chSum",&chSum_2); MC_unmatched->SetBranchAddress("phSum",&phSum_2); MC_unmatched->SetBranchAddress("neSum",&neSum_2); MC_unmatched->SetBranchAddress("muSum",&muSum_2); MC_unmatched->SetBranchAddress("hiBin",&hiBin_2); MC_unmatched->SetBranchAddress("pfrefpt",&pfrefpt_2); MC_unmatched->SetBranchAddress("jet55",&jet55_2); MC_unmatched->SetBranchAddress("jet65",&jet65_2); MC_unmatched->SetBranchAddress("jet80",&jet80_2); MC_unmatched->SetBranchAddress("weight", & weight); MC_unmatched->SetBranchAddress("subid", &subid_2); MC_unmatched->SetBranchAddress("jet55_prescl",&jet55_p_2); #endif // data loop long entries = Data_matched->GetEntries(); //entries = 1000; cout<<"matched Data ntuple "<<endl; TRandom rnd; Float_t prescl = 38.695; for(long nentry = 0; nentry < entries; ++nentry ){ if(nentry%10000 == 0) cout<<" nentry = "<<nentry<<endl; Data_matched->GetEntry(nentry); Int_t cBin = findBin(hiBin_1); if(cBin == -1 || cBin >= nbins_cent) continue; Float_t Sumcand = chSum_1 + phSum_1 + neSum_1 + muSum_1; if(isSymm && TMath::Abs(eta_1) > (Float_t)etaHigh/10) continue; if(!isSymm && (TMath::Abs(eta_1) < (Float_t)etaLow/10 || TMath::Abs(eta_1) > (Float_t)etaHigh/10)) continue; if(calopt_1/pfpt_1 > 0.5 && calopt_1/pfpt_1 <= 0.85 && eMax_1/Sumcand < ((Float_t)18/7 *(Float_t)calopt_1/pfpt_1 - (Float_t)9/7)) hpbpb_noTrg[cBin]->Fill(pfpt_1, prescl); if(calopt_1/pfpt_1 > 0.85) hpbpb_noTrg[cBin]->Fill(pfpt_1, prescl); if(calopt_1/pfpt_1 <= 0.5 && eMax_1/Sumcand < 0.05) hpbpb_noTrg[cBin]->Fill(pfpt_1, prescl); if(jetMB_1 == 1 && jet55_1 == 0 && jet65_1 == 0 && jet80_1 == 0 ) { //hData_Jet55_noCut->Fill(pfpt_1, jet55_p_1); if(calopt_1/pfpt_1 > 0.5 && calopt_1/pfpt_1 <= 0.85 && eMax_1/Sumcand < ((Float_t)18/7 *(Float_t)calopt_1/pfpt_1 - (Float_t)9/7)) { //hData_Jet55_CutA->Fill(pfpt_1, jet55_p_1); hpbpb_TrgObjComb[cBin]->Fill(pfpt_1, prescl); hpbpb_JEC_TrgObjComb[cBin]->Fill(pfpt_1 * (1. + 0.02/nbins_cent*(nbins_cent-cBin)), prescl); hpbpb_Smear_TrgObjComb[cBin]->Fill(pfpt_1 + rnd.Gaus(0,1), prescl); } if(calopt_1/pfpt_1 > 0.85){ //hData_Jet55_CutA->Fill(pfpt_1, jet55_p_1); hpbpb_TrgObjComb[cBin]->Fill(pfpt_1, prescl); hpbpb_JEC_TrgObjComb[cBin]->Fill(pfpt_1 * (1. + 0.02/nbins_cent*(nbins_cent-cBin)), prescl); hpbpb_Smear_TrgObjComb[cBin]->Fill(pfpt_1 + rnd.Gaus(0,1), prescl); } if(calopt_1/pfpt_1 <= 0.5 && eMax_1/Sumcand < 0.05) { //hData_Jet55_CutA->Fill(pfpt_1, jet55_p_1); hpbpb_TrgObjComb[cBin]->Fill(pfpt_1, prescl); hpbpb_JEC_TrgObjComb[cBin]->Fill(pfpt_1 * (1. + 0.02/nbins_cent*(nbins_cent-cBin)), prescl); hpbpb_Smear_TrgObjComb[cBin]->Fill(pfpt_1 + rnd.Gaus(0,1), prescl); } //if(calopt_1/pfpt_1 <= 0.5 && eMax_1/Sumcand >= 0.05) hData_Jet55_CutA_rej->Fill(pfpt_1, jet55_p_1); //if(calopt_1/pfpt_1 > 0.5 && calopt_1/pfpt_1 <= 0.85 && eMax_1/Sumcand >= ((Float_t)18/7 *(Float_t)calopt_1/pfpt_1 - (Float_t)9/7)) hData_Jet55_CutA_rej->Fill(pfpt_1, jet55_p_1); } #if 0 if(jet65_1 == 1 && jet80_1 == 0 ) { //hData_Jet65_noCut->Fill(pfpt_1); if(calopt_1/pfpt_1 > 0.5 && calopt_1/pfpt_1 <= 0.85 && eMax_1/Sumcand < ((Float_t)18/7 *(Float_t)calopt_1/pfpt_1 - (Float_t)9/7)){ //hData_Jet65_CutA->Fill(pfpt_1); hpbpb_TrgObj65[cBin]->Fill(pfpt_1); } if(calopt_1/pfpt_1 > 0.85) { //hData_Jet65_CutA->Fill(pfpt_1); hpbpb_TrgObj65[cBin]->Fill(pfpt_1); } if(calopt_1/pfpt_1 <= 0.5 && eMax_1/Sumcand < 0.05) { //hData_Jet65_CutA->Fill(pfpt_1); hpbpb_TrgObj65[cBin]->Fill(pfpt_1); } //if(calopt_1/pfpt_1 <= 0.5 && eMax_1/Sumcand >= 0.05) hData_Jet65_CutA_rej->Fill(pfpt_1); //if(calopt_1/pfpt_1 > 0.5 && calopt_1/pfpt_1 <= 0.85 && eMax_1/Sumcand >= ((Float_t)18/7 *(Float_t)calopt_1/pfpt_1 - (Float_t)9/7)) hData_Jet65_CutA_rej->Fill(pfpt_1); } if(jet80_1 == 1) { //hData_Jet80_noCut->Fill(pfpt_1); if(calopt_1/pfpt_1 > 0.5 && calopt_1/pfpt_1 <= 0.85 && eMax_1/Sumcand < ((Float_t)18/7 *(Float_t)calopt_1/pfpt_1 - (Float_t)9/7)) { //hData_Jet80_CutA->Fill(pfpt_1); hpbpb_TrgObj80[cBin]->Fill(pfpt_1); } if(calopt_1/pfpt_1 > 0.85){ //hData_Jet80_CutA->Fill(pfpt_1); hpbpb_TrgObj80[cBin]->Fill(pfpt_1); } if(calopt_1/pfpt_1 <= 0.5 && eMax_1/Sumcand < 0.05){ //hData_Jet80_CutA->Fill(pfpt_1); hpbpb_TrgObj80[cBin]->Fill(pfpt_1); } //if(calopt_1/pfpt_1 <= 0.5 && eMax_1/Sumcand >= 0.05) hData_Jet80_CutA_rej->Fill(pfpt_1); //if(calopt_1/pfpt_1 > 0.5 && calopt_1/pfpt_1 <= 0.85 && eMax_1/Sumcand >= ((Float_t)18/7 *(Float_t)calopt_1/pfpt_1 - (Float_t)9/7)) hData_Jet80_CutA_rej->Fill(pfpt_1); } #endif }// data ntuple loop // data unmatched loop: entries = Data_unmatched->GetEntries(); //entries = 1000; cout<<"Unmatched Data ntuple "<<endl; for(long nentry = 0; nentry < entries; ++nentry ){ if(nentry%10000 == 0) cout<<" nentry = "<<nentry<<endl; Data_unmatched->GetEntry(nentry); Int_t cBin = findBin(hiBin_1); if(cBin == -1 || cBin >= nbins_cent) continue; Float_t Sumcand = chSum_1 + phSum_1 + neSum_1 + muSum_1; if(isSymm && TMath::Abs(eta_1) > (Float_t)etaHigh/10) continue; if(!isSymm && (TMath::Abs(eta_1) < (Float_t)etaLow/10 || TMath::Abs(eta_1) > (Float_t)etaHigh/10)) continue; if(eMax_1/Sumcand < 0.05) hpbpb_noTrg[cBin]->Fill(pfpt_1, prescl); if(jet55_1 == 1 && jet65_1 == 0 && jet80_1 == 0 ) { //hData_unmatched_Jet55_noCut->Fill(pfpt_1, jet55_p_1); if(eMax_1/Sumcand < 0.05 ) {hpbpb_TrgObjComb[cBin]->Fill(pfpt_1, prescl); hpbpb_JEC_TrgObjComb[cBin]->Fill(pfpt_1 * (1. + 0.02/nbins_cent*(nbins_cent-cBin)), prescl); hpbpb_Smear_TrgObjComb[cBin]->Fill(pfpt_1 + rnd.Gaus(0,1), prescl); } //hData_unmatched_Jet55_CutA->Fill(pfpt_1, jet55_p_1); //else hData_unmatched_Jet55_CutA_rej->Fill(pfpt_1, jet55_p_1); } #if 0 if(jet65_1 == 1 && jet80_1 == 0 ) { //hData_unmatched_Jet65_noCut->Fill(pfpt_1); if(eMax_1/Sumcand < 0.05 )hpbpb_TrgObj65[cBin]->Fill(pfpt_1); //hData_unmatched_Jet65_CutA->Fill(pfpt_1); //else hData_unmatched_Jet65_CutA_rej->Fill(pfpt_1); } if(jet80_1 == 1) { //hData_unmatched_Jet80_noCut->Fill(pfpt_1); if(eMax_1/Sumcand < 0.05 )hpbpb_TrgObj80[cBin]->Fill(pfpt_1); //hData_unmatched_Jet80_CutA->Fill(pfpt_1); //else hData_unmatched_Jet80_CutA_rej->Fill(pfpt_1); } #endif }// data ntuple loop #if 0 entries = MC_matched->GetEntries(); //entries = 1000; // MC loop cout<<" looking at matched MC ntuple "<<endl; for(long nentry = 0; nentry < entries; ++nentry){ if(nentry%10000 == 0) cout<<" nentry = "<<nentry<<endl; MC_matched->GetEntry(nentry); Float_t Sumcand = chSum_2 + phSum_2 + neSum_2 + muSum_2; if(subid_2 != 0) continue; Int_t cBin = findBin(hiBin_2); if(cBin == -1 || cBin >= nbins_cent) continue; if(jet55_2 == 1 && jet65_2==0 && jet80_2 == 0){ //hMC_Jet55_noCut->Fill(pfpt_2, weight); if(calopt_2/pfpt_2 > 0.5 && calopt_2/pfpt_2 <= 0.85 && eMax_2/Sumcand < ((Float_t)18/7 *(Float_t)calopt_2/pfpt_2 - (Float_t)9/7)){ //hMC_Jet55_CutA->Fill(pfpt_2, weight); hpbpb_Jet55_gen[cBin]->Fill(pfrefpt_2, weight); hpbpb_Jet55_reco[cBin]->Fill(pfpt_2, weight); hpbpb_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); if(nentry%2==0) { hpbpb_mcclosure_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); hpbpb_mcclosure_Jet55_gen[cBin]->Fill(pfrefpt_2, weight); } if(nentry%2==1) { hpbpb_mcclosure_Jet55_data[cBin]->Fill(pfpt_2, weight); } } if(calopt_2/pfpt_2 > 0.85) { //hMC_Jet55_CutA->Fill(pfpt_2, weight); hpbpb_Jet55_gen[cBin]->Fill(pfrefpt_2, weight); hpbpb_Jet55_reco[cBin]->Fill(pfpt_2, weight); hpbpb_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); if(nentry%2==0) { hpbpb_mcclosure_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); hpbpb_mcclosure_Jet55_gen[cBin]->Fill(pfrefpt_2, weight); } if(nentry%2==1) { hpbpb_mcclosure_Jet55_data[cBin]->Fill(pfpt_2, weight); } } if(calopt_2/pfpt_2 <= 0.5 && eMax_2/Sumcand < 0.05) { //hMC_Jet55_CutA->Fill(pfpt_2, weight); hpbpb_Jet55_gen[cBin]->Fill(pfrefpt_2, weight); hpbpb_Jet55_reco[cBin]->Fill(pfpt_2, weight); hpbpb_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); if(nentry%2==0) { hpbpb_mcclosure_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); hpbpb_mcclosure_Jet55_gen[cBin]->Fill(pfrefpt_2, weight); } if(nentry%2==1) { hpbpb_mcclosure_Jet55_data[cBin]->Fill(pfpt_2, weight); } } //if(calopt_2/pfpt_2 <= 0.5 && eMax_2/Sumcand >= 0.05) hMC_Jet55_CutA_rej->Fill(pfpt_2, weight); //if(calopt_2/pfpt_2 > 0.5 && calopt_2/pfpt_2 <= 0.85 && eMax_2/Sumcand >= ((Float_t)18/7 *(Float_t)calopt_2/pfpt_2 - (Float_t)9/7)) hMC_Jet55_CutA_rej->Fill(pfpt_2, weight); } if(jet65_2 == 1 && jet80_2 == 0){ //hMC_Jet65_noCut->Fill(pfpt_2, weight); if(calopt_2/pfpt_2 > 0.5 && calopt_2/pfpt_2 <= 0.85 && eMax_2/Sumcand < ((Float_t)18/7 *(Float_t)calopt_2/pfpt_2 - (Float_t)9/7)) { //hMC_Jet65_CutA->Fill(pfpt_2, weight); hpbpb_Jet65_gen[cBin]->Fill(pfrefpt_2, weight); hpbpb_Jet65_reco[cBin]->Fill(pfpt_2, weight); hpbpb_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); if(nentry%2==0) { hpbpb_mcclosure_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); hpbpb_mcclosure_Jet65_gen[cBin]->Fill(pfrefpt_2, weight); } if(nentry%2==1) { hpbpb_mcclosure_Jet65_data[cBin]->Fill(pfpt_2, weight); } } if(calopt_2/pfpt_2 > 0.85) { //hMC_Jet65_CutA->Fill(pfpt_2, weight); hpbpb_Jet65_gen[cBin]->Fill(pfrefpt_2, weight); hpbpb_Jet65_reco[cBin]->Fill(pfpt_2, weight); hpbpb_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); if(nentry%2==0) { hpbpb_mcclosure_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); hpbpb_mcclosure_Jet65_gen[cBin]->Fill(pfrefpt_2, weight); } if(nentry%2==1) { hpbpb_mcclosure_Jet65_data[cBin]->Fill(pfpt_2, weight); } } if(calopt_2/pfpt_2 <= 0.5 && eMax_2/Sumcand < 0.05) { //hMC_Jet65_CutA->Fill(pfpt_2, weight); hpbpb_Jet65_gen[cBin]->Fill(pfrefpt_2, weight); hpbpb_Jet65_reco[cBin]->Fill(pfpt_2, weight); hpbpb_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); if(nentry%2==0) { hpbpb_mcclosure_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); hpbpb_mcclosure_Jet65_gen[cBin]->Fill(pfrefpt_2, weight); } if(nentry%2==1) { hpbpb_mcclosure_Jet65_data[cBin]->Fill(pfpt_2, weight); } } //if(calopt_2/pfpt_2 <= 0.5 && eMax_2/Sumcand >= 0.05) hMC_Jet65_CutA_rej->Fill(pfpt_2, weight); //if(calopt_2/pfpt_2 > 0.5 && calopt_2/pfpt_2 <= 0.85 && eMax_2/Sumcand >= ((Float_t)18/7 *(Float_t)calopt_2/pfpt_2 - (Float_t)9/7)) hMC_Jet65_CutA_rej->Fill(pfpt_2, weight); } if(jet80_2 == 1){ //hMC_Jet80_noCut->Fill(pfpt_2, weight); if(calopt_2/pfpt_2 > 0.5 && calopt_2/pfpt_2 <= 0.85 && eMax_2/Sumcand < ((Float_t)18/7 *(Float_t)calopt_2/pfpt_2 - (Float_t)9/7)) { //hMC_Jet80_CutA->Fill(pfpt_2, weight); hpbpb_Jet80_gen[cBin]->Fill(pfrefpt_2, weight); hpbpb_Jet80_reco[cBin]->Fill(pfpt_2, weight); hpbpb_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); if(nentry%2==0) { hpbpb_mcclosure_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); hpbpb_mcclosure_Jet80_gen[cBin]->Fill(pfrefpt_2, weight); } if(nentry%2==1) { hpbpb_mcclosure_Jet80_data[cBin]->Fill(pfpt_2, weight); } } if(calopt_2/pfpt_2 > 0.85) { //hMC_Jet80_CutA->Fill(pfpt_2, weight); hpbpb_Jet80_gen[cBin]->Fill(pfrefpt_2, weight); hpbpb_Jet80_reco[cBin]->Fill(pfpt_2, weight); hpbpb_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); if(nentry%2==0) { hpbpb_mcclosure_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); hpbpb_mcclosure_Jet80_gen[cBin]->Fill(pfrefpt_2, weight); } if(nentry%2==1) { hpbpb_mcclosure_Jet80_data[cBin]->Fill(pfpt_2, weight); } } if(calopt_2/pfpt_2 <= 0.5 && eMax_2/Sumcand < 0.05) { //hMC_Jet80_CutA->Fill(pfpt_2, weight); hpbpb_Jet80_gen[cBin]->Fill(pfrefpt_2, weight); hpbpb_Jet80_reco[cBin]->Fill(pfpt_2, weight); hpbpb_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); if(nentry%2==0) { hpbpb_mcclosure_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); hpbpb_mcclosure_Jet80_gen[cBin]->Fill(pfrefpt_2, weight); } if(nentry%2==1) { hpbpb_mcclosure_Jet80_data[cBin]->Fill(pfpt_2, weight); } } //if(calopt_2/pfpt_2 <= 0.5 && eMax_2/Sumcand >= 0.05) hMC_Jet80_CutA_rej->Fill(pfpt_2, weight); //if(calopt_2/pfpt_2 > 0.5 && calopt_2/pfpt_2 <= 0.85 && eMax_2/Sumcand >= ((Float_t)18/7 *(Float_t)calopt_2/pfpt_2 - (Float_t)9/7)) hMC_Jet80_CutA_rej->Fill(pfpt_2, weight); } }// mc ntuple loop entries = MC_unmatched->GetEntries(); //entries = 1000; // MC loop cout<<" looking at unmatched MC ntuple"<<endl; for(long nentry = 0; nentry < entries; ++nentry){ if(nentry%10000 == 0) cout<<" nentry = "<<nentry<<endl; MC_unmatched->GetEntry(nentry); if(subid_2 != 0) continue; Int_t cBin = findBin(hiBin_2); if(cBin == -1 || cBin >= nbins_cent) continue; Float_t Sumcand = chSum_2 + phSum_2 + neSum_2 + muSum_2; if(jet55_2 == 1 && jet65_2==0 && jet80_2 == 0){ //hMC_unmatched_Jet55_noCut->Fill(pfrefpt_2, jet55_p_2*weight); if(eMax_2/Sumcand < 0.05 ){ hpbpb_Jet55_gen[cBin]->Fill(pfrefpt_2, weight); hpbpb_Jet55_reco[cBin]->Fill(pfpt_2, weight); hpbpb_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); if(nentry%2==0) { hpbpb_mcclosure_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); hpbpb_mcclosure_Jet55_gen[cBin]->Fill(pfrefpt_2, weight); } if(nentry%2==1) { hpbpb_mcclosure_Jet55_data[cBin]->Fill(pfpt_2, weight); } } //hMC_unmatched_Jet55_CutA->Fill(pfrefpt_2, jet55_p_2*weight); //else hMC_unmatched_Jet55_CutA_rej->Fill(pfpt_2, jet55_p_2*weight); } if(jet65_2 == 1 && jet80_2 == 0){ //hMC_unmatched_Jet65_noCut->Fill(pfrefpt_2, weight); if(eMax_2/Sumcand < 0.05 ){ hpbpb_Jet65_gen[cBin]->Fill(pfrefpt_2, weight); hpbpb_Jet65_reco[cBin]->Fill(pfpt_2, weight); hpbpb_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); if(nentry%2==0) { hpbpb_mcclosure_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); hpbpb_mcclosure_Jet65_gen[cBin]->Fill(pfrefpt_2, weight); } if(nentry%2==1) { hpbpb_mcclosure_Jet65_data[cBin]->Fill(pfpt_2, weight); } } //hMC_unmatched_Jet65_CutA->Fill(pfrefpt_2, weight); //else hMC_unmatched_Jet65_CutA_rej->Fill(pfpt_2); } if(jet80_2 == 1){ //hMC_unmatched_Jet80_noCut->Fill(pfrefpt_2, weight); if(eMax_2/Sumcand < 0.05 ){ hpbpb_Jet80_gen[cBin]->Fill(pfrefpt_2, weight); hpbpb_Jet80_reco[cBin]->Fill(pfpt_2, weight); hpbpb_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); if(nentry%2==0) { hpbpb_mcclosure_matrix_HLT[cBin]->Fill(pfrefpt_2, pfpt_2, weight); hpbpb_mcclosure_Jet80_gen[cBin]->Fill(pfrefpt_2, weight); } if(nentry%2==1) { hpbpb_mcclosure_Jet80_data[cBin]->Fill(pfpt_2, weight); } } //hMC_unmatched_Jet80_CutA->Fill(pfrefpt_2, weight); //else hMC_unmatched_Jet80_CutA_rej->Fill(pfpt_2); } }// mc unmatched ntuple loop #endif TFile fout(Form("../../Output/Pawan_ntuple_PbPb_MinBiasData_spectra_JetID_CutA_finebins_%s_R0p%d.root",etaWidth,radius),"RECREATE"); fout.cd(); #if 0 for(int i = 0;i<nbins_cent;++i){ //hpbpb_TrgObjComb[i]->Add(hpbpb_TrgObj80[i]); //hpbpb_TrgObjComb[i]->Add(hpbpb_TrgObj65[i]); //hpbpb_TrgObjComb[i]->Add(hpbpb_TrgObj55[i]); #if 0 hpbpb_mcclosure_JetComb_data[i]->Add(hpbpb_mcclosure_Jet80_data[i]); hpbpb_mcclosure_JetComb_data[i]->Add(hpbpb_mcclosure_Jet65_data[i]); hpbpb_mcclosure_JetComb_data[i]->Add(hpbpb_mcclosure_Jet55_data[i]); hpbpb_mcclosure_JetComb_gen[i]->Add(hpbpb_mcclosure_Jet80_gen[i]); hpbpb_mcclosure_JetComb_gen[i]->Add(hpbpb_mcclosure_Jet65_gen[i]); hpbpb_mcclosure_JetComb_gen[i]->Add(hpbpb_mcclosure_Jet55_gen[i]); hpbpb_JetComb_reco[i]->Add(hpbpb_Jet80_reco[i]); hpbpb_JetComb_reco[i]->Add(hpbpb_Jet65_reco[i]); hpbpb_JetComb_reco[i]->Add(hpbpb_Jet55_reco[i]); hpbpb_JetComb_gen[i]->Add(hpbpb_Jet80_gen[i]); hpbpb_JetComb_gen[i]->Add(hpbpb_Jet65_gen[i]); hpbpb_JetComb_gen[i]->Add(hpbpb_Jet55_gen[i]); #endif } #endif for(int i = 0; i<nbins_cent;++i){ hpbpb_noTrg[i]->Write(); hpbpb_TrgObjComb[i]->Write(); hpbpb_JEC_TrgObjComb[i]->Write(); hpbpb_Smear_TrgObjComb[i]->Write(); #if 0 hpbpb_TrgObj80[i]->Write(); hpbpb_TrgObj65[i]->Write(); hpbpb_TrgObj55[i]->Write(); hpbpb_matrix_HLT[i]->Write(); hpbpb_mcclosure_matrix_HLT[i]->Write(); hpbpb_mcclosure_JetComb_data[i]->Write(); hpbpb_mcclosure_Jet80_data[i]->Write(); hpbpb_mcclosure_Jet65_data[i]->Write(); hpbpb_mcclosure_Jet55_data[i]->Write(); hpbpb_mcclosure_JetComb_gen[i]->Write(); hpbpb_mcclosure_Jet80_gen[i]->Write(); hpbpb_mcclosure_Jet65_gen[i]->Write(); hpbpb_mcclosure_Jet55_gen[i]->Write(); hpbpb_JetComb_reco[i]->Write(); hpbpb_Jet80_reco[i]->Write(); hpbpb_Jet65_reco[i]->Write(); hpbpb_Jet55_reco[i]->Write(); hpbpb_JetComb_gen[i]->Write(); hpbpb_Jet80_gen[i]->Write(); hpbpb_Jet65_gen[i]->Write(); hpbpb_Jet55_gen[i]->Write(); #endif } fout.Close(); #if 0 // add the unmatched histograms to the matched ones to get the final cut efficiency hData_Jet55_noCut->Add(hData_unmatched_Jet55_noCut); hData_Jet65_noCut->Add(hData_unmatched_Jet65_noCut); hData_Jet80_noCut->Add(hData_unmatched_Jet80_noCut); hData_Jet55_CutA->Add(hData_unmatched_Jet55_CutA); hData_Jet65_CutA->Add(hData_unmatched_Jet65_CutA); hData_Jet80_CutA->Add(hData_unmatched_Jet80_CutA); hData_Jet55_CutA_rej->Add(hData_unmatched_Jet55_CutA_rej); hData_Jet65_CutA_rej->Add(hData_unmatched_Jet65_CutA_rej); hData_Jet80_CutA_rej->Add(hData_unmatched_Jet80_CutA_rej); hMC_Jet55_noCut->Add(hMC_unmatched_Jet55_noCut); hMC_Jet65_noCut->Add(hMC_unmatched_Jet65_noCut); hMC_Jet80_noCut->Add(hMC_unmatched_Jet80_noCut); hMC_Jet55_CutA->Add(hMC_unmatched_Jet55_CutA); hMC_Jet65_CutA->Add(hMC_unmatched_Jet65_CutA); hMC_Jet80_CutA->Add(hMC_unmatched_Jet80_CutA); hMC_Jet55_CutA_rej->Add(hMC_unmatched_Jet55_CutA_rej); hMC_Jet65_CutA_rej->Add(hMC_unmatched_Jet65_CutA_rej); hMC_Jet80_CutA_rej->Add(hMC_unmatched_Jet80_CutA_rej); hData_Jet65_noCut->Write(); hData_Jet65_CutA->Write(); // hData_Jet65_CutB->Write(); TH1F * hData_Jet65_CutA_eff = (TH1F*)hData_Jet65_CutA->Clone("hData_Jet65_CutA_eff"); hData_Jet65_CutA_eff->Divide(hData_Jet65_noCut); hData_Jet65_CutA_eff->Write(); // TH1F * hData_Jet65_CutB_eff = (TH1F*)hData_Jet65_CutB->Clone("hData_Jet65_CutB_eff"); // hData_Jet65_CutB_eff->Divide(hData_Jet65_noCut); // hData_Jet65_CutB_eff->Write(); hData_Jet65_CutA_rej->Write(); // hData_Jet65_CutB_rej->Write(); TH1F * hData_Jet65_CutA_rej_eff = (TH1F*)hData_Jet65_CutA_rej->Clone("hData_Jet65_CutA_rej_eff"); hData_Jet65_CutA_rej_eff->Divide(hData_Jet65_noCut); hData_Jet65_CutA_rej_eff->Write(); // hData_Jet65_CutB_rej_eff = (TH1F*)hData_Jet65_CutB_rej->Clone("hData_Jet65_CutB_rej_eff"); // hData_Jet65_CutB_rej_eff->Divide(hData_Jet65_noCut); // hData_Jet65_CutB_rej_eff->Write(); hData_Jet55_noCut->Write(); hData_Jet55_CutA->Write(); // hData_Jet55_CutB->Write(); TH1F * hData_Jet55_CutA_eff = (TH1F*)hData_Jet55_CutA->Clone("hData_Jet55_CutA_eff"); hData_Jet55_CutA_eff->Divide(hData_Jet55_noCut); hData_Jet55_CutA_eff->Write(); // TH1F * hData_Jet55_CutB_eff = (TH1F*)hData_Jet55_CutB->Clone("hData_Jet55_CutB_eff"); // hData_Jet55_CutB_eff->Divide(hData_Jet55_noCut); // hData_Jet55_CutB_eff->Write(); hData_Jet55_CutA_rej->Write(); // hData_Jet55_CutB_rej->Write(); TH1F * hData_Jet55_CutA_rej_eff = (TH1F*)hData_Jet55_CutA_rej->Clone("hData_Jet55_CutA_rej_eff"); hData_Jet55_CutA_rej_eff->Divide(hData_Jet55_noCut); hData_Jet55_CutA_rej_eff->Write(); // hData_Jet55_CutB_rej_eff = (TH1F*)hData_Jet55_CutB_rej->Clone("hData_Jet55_CutB_rej_eff"); // hData_Jet55_CutB_rej_eff->Divide(hData_Jet55_noCut); // hData_Jet55_CutB_rej_eff->Write(); hData_Jet80_noCut->Write(); hData_Jet80_CutA->Write(); //hData_Jet80_CutB->Write(); TH1F * hData_Jet80_CutA_eff = (TH1F*)hData_Jet80_CutA->Clone("hData_Jet80_CutA_eff"); hData_Jet80_CutA_eff->Divide(hData_Jet80_noCut); hData_Jet80_CutA_eff->Write(); // TH1F * hData_Jet80_CutB_eff = (TH1F*)hData_Jet80_CutB->Clone("hData_Jet80_CutB_eff"); // hData_Jet80_CutB_eff->Divide(hData_Jet80_noCut); // hData_Jet80_CutB_eff->Write(); hData_Jet80_CutA_rej->Write(); // hData_Jet80_CutB_rej->Write(); TH1F * hData_Jet80_CutA_rej_eff = (TH1F*)hData_Jet80_CutA_rej->Clone("hData_Jet80_CutA_rej_eff"); hData_Jet80_CutA_rej_eff->Divide(hData_Jet80_noCut); hData_Jet80_CutA_rej_eff->Write(); // hData_Jet80_CutB_rej_eff = (TH1F*)hData_Jet80_CutB_rej->Clone("hData_Jet80_CutB_rej_eff"); // hData_Jet80_CutB_rej_eff->Divide(hData_Jet80_noCut); // hData_Jet80_CutB_rej_eff->Write(); hMC_Jet80_noCut->Write(); hMC_Jet80_CutA->Write(); // hMC_Jet80_CutB->Write(); TH1F * hMC_Jet80_CutA_eff = (TH1F*)hMC_Jet80_CutA->Clone("hMC_Jet80_CutA_eff"); hMC_Jet80_CutA_eff->Divide(hMC_Jet80_noCut); hMC_Jet80_CutA_eff->Write(); // TH1F * hMC_Jet80_CutB_eff = (TH1F*)hMC_Jet80_CutB->Clone("hMC_Jet80_CutB_eff"); // hMC_Jet80_CutB_eff->Divide(hMC_Jet80_noCut); // hMC_Jet80_CutB_eff->Write(); hMC_Jet65_noCut->Write(); hMC_Jet65_CutA->Write(); // hMC_Jet65_CutB->Write(); TH1F * hMC_Jet65_CutA_eff = (TH1F*)hMC_Jet65_CutA->Clone("hMC_Jet65_CutA_eff"); hMC_Jet65_CutA_eff->Divide(hMC_Jet65_noCut); hMC_Jet65_CutA_eff->Write(); // TH1F * hMC_Jet65_CutB_eff = (TH1F*)hMC_Jet65_CutB->Clone("hMC_Jet65_CutB_eff"); // hMC_Jet65_CutB_eff->Divide(hMC_Jet65_noCut); // hMC_Jet65_CutB_eff->Write(); hMC_Jet55_noCut->Write(); hMC_Jet55_CutA->Write(); // hMC_Jet55_CutB->Write(); TH1F * hMC_Jet55_CutA_eff = (TH1F*)hMC_Jet55_CutA->Clone("hMC_Jet55_CutA_eff"); hMC_Jet55_CutA_eff->Divide(hMC_Jet55_noCut); hMC_Jet55_CutA_eff->Write(); // TH1F * hMC_Jet55_CutB_eff = (TH1F*)hMC_Jet55_CutB->Clone("hMC_Jet55_CutB_eff"); // hMC_Jet55_CutB_eff->Divide(hMC_Jet55_noCut); // hMC_Jet55_CutB_eff->Write(); // save the unmatched histograms as well: hData_unmatched_Jet80_noCut->Write(); hData_unmatched_Jet80_CutA->Write(); hData_unmatched_Jet80_CutA_rej->Write(); hData_unmatched_Jet65_noCut->Write(); hData_unmatched_Jet65_CutA->Write(); hData_unmatched_Jet65_CutA_rej->Write(); hData_unmatched_Jet55_noCut->Write(); hData_unmatched_Jet55_CutA->Write(); hData_unmatched_Jet55_CutA_rej->Write(); hMC_unmatched_Jet80_noCut->Write(); hMC_unmatched_Jet80_CutA->Write(); hMC_unmatched_Jet80_CutA_rej->Write(); hMC_unmatched_Jet65_noCut->Write(); hMC_unmatched_Jet65_CutA->Write(); hMC_unmatched_Jet65_CutA_rej->Write(); hMC_unmatched_Jet55_noCut->Write(); hMC_unmatched_Jet55_CutA->Write(); hMC_unmatched_Jet55_CutA_rej->Write(); TCanvas * cJet80_CutEfficiency_Jet80 = new TCanvas("cJet80_CutEfficiency_Jet80","",1000,800); cJet80_CutEfficiency_Jet80->Divide(2,1); cJet80_CutEfficiency_Jet80->cd(1); hData_Jet80_CutA_eff->Rebin(5); hData_Jet80_CutA_eff->Scale(1./5); hData_Jet80_CutA_eff->SetMarkerColor(kRed); hData_Jet80_CutA_eff->SetMarkerStyle(24); hData_Jet80_CutA_eff->SetAxisRange(20,600,"X"); hData_Jet80_CutA_eff->SetAxisRange(0,1.2,"Y"); hData_Jet80_CutA_eff->SetXTitle(Form("akPu%dPF p_{T}",radius)); hData_Jet80_CutA_eff->SetTitle("Data"); hData_Jet80_CutA_eff->SetYTitle("Jet80_Cut efficiency"); hData_Jet80_CutA_eff->Draw(); // hData_Jet80_CutB_eff->Rebin(20); // hData_Jet80_CutB_eff->Scale(1./20); // hData_Jet80_CutB_eff->SetMarkerColor(kBlack); // hData_Jet80_CutB_eff->SetMarkerStyle(33); // hData_Jet80_CutB_eff->SetAxisRange(20,600,"X"); // hData_Jet80_CutB_eff->Draw("same"); cJet80_CutEfficiency_Jet80->cd(2); hMC_Jet80_CutA_eff->Rebin(5); hMC_Jet80_CutA_eff->Scale(1./5); hMC_Jet80_CutA_eff->SetMarkerColor(kRed); hMC_Jet80_CutA_eff->SetMarkerStyle(24); hMC_Jet80_CutA_eff->SetAxisRange(20,600,"X"); hMC_Jet80_CutA_eff->SetAxisRange(0,1.2,"Y"); hMC_Jet80_CutA_eff->SetXTitle(Form("akPu%dPF ref p_{T}",radius)); hMC_Jet80_CutA_eff->SetTitle("MC"); hMC_Jet80_CutA_eff->SetYTitle("Jet80_Cut efficiency"); hMC_Jet80_CutA_eff->Draw(); // hMC_Jet80_CutB_eff->Rebin(20); // hMC_Jet80_CutB_eff->Scale(1./20); // hMC_Jet80_CutB_eff->SetMarkerColor(kBlack); // hMC_Jet80_CutB_eff->SetMarkerStyle(33); // hMC_Jet80_CutB_eff->SetAxisRange(20,600,"X"); // hMC_Jet80_CutB_eff->Draw("same"); cJet80_CutEfficiency_Jet80->SaveAs(Form("PbPb_YetkinCuts_Jet80_eMaxSumcand_A_chMaxJtpt_calopfpt_Eff_R0p%d.pdf",radius),"RECREATE"); // TCanvas * cCutRejection_Jet80 = new TCanvas("cCutRejection_Jet80","",1000,800); // hData_Jet80_CutA_rej->Rebin(5); // hData_Jet80_CutA_rej->Scale(1./5); // hData_Jet80_CutA_rej->SetMarkerColor(kRed); // hData_Jet80_CutA_rej->SetMarkerStyle(24); // hData_Jet80_CutA_rej->SetAxisRange(20,600,"X"); // hData_Jet80_CutA_rej->SetAxisRange(0,1.2,"Y"); // hData_Jet80_CutA_rej->SetXTitle("matched akPu3PF p_{T}"); // hData_Jet80_CutA_rej->SetTitle("Data"); // hData_Jet80_CutA_rej->SetYTitle("Jet80_Cut Rejection"); // hData_Jet80_CutA_rej->Draw(); // // hData_Jet80_CutB_rej->Rebin(20); // // hData_Jet80_CutB_rej->Scale(1./20); // // hData_Jet80_CutB_rej->SetMarkerColor(kBlack); // // hData_Jet80_CutB_rej->SetMarkerStyle(33); // // hData_Jet80_CutB_rej->SetAxisRange(20,600,"X"); // // hData_Jet80_CutB_rej->Draw("same"); // cCutRejection_Jet80->SaveAs("PbPb_YetkinCuts_Jet80_eMaxSumcand_A_chMaxJtpt_calopfpt_rejection.pdf","RECREATE"); TCanvas * cJet55_CutEfficiency_Jet55 = new TCanvas("cJet55_CutEfficiency_Jet55","",1000,800); cJet55_CutEfficiency_Jet55->Divide(2,1); cJet55_CutEfficiency_Jet55->cd(1); hData_Jet55_CutA_eff->Rebin(5); hData_Jet55_CutA_eff->Scale(1./5); hData_Jet55_CutA_eff->SetMarkerColor(kRed); hData_Jet55_CutA_eff->SetMarkerStyle(24); hData_Jet55_CutA_eff->SetAxisRange(20,600,"X"); hData_Jet55_CutA_eff->SetAxisRange(0,1.2,"Y"); hData_Jet55_CutA_eff->SetXTitle(Form("akPu%dPF p_{T}",radius)); hData_Jet55_CutA_eff->SetTitle("Data"); hData_Jet55_CutA_eff->SetYTitle("Jet55_Cut efficiency"); hData_Jet55_CutA_eff->Draw(); // hData_Jet55_CutB_eff->Rebin(20); // hData_Jet55_CutB_eff->Scale(1./20); // hData_Jet55_CutB_eff->SetMarkerColor(kBlack); // hData_Jet55_CutB_eff->SetMarkerStyle(33); // hData_Jet55_CutB_eff->SetAxisRange(20,600,"X"); // hData_Jet55_CutB_eff->SetAxisRange(0,1.2,"Y"); // hData_Jet55_CutB_eff->Draw("same"); cJet55_CutEfficiency_Jet55->cd(2); hMC_Jet55_CutA_eff->Rebin(5); hMC_Jet55_CutA_eff->Scale(1./5); hMC_Jet55_CutA_eff->SetMarkerColor(kRed); hMC_Jet55_CutA_eff->SetMarkerStyle(24); hMC_Jet55_CutA_eff->SetAxisRange(20,600,"X"); hMC_Jet55_CutA_eff->SetAxisRange(0,1.2,"Y"); hMC_Jet55_CutA_eff->SetXTitle(Form("akPu%dPF ref p_{T}",radius)); hMC_Jet55_CutA_eff->SetTitle("MC"); hMC_Jet55_CutA_eff->SetYTitle("Jet55_Cut efficiency"); hMC_Jet55_CutA_eff->Draw(); // hMC_Jet55_CutB_eff->Rebin(20); // hMC_Jet55_CutB_eff->Scale(1./20); // hMC_Jet55_CutB_eff->SetMarkerColor(kBlack); // hMC_Jet55_CutB_eff->SetMarkerStyle(33); // hMC_Jet55_CutB_eff->SetAxisRange(20,600,"X"); // hMC_Jet55_CutB_eff->Draw("same"); cJet55_CutEfficiency_Jet55->SaveAs(Form("PbPb_YetkinCuts_Jet55_noJet65noJet80_eMaxSumcand_A_chMaxJtpt_calopfpt_Eff_including_unmatched_R0p%d.pdf",radius),"RECREATE"); // TCanvas * cCutRejection_Jet55 = new TCanvas("cCutRejection_Jet55","",1000,800); // hData_Jet55_CutA_rej->Rebin(5); // hData_Jet55_CutA_rej->Scale(1./5); // hData_Jet55_CutA_rej->SetMarkerColor(kRed); // hData_Jet55_CutA_rej->SetMarkerStyle(24); // hData_Jet55_CutA_rej->SetAxisRange(20,600,"X"); // hData_Jet55_CutA_rej->SetAxisRange(0,1.2,"Y"); // hData_Jet55_CutA_rej->SetXTitle("matched akPu3PF p_{T}"); // hData_Jet55_CutA_rej->SetTitle("Data"); // hData_Jet55_CutA_rej->SetYTitle("Jet55_Cut Rejection"); // hData_Jet55_CutA_rej->Draw(); // // hData_Jet55_CutB_rej->Rebin(20); // // hData_Jet55_CutB_rej->Scale(1./20); // // hData_Jet55_CutB_rej->SetMarkerColor(kBlack); // // hData_Jet55_CutB_rej->SetMarkerStyle(33); // // hData_Jet55_CutB_rej->SetAxisRange(20,600,"X"); // // hData_Jet55_CutB_rej->Draw("same"); // cCutRejection_Jet55->SaveAs("PbPb_YetkinCuts_Jet55_noJet65noJet80_eMaxSumcand_A_chMaxJtpt_calopfpt_rejection_including_unmatched.pdf","RECREATE"); TCanvas * cJet65_CutEfficiency_Jet65 = new TCanvas("cJet65_CutEfficiency_Jet65","",1000,800); cJet65_CutEfficiency_Jet65->Divide(2,1); cJet65_CutEfficiency_Jet65->cd(1); hData_Jet65_CutA_eff->Rebin(5); hData_Jet65_CutA_eff->Scale(1./5); hData_Jet65_CutA_eff->SetMarkerColor(kRed); hData_Jet65_CutA_eff->SetMarkerStyle(24); hData_Jet65_CutA_eff->SetAxisRange(20,600,"X"); hData_Jet65_CutA_eff->SetAxisRange(0,1.2,"Y"); hData_Jet65_CutA_eff->SetXTitle(Form("matched akPu%dPF p_{T}",radius)); hData_Jet65_CutA_eff->SetTitle("Data"); hData_Jet65_CutA_eff->SetYTitle("Jet65_Cut efficiency"); hData_Jet65_CutA_eff->Draw(); // hData_Jet65_CutB_eff->Rebin(20); // hData_Jet65_CutB_eff->Scale(1./20); // hData_Jet65_CutB_eff->SetMarkerColor(kBlack); // hData_Jet65_CutB_eff->SetMarkerStyle(33); // hData_Jet65_CutB_eff->SetAxisRange(20,600,"X"); // hData_Jet65_CutB_eff->Draw("same"); cJet65_CutEfficiency_Jet65->cd(2); hMC_Jet65_CutA_eff->Rebin(5); hMC_Jet65_CutA_eff->Scale(1./5); hMC_Jet65_CutA_eff->SetMarkerColor(kRed); hMC_Jet65_CutA_eff->SetMarkerStyle(24); hMC_Jet65_CutA_eff->SetAxisRange(20,600,"X"); hMC_Jet65_CutA_eff->SetAxisRange(0,1.2,"Y"); hMC_Jet65_CutA_eff->SetXTitle(Form("matched akPu%dPF ref p_{T}",radius)); hMC_Jet65_CutA_eff->SetTitle("MC"); hMC_Jet65_CutA_eff->SetYTitle("Jet65_Cut efficiency"); hMC_Jet65_CutA_eff->Draw(); // hMC_Jet65_CutB_eff->Rebin(20); // hMC_Jet65_CutB_eff->Scale(1./20); // hMC_Jet65_CutB_eff->SetMarkerColor(kBlack); // hMC_Jet65_CutB_eff->SetMarkerStyle(33); // hMC_Jet65_CutB_eff->SetAxisRange(20,600,"X"); // hMC_Jet65_CutB_eff->Draw("same"); cJet65_CutEfficiency_Jet65->SaveAs(Form("PbPb_YetkinCuts_Jet65_noJet80_eMaxSumcand_A_chMaxJtpt_calopfpt_Eff_including_unmatched_R0p%d.pdf",radius),"RECREATE"); // TCanvas * cCutRejection_Jet65 = new TCanvas("cCutRejection_Jet65","",1000,800); // hData_Jet65_CutA_rej->Rebin(5); // hData_Jet65_CutA_rej->Scale(1./5); // hData_Jet65_CutA_rej->SetMarkerColor(kRed); // hData_Jet65_CutA_rej->SetMarkerStyle(24); // hData_Jet65_CutA_rej->SetAxisRange(20,600,"X"); // hData_Jet65_CutA_rej->SetAxisRange(0, 1.2,"Y"); // hData_Jet65_CutA_rej->SetXTitle("matched akPu3PF p_{T}"); // hData_Jet65_CutA_rej->SetTitle("Data"); // hData_Jet65_CutA_rej->SetYTitle("Jet65_Cut Rejection"); // hData_Jet65_CutA_rej->Draw(); // // hData_Jet65_CutB_rej->Rebin(20); // // hData_Jet65_CutB_rej->Scale(1./20); // // hData_Jet65_CutB_rej->SetMarkerColor(kBlack); // // hData_Jet65_CutB_rej->SetMarkerStyle(33); // // hData_Jet65_CutB_rej->SetAxisRange(20,600,"X"); // // hData_Jet65_CutB_rej->Draw("same"); // cCutRejection_Jet65->SaveAs("PbPb_YetkinCuts_Jet65_noJet80_eMaxSumcand_A_chMaxJtpt_calopfpt_rejection_including_unmatched.pdf","RECREATE"); // plot the trigger combination from this, and the total cut efficiency: TH1F * hData_Jet80 = (TH1F*)hData_Jet80_CutA->Clone("hData_Jet80"); TH1F * hData_Jet65 = (TH1F*)hData_Jet65_CutA->Clone("hData_Jet65"); TH1F * hData_Jet55 = (TH1F*)hData_Jet55_CutA->Clone("hData_Jet55"); TH1F * hData_Combined = (TH1F*)hData_Jet80->Clone("hData_Combined"); hData_Combined->Add(hData_Jet65); hData_Combined->Add(hData_Jet55); hData_Combined->Print("base"); TH1F * hData_noCut_Jet80 = (TH1F*)hData_Jet80_noCut->Clone("hData_noCut_Jet80"); TH1F * hData_noCut_Jet65 = (TH1F*)hData_Jet65_noCut->Clone("hData_noCut_Jet65"); TH1F * hData_noCut_Jet55 = (TH1F*)hData_Jet55_noCut->Clone("hData_noCut_Jet55"); TH1F * hData_noCut_Combined = (TH1F*)hData_noCut_Jet80->Clone("hData_noCut_Combined"); hData_noCut_Combined->Add(hData_noCut_Jet65); hData_noCut_Combined->Add(hData_noCut_Jet55); hData_noCut_Combined->Print("base"); TH1F * hMC_Jet80 = (TH1F*)hMC_Jet80_CutA->Clone("hMC_Jet80"); TH1F * hMC_Jet65 = (TH1F*)hMC_Jet65_CutA->Clone("hMC_Jet65"); TH1F * hMC_Jet55 = (TH1F*)hMC_Jet55_CutA->Clone("hMC_Jet55"); TH1F * hMC_Combined = (TH1F*)hMC_Jet80->Clone("hMC_Combined"); hMC_Combined->Add(hMC_Jet65); hMC_Combined->Add(hMC_Jet55); hMC_Combined->Print("base"); TH1F * hMC_noCut_Jet80 = (TH1F*)hMC_Jet80_noCut->Clone("hMC_noCut_Jet80"); TH1F * hMC_noCut_Jet65 = (TH1F*)hMC_Jet65_noCut->Clone("hMC_noCut_Jet65"); TH1F * hMC_noCut_Jet55 = (TH1F*)hMC_Jet55_noCut->Clone("hMC_noCut_Jet55"); TH1F * hMC_noCut_Combined = (TH1F*)hMC_noCut_Jet80->Clone("hMC_noCut_Combined"); hMC_noCut_Combined->Add(hMC_noCut_Jet65); hMC_noCut_Combined->Add(hMC_noCut_Jet55); hMC_noCut_Combined->Print("base"); TH1F * hData_Combined_Efficiency = (TH1F*)hData_Combined->Clone("hData_Combined_Efficiency"); hData_Combined_Efficiency->Divide(hData_noCut_Combined); hData_Combined_Efficiency->Print("base"); TH1F * hMC_Combined_Efficiency = (TH1F*)hMC_Combined->Clone("hMC_Combined_Efficiency"); hMC_Combined_Efficiency->Divide(hMC_noCut_Combined); hMC_Combined_Efficiency->Print("base"); TCanvas * cCombinedEff = new TCanvas("cCombinedEff","",800,600); hData_Combined_Efficiency->SetXTitle("Jet p_{T}"); hData_Combined_Efficiency->SetYTitle("Combined Jet ID cut efficiency"); hData_Combined_Efficiency->SetMarkerStyle(20); hData_Combined_Efficiency->SetMarkerColor(kBlack); hData_Combined_Efficiency->Rebin(10); hData_Combined_Efficiency->Scale(1/10); hData_Combined_Efficiency->SetAxisRange(30,350,"X"); hData_Combined_Efficiency->Draw(); hMC_Combined_Efficiency->SetMarkerStyle(24); hMC_Combined_Efficiency->SetMarkerColor(kRed); hMC_Combined_Efficiency->Rebin(10); hMC_Combined_Efficiency->Scale(1/10); hMC_Combined_Efficiency->Draw("same"); cCombinedEff->SaveAs(Form("Combined_trigger_efficiency_YetkinCut_R0p%d.pdf",radius),"RECREATE"); TCanvas * cTriggerCombination = new TCanvas("cTriggerCombination","",800,600); cTriggerCombination->SetLogy(); hData_Combined->SetMarkerColor(kBlack); hData_Combined->SetMarkerStyle(25); hData_Combined->SetAxisRange(30,350,"X"); //hData_Combined->SetXTitle(""); //hData_Combined->Draw(); hData_Jet80->SetMarkerColor(kRed); hData_Jet80->SetMarkerStyle(20); hData_Jet80->Draw("same"); hData_Jet65->SetMarkerColor(kBlue); hData_Jet65->SetMarkerStyle(20); hData_Jet65->Draw("same"); hData_Jet55->SetMarkerColor(kGreen); hData_Jet55->SetMarkerStyle(20); hData_Jet55->Draw("same"); //drawText() cTriggerCombination->SaveAs(Form("TriggerCombination_YetkinCuts_R0p%d.pdf",radius),"RECREATE"); #endif }