1 /**************************************************************************
2 * Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 // Comment describing what this class does needed!
18 //===========================================================
19 // Dummy comment, should be replaced by a real one
22 // Simple class for the jt anlyais by Beomkyu Kim and Dongjo Kim
23 //===========================================================
30 #include "AliJEfficiency.h"
31 #include "AliJJetJtAnalysis.h"
32 #include "AliJHistManager.h"
33 #include "TClonesArray.h"
35 AliJJetJtAnalysis::AliJJetJtAnalysis():
41 , fJetTriggPtBorders(NULL)
42 , fJetConstPtLowLimits(NULL)
43 , fJetAssocPtBorders(NULL)
44 , fDeltaRBorders(NULL)
72 , fhJtWithPtCutWeightBinBin()
73 , fhLogJtWithPtCutWeightBinBin()
75 , fhJtWeightBinLimBin()
76 , fhLogJtWeightBinLimBin()
84 , fhBgLogJtWeightBin()
85 , fhBgJtWithPtCutWeightBinBin()
86 , fhBgLogJtWithPtCutWeightBinBin()
89 , fhFullJetEChJetBin()
90 , fhFullChdRChJetBin()
92 , fh2DFullEvsChEdNnot0()
97 AliJJetJtAnalysis::AliJJetJtAnalysis( AliJCard * card ):
103 , fJetTriggPtBorders(NULL)
104 , fJetConstPtLowLimits(NULL)
105 , fJetAssocPtBorders(NULL)
106 , fDeltaRBorders(NULL)
109 , fJJetAnalysis(NULL)
134 , fhJtWithPtCutWeightBinBin()
135 , fhLogJtWithPtCutWeightBinBin()
137 , fhJtWeightBinLimBin()
138 , fhLogJtWeightBinLimBin()
146 , fhBgLogJtWeightBin()
147 , fhBgJtWithPtCutWeightBinBin()
148 , fhBgLogJtWithPtCutWeightBinBin()
151 , fhFullJetEChJetBin()
152 , fhFullChdRChJetBin()
153 , fh2DFullEvsChEdN0()
154 , fh2DFullEvsChEdNnot0()
159 AliJJetJtAnalysis::AliJJetJtAnalysis(const AliJJetJtAnalysis& ap) :
160 fInputList(ap.fInputList)
161 , fJetList(ap.fJetList)
162 , fJetListOfList(ap.fJetListOfList)
163 //, fJetBgList(ap.fJetBgList)
164 , fJetBgListOfList(ap.fJetBgListOfList)
165 , fJetTriggPtBorders(ap.fJetTriggPtBorders)
166 , fJetConstPtLowLimits(ap.fJetConstPtLowLimits)
167 , fJetAssocPtBorders(ap.fJetAssocPtBorders)
168 , fDeltaRBorders(ap.fDeltaRBorders)
169 , nJetContainer(ap.nJetContainer)
171 , fJJetAnalysis(ap.fJJetAnalysis)
172 , fJetFinderName(ap.fJetFinderName)
173 , fConeSizes(ap.fConeSizes)
174 , fEfficiency(ap.fEfficiency)
179 , fTracks(ap.fTracks)
181 , fJetFinderBin(ap.fJetFinderBin)
182 , fJetTriggerBin(ap.fJetTriggerBin)
183 , fTrkPtBin(ap.fTrkPtBin)
184 , fTrkLimPtBin(ap.fTrkLimPtBin)
186 , fhNumber(ap.fhNumber)
187 , fhKNumber(ap.fhKNumber)
188 , fhJetPt(ap.fhJetPt)
189 , fhJetPtBin(ap.fhJetPtBin)
193 , fhJtBin(ap.fhJtBin)
194 , fhJtWeightBin(ap.fhJtWeightBin)
195 , fhLogJtWeightBin(ap.fhLogJtWeightBin)
196 , fhJtWithPtCutWeightBinBin(ap.fhJtWithPtCutWeightBinBin)
197 , fhLogJtWithPtCutWeightBinBin(ap.fhLogJtWithPtCutWeightBinBin)
198 , fhJtBinLimBin(ap.fhJtBinLimBin)
199 , fhJtWeightBinLimBin(ap.fhJtWeightBinLimBin)
200 , fhLogJtWeightBinLimBin(ap.fhLogJtWeightBinLimBin)
201 , fhJetBgPt(ap.fhJetBgPt)
202 , fhJetBgPtBin(ap.fhJetBgPtBin)
204 , fhBgZBin(ap.fhBgZBin)
206 , fhBgJtBin(ap.fhBgJtBin)
207 , fhBgJtWeightBin(ap.fhBgJtWeightBin)
208 , fhBgLogJtWeightBin(ap.fhBgLogJtWeightBin)
209 , fhBgJtWithPtCutWeightBinBin(ap.fhBgJtWithPtCutWeightBinBin)
210 , fhBgLogJtWithPtCutWeightBinBin(ap.fhBgLogJtWithPtCutWeightBinBin)
211 , fhdeltaE(ap.fhdeltaE)
212 , fhdeltaN(ap.fhdeltaN)
213 , fhFullJetEChJetBin(ap.fhFullJetEChJetBin)
214 , fhFullChdRChJetBin(ap.fhFullChdRChJetBin)
215 , fh2DFullEvsChEdN0(ap.fh2DFullEvsChEdN0)
216 , fh2DFullEvsChEdNnot0(ap.fh2DFullEvsChEdNnot0)
221 AliJJetJtAnalysis& AliJJetJtAnalysis::operator = (const AliJJetJtAnalysis& ap)
223 // assignment operator
225 this->~AliJJetJtAnalysis();
226 new(this) AliJJetJtAnalysis(ap);
231 AliJJetJtAnalysis::~AliJJetJtAnalysis(){
234 delete fJJetAnalysis;
235 fJetFinderName.clear();
246 void AliJJetJtAnalysis::UserCreateOutputObjects(){
247 //fJetListOfList always point one address in the whole time of this analysis.
248 //Thus mustn't be cleared in it's life.
249 //fJetListOfList.Clear();
252 fJJetAnalysis = new AliJJetAnalysis();
254 fJetTriggPtBorders = fCard->GetVector("JetTriggPtBorders");
255 fJetConstPtLowLimits = fCard->GetVector("JetConstPtLowLimits");
256 fJetAssocPtBorders = fCard->GetVector("JetAssocPtBorders");
257 fDeltaRBorders = fCard->GetVector("DeltaRBorders");
259 fEfficiency = new AliJEfficiency();
260 fEfficiency->SetMode( fCard->Get("EfficiencyMode") ); // 0:NoEff, 1:Period 2:RunNum 3:Auto
261 fEfficiency->SetDataPath("alien:///alice/cern.ch/user/d/djkim/legotrain/efficieny/data"); // Efficiency root file location local or alien
263 TRegexp reg("R[0-9][0-9][0-9]");
264 TRegexp reg2("[0-9][0-9][0-9]");
266 //container name has information of cone size like **R040**
267 //this cone size information will be pulled to a numerical variable
268 nJetContainer = fJetFinderName.size();
269 fJetBgListOfList.resize(nJetContainer, TClonesArray("AliJJet",100));
270 for (int i=0; i<nJetContainer; i++){
271 //AliJJetJtHistos *histo = new AliJJetJtHistos(fCard);
272 //histo->CreateJetJtHistos();
273 // fHistos.push_back( histo );
274 TString fullNameOfiJetContainer(fJetFinderName[i]);
275 TString coneSizeName (fullNameOfiJetContainer(reg));
276 TString coneSizeValue (coneSizeName(reg2));
277 fConeSizes.push_back( (double) coneSizeValue.Atoi()/100.);
282 double LogBinsX[NBINS+1], LimL=0.1, LimH=150;
283 double logBW = (log(LimH)-log(LimL))/NBINS;
284 for(int ij=0;ij<=NBINS;ij++) LogBinsX[ij]=LimL*exp(ij*logBW);
288 fHMG = new AliJHistManager( "AliJJetJtHistManager");
289 fJetFinderBin .Set("JetFinderOrder","NFin","NFin:%d", AliJBin::kSingle).SetBin(nJetContainer);
290 fJetTriggerBin .Set("JetTriggerBin","JetPt","p_{T,jet} : %.1f - %.1f").SetBin(fCard->GetVector("JetTriggPtBorders"));
291 fTrkPtBin .Set("TrkPtBin","TrkPt","p_{T,constituent}:%.1f-%.1f").SetBin(fCard->GetVector("JetAssocPtBorders"));
292 fTrkLimPtBin .Set("TrkLimitPtBin","TrkLimitPt","p_{T,Limit}<%.1f", AliJBin::kSingle).SetBin(fJetConstPtLowLimits->GetNoElements());
293 fdRBin.Set("dRBin","dR","dR : %.1f - %.1f ").SetBin(fCard->GetVector("DeltaRBorders"));
296 << TH1D("hNumber","Number",6,0,6) << fJetFinderBin
300 << TH1D("hKNumber","KNumber",17,0,17) << fJetFinderBin
304 << TH1D("JetPt","",NBINS, LogBinsX ) << fJetFinderBin
307 << TH1D("JetPtBin","",NBINS, LogBinsX ) << fJetFinderBin << fJetTriggerBin
311 double LogBinsZ[NBINSZ+1], LimLZ=0.001, LimHZ=1.1;
312 double logBWZ = (TMath::Log(LimHZ)-TMath::Log(LimLZ))/NBINSZ;
313 for(int ij=0;ij<=NBINSZ;ij++) LogBinsZ[ij]=LimLZ*exp(ij*logBWZ);//
316 << TH1D("Z","",NBINSZ, LogBinsZ ) << fJetFinderBin
319 << TH1D("ZBin","",NBINSZ, LogBinsZ ) << fJetFinderBin << fJetTriggerBin
323 double LogBinsJt[NBINSJt+1], LimLJt=0.01, LimHJt=10;
324 double logBWJt = (TMath::Log(LimHJt)-TMath::Log(LimLJt))/NBINSJt;
325 for(int ij=0;ij<=NBINSJt;ij++) LogBinsJt[ij]=LimLJt*exp(ij*logBWJt);
327 double LimLJtW=TMath::Log(0.01), LimHJtW=TMath::Log(10);
330 << TH1D("Jt","",NBINSJt, LogBinsJt ) << fJetFinderBin
333 << TH1D("JtBin","",NBINSJt, LogBinsJt ) << fJetFinderBin << fJetTriggerBin
336 << TH1D("JtWeightBin","",NBINSJt, LogBinsJt ) << fJetFinderBin << fJetTriggerBin
339 << TH1D("LogJtWeightBin","",NBINSJtW, LimLJtW, LimHJtW ) << fJetFinderBin << fJetTriggerBin
342 fhJtWithPtCutWeightBinBin
343 << TH1D("JtWithPtCutWeightBinBin","",NBINSJt, LogBinsJt ) << fJetFinderBin << fJetTriggerBin << fTrkPtBin
345 fhLogJtWithPtCutWeightBinBin
346 << TH1D("LogJtWeightBinBin","",NBINSJtW, LimLJtW, LimHJtW ) << fJetFinderBin << fJetTriggerBin << fTrkPtBin
350 << TH1D("JtBinLimBin","",NBINSJt, LogBinsJt ) << fJetFinderBin << fJetTriggerBin << fTrkLimPtBin
353 << TH1D("JtWeightBinLimBin","",NBINSJt, LogBinsJt ) << fJetFinderBin << fJetTriggerBin << fTrkLimPtBin
355 fhLogJtWeightBinLimBin
356 << TH1D("LogJtWeightBinLimBin","",NBINSJtW, LimLJtW, LimHJtW ) << fJetFinderBin << fJetTriggerBin << fTrkLimPtBin
360 << TH1D("JetBgPt","",NBINS, LogBinsX ) << fJetFinderBin
363 << TH1D("JetBgPtBin","",NBINS, LogBinsX ) << fJetFinderBin << fJetTriggerBin
366 << TH1D("BgZ","",NBINSZ, LogBinsZ ) << fJetFinderBin
369 << TH1D("BgZBin","",NBINSZ, LogBinsZ ) << fJetFinderBin << fJetTriggerBin
374 << TH1D("BgJt","",NBINSJt, LogBinsJt ) << fJetFinderBin
377 << TH1D("BgJtBin","",NBINSJt, LogBinsJt ) << fJetFinderBin << fJetTriggerBin
380 << TH1D("BgJtWeightBin","",NBINSJt, LogBinsJt ) << fJetFinderBin << fJetTriggerBin
383 << TH1D("BgLogJtWeightBin","",NBINSJtW, LimLJtW, LimHJtW ) << fJetFinderBin << fJetTriggerBin
386 fhBgJtWithPtCutWeightBinBin
387 << TH1D("BgJtWithPtCutWeightBinBin","",NBINSJt, LogBinsJt ) << fJetFinderBin << fJetTriggerBin << fTrkPtBin
389 fhBgLogJtWithPtCutWeightBinBin
390 << TH1D("BgLogJtWeightBin","",NBINSJtW, LimLJtW, LimHJtW ) << fJetFinderBin << fJetTriggerBin << fTrkPtBin
395 double LimLdeltaN=-19.5, LimHdeltaN=19.5;
397 << TH1D("hdeltaN","",NBINSdeltaN,LimLdeltaN,LimHdeltaN )
398 << fJetTriggerBin << fdRBin <<"END";
401 double LimLdeltaE=-20, LimHdeltaE=20;
403 << TH1D("hdeltaE","",NBINSdeltaE,LimLdeltaE,LimHdeltaE )
404 << fJetTriggerBin << fdRBin <<"END";
408 << TH1D("hFullJetEChJetBin","",NBINS, LogBinsX ) << fJetTriggerBin
411 int nDR = 1000;double xDR0= -10; double xDR1 = 10;
413 << TH1D("hFullChdRChJetBin","",nDR,xDR0,xDR1) << fJetTriggerBin
417 << TH2D("h2DFullEvsChEdN0","",NBINS, LogBinsX, NBINS, LogBinsX )
421 << TH2D("h2DFullEvsChEdNnot0","",NBINS, LogBinsX, NBINS, LogBinsX )
431 void AliJJetJtAnalysis::ClearBeforeEvent(){
432 //fJetListOfList.Clear();
437 void AliJJetJtAnalysis::UserExec(){
438 for( int i=0;i<fJetListOfList.GetEntries();i++ ){
439 TObjArray * Jets = (TObjArray*) fJetListOfList[i];
443 this->FillJtHistogram(Jets,i);
447 int iS1 = 0; //full 0.4
448 int iS2 = 3; //Ch 0.4
449 TObjArray * jetfinder1 = (TObjArray*) fJetListOfList[iS1];
450 TObjArray * jetfinder2 = (TObjArray*) fJetListOfList[iS2];
451 AliJJet *jet1 = NULL;
452 AliJJet *jet2 = NULL;
454 int chEbin=-1, rbin=-1;
457 for (int ijet = 0; ijet<jetfinder1->GetEntriesFast(); ijet++){
458 jet1 = dynamic_cast<AliJJet*>( jetfinder1->At(ijet) );
460 for (int jjet = 0; jjet<jetfinder2->GetEntriesFast(); jjet++){
461 cout<<"Check new system is working"<<endl;
462 cout<<"Check new system is working2"<<endl;
463 jet2 = dynamic_cast<AliJJet*>( jetfinder2->At(jjet) );
465 chEbin = GetBin(fJetTriggPtBorders,jet2->E());
466 deltaeta = TMath::Abs(jet1->Eta()-jet2->Eta());
467 rbin = GetBin(fDeltaRBorders,deltaeta);
468 fJJetAnalysis->CompareTwoJets(jet1, jet2, dE, dN);
469 if (chEbin < 0 || rbin < 0 ) continue;
470 fhdeltaE[chEbin][rbin]->Fill(dE);
471 fhdeltaN[chEbin][rbin]->Fill(dN);
473 fhFullJetEChJetBin[chEbin]->Fill(jet1->E());
474 fhFullChdRChJetBin[chEbin]->Fill(jet1->DeltaR(*jet2));
475 fh2DFullEvsChEdN0->Fill(jet1->E(), jet2->E());
477 fh2DFullEvsChEdNnot0->Fill(jet1->E(), jet2->E());
486 void AliJJetJtAnalysis::WriteHistograms(){
489 TDirectory * cwd = gDirectory;
490 //const int nJetContainer = fJetListOfList.GetEntries();
493 for (int i=0; i<nJetContainer; i++){
494 TDirectory *nwd = gDirectory->mkdir(fJetFinderName[i]);
496 //fHistos[i]->WriteHistograms();
505 void AliJJetJtAnalysis::FillJtHistogram( TObjArray *Jets , int iContainer)
519 //double Y , deltaY = 0;
520 //double Phi, deltaPhi;
522 //cout<<"histogram filling number of jets : "<<Jets->GetEntriesFast()<<endl;
524 TLorentzVector vOrtho;
525 fJetBgListOfList[iContainer].Clear();
526 TClonesArray & bgjets = fJetBgListOfList[iContainer];
532 double deltaEta = -999;
533 double deltaPhi = -999;
534 double effCorrection = -1;
535 double thisConeSize = fConeSizes[iContainer] ;
538 // iJet loop for an event
539 for (int i = 0; i<Jets->GetEntries(); i++){
540 AliJJet *jet = dynamic_cast<AliJJet*>( Jets->At(i) );
542 if (pT<(*fJetTriggPtBorders)[1]) continue;
543 iBin = GetBin(fJetTriggPtBorders,pT); // fill jetPt histos
544 if( iBin < 0 ) continue;
545 fhJetPt[iContainer]->Fill( pT );
546 fhJetPtBin[iContainer][iBin]->Fill( pT );
548 for (int icon = 0; icon<jet->GetConstituents()->GetEntries(); icon++){
549 AliJBaseTrack *con = jet->GetConstituent(icon);
550 if (con->Pt()>conPtMax) conPtMax = con->Pt();
553 for (int ii = fJetConstPtLowLimits->GetNoElements(); ii >= 1 ; ii--) { // could also be done using GetBin( ... )
554 if (conPtMax > (*fJetConstPtLowLimits)[ii]) { // if JetConstPtLowLimits={a,...,b} -> ConPtBinBorders={a,...,b,c}
555 jBin = ii-1; // where c(>>b) is ''sufficiently'' high
561 //iConstituent loop for the iJet
562 //jt, z are calcualted and filled
563 for (int icon = 0; icon<jet->GetConstituents()->GetEntries(); icon++){
564 AliJBaseTrack *constituent = jet->GetConstituent(icon);
565 z = (constituent->Vect()*jet->Vect().Unit())/jet->P();
566 pta = constituent->Pt();
567 constituent->SetTrackEff( fEfficiency->GetCorrection( pta, 5, fcent) );
568 effCorrection = 1.0/constituent->GetTrackEff();
569 iptaBin = GetBin(fJetAssocPtBorders, pta);
570 if( iptaBin < 0 ) continue;
573 fhZ[iContainer]->Fill( z , effCorrection);
574 fhZBin[iContainer][iBin]->Fill( z , effCorrection);
575 jt = (constituent->Vect()-z*jet->Vect()).Mag();
576 fhJt[iContainer]->Fill( jt , effCorrection);
577 fhJtBin[iContainer][iBin]->Fill( jt , effCorrection);
578 fhJtWeightBin[iContainer][iBin]->Fill( jt, 1.0/jt * effCorrection );
579 fhLogJtWeightBin[iContainer][iBin]->Fill( TMath::Log(jt), 1.0/jt * effCorrection );
583 if (iptaBin < 0) continue;
584 fhJtWithPtCutWeightBinBin[iContainer][iBin][iptaBin]->Fill( jt, 1.0/jt * effCorrection );
585 fhLogJtWithPtCutWeightBinBin[iContainer][iBin][iptaBin]->Fill( TMath::Log(jt), 1.0/jt * effCorrection);
587 for (int jj = 0; jj <= jBin ; jj++) {
588 fhJtBinLimBin[iContainer][iBin][jj]->Fill( jt, effCorrection );
589 fhJtWeightBinLimBin[iContainer][iBin][jj]->Fill( jt, 1.0/jt * effCorrection );
590 fhLogJtWeightBinLimBin[iContainer][iBin][jj]->Fill( TMath::Log(jt), 1.0/jt * effCorrection );
591 //histos->fHistosJT[0][0][iBin][jj]->Fill( TMath::Log(jt), 1.0/jt );
598 vOrtho.SetVect(jet->Vect().Orthogonal());
599 vOrtho.SetE(jet->E());
600 //if (Log) cout<<"Before R caluation, R = "<<TMath::Sqrt(it->area()/TMath::Pi())<<endl;
601 //R_area = TMath::Sqrt(it->area()/TMath::Pi())*Rs[order]/R;
602 //if (Log )cout<<"Rs[order] = "<<Rs[order]<<" R = "<<R<<" Bg R area : "<<R_area<<endl;
604 //Background jet (iBgJet) will be produced. This background jet is orthogonal to the iJet.
605 //If there is another jJet, then iBgJet will be consecutevely moved not to have jJet in the cone size.
606 if (Jets->GetEntries()>1){
607 fhNumber[iContainer]->Fill(3.5);
608 for (int j = 0; j<Jets->GetEntries(); j++){
609 if (i == j) continue;
610 AliJJet *jet2 = dynamic_cast<AliJJet*>( Jets->At(j) );
613 fhNumber[iContainer]->Fill(5.5);
618 deltaEta = vOrtho.Eta() - jet2->Eta();
619 deltaPhi = vOrtho.Phi() - jet2->Phi();
620 deltaR = TMath::Sqrt(deltaEta*deltaEta + deltaPhi*deltaPhi);
621 if ( deltaR < thisConeSize) {
623 vOrtho.Rotate(TMath::Pi()/8, jet->Vect());
626 fhNumber[iContainer]->Fill(4.5);
630 fhKNumber[iContainer]->Fill(k);
633 // Filling iBgJet, Bgjt and Bgz
634 // "k<16" means that we will select a iBgJet which hasn't moved
635 // more than 16 times by the process above
638 new (bgjets[iBgJet]) AliJJet(vOrtho.Px(),vOrtho.Py(), vOrtho.Pz(), vOrtho.E(), i ,0,0);
639 AliJJet * jbg = (AliJJet*) fJetBgListOfList[iContainer][iBgJet];
643 if (pT<(*fJetTriggPtBorders)[1]) continue;
645 fhJetBgPt[iContainer]->Fill( pT );
646 //bbfHistos[iContainer]->fhJetBgPtWeight->Fill( pT, 1./pT);
647 iBin = GetBin(fJetTriggPtBorders, pT);
648 if( iBin < 0 ) continue;
649 fhJetBgPtBin[iContainer][iBin]->Fill( pT );
652 for (int icon = 0; icon<fTracks->GetEntries(); icon++){
653 AliJBaseTrack *track = dynamic_cast<AliJBaseTrack*>(fTracks->At(icon));
654 if (!track) continue;
655 deltaEta = vOrtho.Eta() - track->Eta();
656 deltaPhi = vOrtho.Phi() - track->Phi();
657 deltaR = TMath::Sqrt(deltaEta*deltaEta + deltaPhi*deltaPhi);
658 if ( deltaR > thisConeSize) continue;
660 jbg->AddConstituent(track);
663 if (pta > maxconpt) maxconpt = pta;
664 track->SetTrackEff( fEfficiency->GetCorrection( pta, 5, fcent) );
665 effCorrection = 1.0/track->GetTrackEff();
666 iptaBin = GetBin(fJetAssocPtBorders, pta);
667 if( iptaBin < 0 ) continue;
670 z = (track->Vect()*vOrtho.Vect().Unit())/vOrtho.P();
671 fhBgZ[iContainer]->Fill( z , effCorrection);
672 fhBgZBin[iContainer][iBin]->Fill( z , effCorrection);
674 jt = (track->Vect()-z*vOrtho.Vect()).Mag();
675 fhBgJt[iContainer]->Fill( jt , effCorrection);
676 fhBgJtBin[iContainer][iBin]->Fill( jt , effCorrection);
677 fhBgJtWeightBin[iContainer][iBin]->Fill( jt, 1.0/jt * effCorrection );
678 fhBgLogJtWeightBin[iContainer][iBin]->Fill( TMath::Log(jt), 1.0/jt * effCorrection );
680 if (iptaBin < 0) continue;
681 fhBgJtWithPtCutWeightBinBin[iContainer][iBin][iptaBin]->Fill( jt, 1.0/jt * effCorrection );
682 fhBgLogJtWithPtCutWeightBinBin[iContainer][iBin][iptaBin]->Fill( TMath::Log(jt), 1.0/jt * effCorrection );