]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - JETAN/AliAnalysisTaskJetCluster.cxx
Adding rho's depenence on trigger track (M. Verweij)
[u/mrichter/AliRoot.git] / JETAN / AliAnalysisTaskJetCluster.cxx
index 3e1bf13c76277f4da772205c429636deca8dd799..43b75ddbfb954953e76525ad94ef6ad3edd68d7f 100644 (file)
@@ -124,6 +124,7 @@ AliAnalysisTaskJetCluster::AliAnalysisTaskJetCluster():
   fVtxR2Cut(1),
   fCentCutUp(0),
   fCentCutLo(0),
+  fStoreRhoLeadingTrackCorr(kFALSE),
   fNonStdBranch(""),
   fBackgroundBranch(""),
   fNonStdFile(""),
@@ -138,6 +139,7 @@ AliAnalysisTaskJetCluster::AliAnalysisTaskJetCluster():
   fhEffH3(0x0),
   fUseTrPtResolutionSmearing(kFALSE),
   fUseDiceEfficiency(kFALSE),
+  fDiceEfficiencyMinPt(0.),
   fUseTrPtResolutionFromOADB(kFALSE),
   fUseTrEfficiencyFromOADB(kFALSE),
   fPathTrPtResolution(""),
@@ -211,6 +213,26 @@ AliAnalysisTaskJetCluster::AliAnalysisTaskJetCluster():
   fh2PtNchNRan(0x0),
   fh2TracksLeadingJetPhiPtRan(0x0),
   fh2TracksLeadingJetPhiPtWRan(0x0),
+  fh2CentvsRho(0x0),
+  fh2CentvsSigma(0x0),
+  fh2MultvsRho(0x0),
+  fh2MultvsSigma(0x0),
+  fh3CentvsRhoLeadingTrackPtQ1(0x0),
+  fh3CentvsRhoLeadingTrackPtQ2(0x0),
+  fh3CentvsRhoLeadingTrackPtQ3(0x0),
+  fh3CentvsRhoLeadingTrackPtQ4(0x0),
+  fh3CentvsSigmaLeadingTrackPtQ1(0x0),
+  fh3CentvsSigmaLeadingTrackPtQ2(0x0),
+  fh3CentvsSigmaLeadingTrackPtQ3(0x0),
+  fh3CentvsSigmaLeadingTrackPtQ4(0x0),
+  fh3MultvsRhoLeadingTrackPtQ1(0x0),
+  fh3MultvsRhoLeadingTrackPtQ2(0x0),
+  fh3MultvsRhoLeadingTrackPtQ3(0x0),
+  fh3MultvsRhoLeadingTrackPtQ4(0x0),
+  fh3MultvsSigmaLeadingTrackPtQ1(0x0),
+  fh3MultvsSigmaLeadingTrackPtQ2(0x0),
+  fh3MultvsSigmaLeadingTrackPtQ3(0x0),
+  fh3MultvsSigmaLeadingTrackPtQ4(0x0),
   fh2PtGenPtSmeared(0x0),
   fp1Efficiency(0x0),
   fp1PtResolution(0x0),
@@ -261,6 +283,7 @@ AliAnalysisTaskJetCluster::AliAnalysisTaskJetCluster(const char* name):
   fVtxR2Cut(1),
   fCentCutUp(0),
   fCentCutLo(0),
+  fStoreRhoLeadingTrackCorr(kFALSE),
   fNonStdBranch(""),
   fBackgroundBranch(""),
   fNonStdFile(""),
@@ -275,6 +298,7 @@ AliAnalysisTaskJetCluster::AliAnalysisTaskJetCluster(const char* name):
   fhEffH3(0x0),
   fUseTrPtResolutionSmearing(kFALSE),
   fUseDiceEfficiency(kFALSE),
+  fDiceEfficiencyMinPt(0.),
   fUseTrPtResolutionFromOADB(kFALSE),
   fUseTrEfficiencyFromOADB(kFALSE),
   fPathTrPtResolution(""),
@@ -348,6 +372,26 @@ AliAnalysisTaskJetCluster::AliAnalysisTaskJetCluster(const char* name):
   fh2PtNchNRan(0x0),
   fh2TracksLeadingJetPhiPtRan(0x0),
   fh2TracksLeadingJetPhiPtWRan(0x0),
+  fh2CentvsRho(0x0),
+  fh2CentvsSigma(0x0),
+  fh2MultvsRho(0x0),
+  fh2MultvsSigma(0x0),
+  fh3CentvsRhoLeadingTrackPtQ1(0x0),
+  fh3CentvsRhoLeadingTrackPtQ2(0x0),
+  fh3CentvsRhoLeadingTrackPtQ3(0x0),
+  fh3CentvsRhoLeadingTrackPtQ4(0x0),
+  fh3CentvsSigmaLeadingTrackPtQ1(0x0),
+  fh3CentvsSigmaLeadingTrackPtQ2(0x0),
+  fh3CentvsSigmaLeadingTrackPtQ3(0x0),
+  fh3CentvsSigmaLeadingTrackPtQ4(0x0),
+  fh3MultvsRhoLeadingTrackPtQ1(0x0),
+  fh3MultvsRhoLeadingTrackPtQ2(0x0),
+  fh3MultvsRhoLeadingTrackPtQ3(0x0),
+  fh3MultvsRhoLeadingTrackPtQ4(0x0),
+  fh3MultvsSigmaLeadingTrackPtQ1(0x0),
+  fh3MultvsSigmaLeadingTrackPtQ2(0x0),
+  fh3MultvsSigmaLeadingTrackPtQ3(0x0),
+  fh3MultvsSigmaLeadingTrackPtQ4(0x0),
   fh2PtGenPtSmeared(0x0),
   fp1Efficiency(0x0),
   fp1PtResolution(0x0),
@@ -608,6 +652,60 @@ void AliAnalysisTaskJetCluster::UserCreateOutputObjects()
   fh2TracksLeadingJetPhiPtWRan = new TH2F("fh2TracksLeadingJetPhiPtWRan","leading p_T vs delta phi to leading jet;#Delta#phi;p_{T} (GeV/c)",
                                       nBinPhi,binLimitsPhi,nBinPt,binLimitsPt);
 
+  if(fStoreRhoLeadingTrackCorr) {
+    fh2CentvsRho = new TH2F("fh2CentvsRho","centrality vs background density full event; centrality; #rho", 50,0.,100.,500,0.,250.);
+    fh2CentvsSigma = new TH2F("fh2CentvsSigma","centrality vs sigma full event; centrality; #sigma(#rho)", 50,0.,100.,50,0.,50.);
+    fh2MultvsRho = new TH2F("fh2MultvsRho","multiplicity vs background density full event; multiplicity; #rho", 100,0.,5000.,500,0.,250.);
+    fh2MultvsSigma = new TH2F("fh2MultvsSigma","multiplicity vs sigma full event; multiplicity; #sigma(#rho)", 100,0.,5000.,50,0.,50.);
+
+
+    fh3CentvsRhoLeadingTrackPtQ1 = new TH3F("fh3CentvsRhoLeadingTrackPtQ1","centrality vs background density Q1; centrality; #rho; leading p_{t}^{track}", 50,0.,100.,500,0.,250.,100,0.,100.);
+    fh3CentvsRhoLeadingTrackPtQ2 = new TH3F("fh3CentvsRhoLeadingTrackPtQ2","centrality vs background density Q2; centrality; #rho; leading p_{t}^{track}", 50,0.,100.,500,0.,250.,100,0.,100.);
+    fh3CentvsRhoLeadingTrackPtQ3 = new TH3F("fh3CentvsRhoLeadingTrackPtQ3","centrality vs background density Q3; centrality; #rho; leading p_{t}^{track}", 50,0.,100.,500,0.,250.,100,0.,100.);
+    fh3CentvsRhoLeadingTrackPtQ4 = new TH3F("fh3CentvsRhoLeadingTrackPtQ4","centrality vs background density Q4; centrality; #rho; leading p_{t}^{track}", 50,0.,100.,500,0.,250.,100,0.,100.);
+
+    fh3CentvsSigmaLeadingTrackPtQ1 = new TH3F("fh3CentvsSigmaLeadingTrackPtQ1","centrality vs background density Q1; centrality; #sigma(#rho); leading p_{t}^{track}", 50,0.,100.,50,0.,50.,100,0.,100.);
+    fh3CentvsSigmaLeadingTrackPtQ2 = new TH3F("fh3CentvsSigmaLeadingTrackPtQ2","centrality vs background density Q2; centrality; #sigma(#rho); leading p_{t}^{track}", 50,0.,100.,50,0.,50.,100,0.,100.);
+    fh3CentvsSigmaLeadingTrackPtQ3 = new TH3F("fh3CentvsSigmaLeadingTrackPtQ3","centrality vs background density Q3; centrality; #sigma(#rho); leading p_{t}^{track}", 50,0.,100.,50,0.,50.,100,0.,100.);
+    fh3CentvsSigmaLeadingTrackPtQ4 = new TH3F("fh3CentvsSigmaLeadingTrackPtQ4","centrality vs background density Q4; centrality; #sigma(#rho); leading p_{t}^{track}", 50,0.,100.,50,0.,50.,100,0.,100.);
+
+    fh3MultvsRhoLeadingTrackPtQ1 = new TH3F("fh3MultvsRhoLeadingTrackPtQ1","multiplicity vs background density Q1; multiplicity; #rho; leading p_{t}^{track}", 100,0.,5000.,500,0.,250.,100,0.,100.);
+    fh3MultvsRhoLeadingTrackPtQ2 = new TH3F("fh3MultvsRhoLeadingTrackPtQ2","multiplicity vs background density Q2; multiplicity; #rho; leading p_{t}^{track}", 100,0.,5000.,500,0.,250.,100,0.,100.);
+    fh3MultvsRhoLeadingTrackPtQ3 = new TH3F("fh3MultvsRhoLeadingTrackPtQ3","multiplicity vs background density Q3; multiplicity; #rho; leading p_{t}^{track}", 100,0.,5000.,500,0.,250.,100,0.,100.);
+    fh3MultvsRhoLeadingTrackPtQ4 = new TH3F("fh3MultvsRhoLeadingTrackPtQ4","multiplicity vs background density Q4; multiplicity; #rho; leading p_{t}^{track}", 100,0.,5000.,500,0.,250.,100,0.,100.);
+
+    fh3MultvsSigmaLeadingTrackPtQ1 = new TH3F("fh3MultvsSigmaLeadingTrackPtQ1","multiplicity vs background density Q1; multiplicity; #sigma(#rho); leading p_{t}^{track}", 100,0.,5000.,50,0.,50.,100,0.,100.);
+    fh3MultvsSigmaLeadingTrackPtQ2 = new TH3F("fh3MultvsSigmaLeadingTrackPtQ2","multiplicity vs background density Q2; multiplicity; #sigma(#rho); leading p_{t}^{track}", 100,0.,5000.,50,0.,50.,100,0.,100.);
+    fh3MultvsSigmaLeadingTrackPtQ3 = new TH3F("fh3MultvsSigmaLeadingTrackPtQ3","multiplicity vs background density Q3; multiplicity; #sigma(#rho); leading p_{t}^{track}", 100,0.,5000.,50,0.,50.,100,0.,100.);
+    fh3MultvsSigmaLeadingTrackPtQ4 = new TH3F("fh3MultvsSigmaLeadingTrackPtQ4","multiplicity vs background density Q4; multiplicity; #sigma(#rho); leading p_{t}^{track}", 100,0.,5000.,50,0.,50.,100,0.,100.);
+
+    fHistList->Add(fh2CentvsRho);
+    fHistList->Add(fh2CentvsSigma);
+    fHistList->Add(fh2MultvsRho);
+    fHistList->Add(fh2MultvsSigma);
+
+    fHistList->Add(fh3CentvsRhoLeadingTrackPtQ1);
+    fHistList->Add(fh3CentvsRhoLeadingTrackPtQ2);
+    fHistList->Add(fh3CentvsRhoLeadingTrackPtQ3);
+    fHistList->Add(fh3CentvsRhoLeadingTrackPtQ4);
+
+    fHistList->Add(fh3CentvsSigmaLeadingTrackPtQ1);
+    fHistList->Add(fh3CentvsSigmaLeadingTrackPtQ2);
+    fHistList->Add(fh3CentvsSigmaLeadingTrackPtQ3);
+    fHistList->Add(fh3CentvsSigmaLeadingTrackPtQ4);
+
+    fHistList->Add(fh3MultvsRhoLeadingTrackPtQ1);
+    fHistList->Add(fh3MultvsRhoLeadingTrackPtQ2);
+    fHistList->Add(fh3MultvsRhoLeadingTrackPtQ3);
+    fHistList->Add(fh3MultvsRhoLeadingTrackPtQ4);
+
+    fHistList->Add(fh3MultvsSigmaLeadingTrackPtQ1);
+    fHistList->Add(fh3MultvsSigmaLeadingTrackPtQ2);
+    fHistList->Add(fh3MultvsSigmaLeadingTrackPtQ3);
+    fHistList->Add(fh3MultvsSigmaLeadingTrackPtQ4);
+
+  }
+  
   //Detector level effects histos
   fh2PtGenPtSmeared = new TH2F("fh2PtGenPtSmeared","fh2PtGenPtSmeared",nBinPt,binLimitsPt,nBinPt,binLimitsPt);
 
@@ -926,7 +1024,7 @@ void AliAnalysisTaskJetCluster::UserExec(Option_t */*option*/)
       
       Double_t sumEff = eff[0]+eff[1]+eff[2];
       fp1Efficiency->Fill(vp->Pt(),sumEff);
-      if(rnd>sumEff) continue;
+      if(rnd>sumEff && pT > fDiceEfficiencyMinPt) continue;
 
       if(fUseTrPtResolutionSmearing) {
        //Smear momentum of generated particle
@@ -1152,19 +1250,21 @@ void AliAnalysisTaskJetCluster::UserExec(Option_t */*option*/)
        }
        if(j==0)fh1PtJetConstLeadingRec->Fill(part->Pt());
       }
-      //set pT of leading constituent of jet
-      aodOutJet->SetPtLeading(partLead->Pt());
 
       AliAODTrack *aodT = 0;
       if(partLead){
-       aodT = dynamic_cast<AliAODTrack*>(partLead);
-       if(aodT){
-         if(aodT->TestFilterBit(fFilterMaskBestPt)){
-           aodOutJet->SetTrigger(AliAODJet::kHighTrackPtBest);
+       if(aodOutJet){
+         //set pT of leading constituent of jet
+         aodOutJet->SetPtLeading(partLead->Pt());
+         aodT = dynamic_cast<AliAODTrack*>(partLead);
+         if(aodT){
+           if(aodT->TestFilterBit(fFilterMaskBestPt)){
+             aodOutJet->SetTrigger(AliAODJet::kHighTrackPtBest);
+           }
          }
        }
       }
-      
+    
      // correlation
      Float_t tmpPhi =  tmpRec.Phi();
      Float_t tmpEta =  tmpRec.Eta();
@@ -1354,6 +1454,84 @@ void AliAnalysisTaskJetCluster::UserExec(Option_t */*option*/)
      //  fh1BiARandomCones[1]->Fill(ptRandomCone-(bkg2*areaRandomCone));    
      //   fh1BiARandomConesRan[1]->Fill(ptRandomConeRan-(bkg2*areaRandomCone));    
 
+     if(fStoreRhoLeadingTrackCorr) {
+       fh2CentvsRho->Fill(cent,bkg2);
+       fh2CentvsSigma->Fill(cent,sigma2);
+       fh2MultvsRho->Fill(nCh,bkg2);
+       fh2MultvsSigma->Fill(nCh,sigma2);
+     
+
+       //Calculate rho with 4-vector area method for different quadrants with respect to the leading track in the event
+       //exclude 2 leading jets from event
+       //Quadrant 1: |phi_leadingTrack - phi_bkgCluster| < pi/2./2. - R  (Near side to leading track)
+       //Quadrant 2: pi/2 - (pi/2./2. - R) < |phi_leadingTrack - phi_bkgCluster| < pi/2 + (pi/2./2. - R) (Orthogonal to leading track)
+       //Quadrant 3: pi - (pi/2/2 - R) < |phi_leadingTrack - phi_bkgCluster| < pi + (pi/2./2. - R)  (Away side to leading track)
+       //Quadrant 4: 3/2*pi - (pi/2./2. - R) < |phi_leadingTrack - phi_bkgCluster| < 3/2*pi + (pi/2./2. - R)   (Orthogonal to leading track)
+
+       //Assuming R=0.2 for background clusters
+
+       Double_t bkg2Q[4]      = {0.};
+       Double_t sigma2Q[4]    = {0.};
+       Double_t meanarea2Q[4] = {0.};
+
+       //Get phi of leading track in event
+       AliVParticle *leading = (AliVParticle*)recParticles.At(0);
+       Float_t phiLeadingTrack = leading->Phi();
+       Float_t phiStep = (TMath::Pi()/2./2. - 0.2);
+
+       //Quadrant1 - near side
+       phiMin = phiLeadingTrack - phiStep;
+       phiMax = phiLeadingTrack + phiStep;
+       fastjet::RangeDefinition rangeQ1(rapMin,rapMax, phiMin, phiMax);
+       clustSeq.get_median_rho_and_sigma(jets2, rangeQ1, false, bkg2Q[0], sigma2Q[0], meanarea2Q[0], true);
+
+       //Quadrant2 - orthogonal
+       Double_t phiQ2 = phiLeadingTrack + TMath::Pi()/2.;
+       if(phiQ2>TMath::TwoPi()) phiQ2 = phiQ2 - TMath::TwoPi();
+       phiMin = phiQ2 - phiStep;
+       phiMax = phiQ2 + phiStep;
+       fastjet::RangeDefinition rangeQ2(rapMin,rapMax, phiMin, phiMax);
+       clustSeq.get_median_rho_and_sigma(jets2, rangeQ2, false, bkg2Q[1], sigma2Q[1], meanarea2Q[1], true);
+
+       //Quadrant3 - away side
+       Double_t phiQ3 = phiLeadingTrack + TMath::Pi();
+       if(phiQ3>TMath::TwoPi()) phiQ3 = phiQ3 - TMath::TwoPi();
+       phiMin = phiQ3 - phiStep;
+       phiMax = phiQ3 + phiStep;
+       fastjet::RangeDefinition rangeQ3(rapMin,rapMax, phiMin, phiMax);
+       clustSeq.get_median_rho_and_sigma(jets2, rangeQ3, false, bkg2Q[2], sigma2Q[2], meanarea2Q[2], true);
+
+       //Quadrant4 - othogonal
+       Double_t phiQ4 = phiLeadingTrack + 3./2.*TMath::Pi();
+       if(phiQ3>TMath::TwoPi()) phiQ4 = phiQ4 - TMath::TwoPi();
+       phiMin = phiQ4 - phiStep;
+       phiMax = phiQ4 + phiStep;
+       fastjet::RangeDefinition rangeQ4(rapMin,rapMax, phiMin, phiMax);
+       clustSeq.get_median_rho_and_sigma(jets2, rangeQ4, false, bkg2Q[3], sigma2Q[3], meanarea2Q[3], true);
+
+       fh3CentvsRhoLeadingTrackPtQ1->Fill(cent,bkg2Q[0],leading->Pt());
+       fh3CentvsRhoLeadingTrackPtQ2->Fill(cent,bkg2Q[1],leading->Pt());
+       fh3CentvsRhoLeadingTrackPtQ3->Fill(cent,bkg2Q[2],leading->Pt());
+       fh3CentvsRhoLeadingTrackPtQ4->Fill(cent,bkg2Q[3],leading->Pt());
+
+       fh3CentvsSigmaLeadingTrackPtQ1->Fill(cent,sigma2Q[0],leading->Pt());
+       fh3CentvsSigmaLeadingTrackPtQ2->Fill(cent,sigma2Q[1],leading->Pt());
+       fh3CentvsSigmaLeadingTrackPtQ3->Fill(cent,sigma2Q[2],leading->Pt());
+       fh3CentvsSigmaLeadingTrackPtQ4->Fill(cent,sigma2Q[3],leading->Pt());
+
+       fh3MultvsRhoLeadingTrackPtQ1->Fill(nCh,bkg2Q[0],leading->Pt());
+       fh3MultvsRhoLeadingTrackPtQ2->Fill(nCh,bkg2Q[1],leading->Pt());
+       fh3MultvsRhoLeadingTrackPtQ3->Fill(nCh,bkg2Q[2],leading->Pt());
+       fh3MultvsRhoLeadingTrackPtQ4->Fill(nCh,bkg2Q[3],leading->Pt());
+
+       fh3MultvsSigmaLeadingTrackPtQ1->Fill(nCh,sigma2Q[0],leading->Pt());
+       fh3MultvsSigmaLeadingTrackPtQ2->Fill(nCh,sigma2Q[1],leading->Pt());
+       fh3MultvsSigmaLeadingTrackPtQ3->Fill(nCh,sigma2Q[2],leading->Pt());
+       fh3MultvsSigmaLeadingTrackPtQ4->Fill(nCh,sigma2Q[3],leading->Pt());
+
+     }
+
+
    }
   }
    
@@ -1704,7 +1882,9 @@ Int_t  AliAnalysisTaskJetCluster::GetListOfTracks(TList *list,Int_t type){
 
 void AliAnalysisTaskJetCluster::LoadTrPtResolutionRootFileFromOADB() {
 
-  TFile *f = new TFile(fPathTrPtResolution.Data());
+  TFile *f = TFile::Open(fPathTrPtResolution.Data());
+
+  if(!f)return;
 
   TProfile *fProfPtPtSigma1PtGlobSt     = (TProfile*)f->Get("fProfPtPtSigma1PtGlobSt");
   TProfile *fProfPtPtSigma1PtGlobCnoITS = (TProfile*)f->Get("fProfPtPtSigma1PtGlobCnoITS");
@@ -1712,15 +1892,14 @@ void AliAnalysisTaskJetCluster::LoadTrPtResolutionRootFileFromOADB() {
 
   SetSmearResolution(kTRUE);
   SetMomentumResolutionHybrid(fProfPtPtSigma1PtGlobSt,fProfPtPtSigma1PtGlobCnoITS,fProfPtPtSigma1PtGlobCnoSPD);
-
-
-  if(f) delete f;
+  
 
 }
 
 void AliAnalysisTaskJetCluster::LoadTrEfficiencyRootFileFromOADB() {
 
-  TFile *f = new TFile(fPathTrEfficiency.Data());
+  TFile *f = TFile::Open(fPathTrEfficiency.Data());
+  if(!f)return;
 
   TH1D *hEffPosGlobSt = (TH1D*)f->Get("hEffPosGlobSt");
   TH1D *hEffPosGlobCnoITS = (TH1D*)f->Get("hEffPosGlobCnoITS");
@@ -1743,8 +1922,6 @@ void AliAnalysisTaskJetCluster::LoadTrEfficiencyRootFileFromOADB() {
   else
     SetEfficiencyHybrid(hEffPosGlobSt,hEffPosGlobCnoITS,hEffPosGlobCnoSPD);
 
-  if(f) delete f;
-
 }
 
 void AliAnalysisTaskJetCluster::SetMomentumResolutionHybrid(TProfile *p1, TProfile *p2, TProfile *p3) {
@@ -1753,9 +1930,14 @@ void AliAnalysisTaskJetCluster::SetMomentumResolutionHybrid(TProfile *p1, TProfi
   // set mom res profiles
   //
 
-  fMomResH1 = (TProfile*)p1->Clone("fMomResH1");
-  fMomResH2 = (TProfile*)p2->Clone("fMomResH2");
-  fMomResH3 = (TProfile*)p3->Clone("fMomResH3");
+  if(fMomResH1) delete fMomResH1;
+  if(fMomResH2) delete fMomResH2;
+  if(fMomResH3) delete fMomResH3;
+
+  fMomResH1 = new TProfile(*p1);//(TProfile*)p1->Clone("fMomResH1");
+  fMomResH2 = new TProfile(*p2);//(TProfile*)p2->Clone("fMomResH2");
+  fMomResH3 = new TProfile(*p3);//(TProfile*)p3->Clone("fMomResH3");
+
 }
 
 void AliAnalysisTaskJetCluster:: SetEfficiencyHybrid(TH1 *h1, TH1 *h2, TH1 *h3) {