]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGJE/AliAnalysisTaskJetCore.cxx
up from Salvatore
[u/mrichter/AliRoot.git] / PWGJE / AliAnalysisTaskJetCore.cxx
index 22f15f249966d311c309e6e5c0c32f13756bf1dd..d6ef8f9a8ac81df1cfd13d9c4ab9e2006bbb31bd 100644 (file)
@@ -67,7 +67,6 @@ fAODExtension(0x0),
 fBackgroundBranch(""),
 fNonStdFile(""),
 fIsPbPb(kTRUE),
-fDebug(0), 
 fOfflineTrgMask(AliVEvent::kAny),
 fMinContribVtx(1),
 fVtxZMin(-10.),
@@ -95,6 +94,9 @@ fFlagOnlyHardest(1),
 fTrackTypeRec(kTrackUndef),
 fRPAngle(0),
 fNRPBins(50),
+fSemigoodCorrect(0),
+fHolePos(4.71),
+fHoleWidth(0.2),
 fJetEtaMin(-.5),
 fJetEtaMax(.5),
 fNevents(0),
@@ -107,6 +109,7 @@ fJetPtFractionMin(0.5),
 fNMatchJets(4),
 fMatchMaxDist(0.8),
 fKeepJets(kFALSE),
+fRunAnaAzimuthalCorrelation(kFALSE),
 fkNbranches(2),
 fkEvtClasses(12),
 fOutputList(0x0),
@@ -149,9 +152,9 @@ fh2RPJetsC10(0x0),
 fh2RPJetsC20(0x0),
 fh2RPTC10(0x0),
 fh2RPTC20(0x0), 
-fh3spectriggeredC10(0x0),
-fh3spectriggeredC20(0x0),
-fh3spectriggeredC3060(0x0)
+fHJetSpec(0x0),
+fhTTPt(0x0),
+fHJetPhiCorr(0x0)
 
  
 {
@@ -185,7 +188,6 @@ fAODExtension(0x0),
 fBackgroundBranch(""),
 fNonStdFile(""),
 fIsPbPb(kTRUE),
-fDebug(0),
 fOfflineTrgMask(AliVEvent::kAny),
 fMinContribVtx(1),
 fVtxZMin(-10.),
@@ -213,6 +215,9 @@ fFlagOnlyHardest(1),
 fTrackTypeRec(kTrackUndef),
 fRPAngle(0),
 fNRPBins(50),
+fSemigoodCorrect(0),
+fHolePos(4.71),
+fHoleWidth(0.2),
 fJetEtaMin(-.5),
 fJetEtaMax(.5),
 fNevents(0),
@@ -225,6 +230,7 @@ fJetPtFractionMin(0.5),
 fNMatchJets(4),
 fMatchMaxDist(0.8),
 fKeepJets(kFALSE),
+fRunAnaAzimuthalCorrelation(kFALSE),
 fkNbranches(2),
 fkEvtClasses(12),
 fOutputList(0x0),
@@ -267,9 +273,9 @@ fh2RPJetsC10(0x0),
 fh2RPJetsC20(0x0),
 fh2RPTC10(0x0),
 fh2RPTC20(0x0), 
-fh3spectriggeredC10(0x0),
-fh3spectriggeredC20(0x0),
-fh3spectriggeredC3060(0x0)
+fHJetSpec(0x0),
+fhTTPt(0x0),
+fHJetPhiCorr(0x0)
 
  {
    // Constructor
@@ -412,9 +418,7 @@ void AliAnalysisTaskJetCore::UserCreateOutputObjects()
     fh2RPJetsC20=new TH2F("RPJetC20","",35,0.,3.5,100,0.,100.); 
     fh2RPTC10=new TH2F("RPTriggerC10","",35,0.,3.5,50,0.,50.); 
     fh2RPTC20=new TH2F("RPTriggerC20","",35,0.,3.5,50,0.,50.);  
-    fh3spectriggeredC10 = new TH3F("Triggered spectrumC10","",100,0.,1.,140,-80.,200.,50,0.,50.);
-    fh3spectriggeredC20 = new TH3F("Triggered spectrumC20","",100,0.,1.,140,-80.,200.,50,0.,50.);
-    fh3spectriggeredC3060 = new TH3F("Triggered spectrumC3060","",100,0.,1.,140,-80.,200.,10,0.,50.);
+
 
     
     
@@ -475,10 +479,30 @@ void AliAnalysisTaskJetCore::UserCreateOutputObjects()
         fOutputList->Add(fh2RPJetsC20);
          fOutputList->Add(fh2RPTC10);
         fOutputList->Add(fh2RPTC20);
-        fOutputList->Add(fh3spectriggeredC10); 
-        fOutputList->Add(fh3spectriggeredC20); 
-        fOutputList->Add(fh3spectriggeredC3060);   
 
+        const Int_t dimSpec = 5;
+       const Int_t nBinsSpec[dimSpec]     = {10,100, 140, 50, fNRPBins};
+       const Double_t lowBinSpec[dimSpec] = {0,0,-80, 0, 0};
+       const Double_t hiBinSpec[dimSpec]  = {100,1, 200, 50, fNRPBins};
+       fHJetSpec = new THnSparseF("fHJetSpec","Recoil jet spectrum",dimSpec,nBinsSpec,lowBinSpec,hiBinSpec);
+       fOutputList->Add(fHJetSpec);  
+
+
+       if(fRunAnaAzimuthalCorrelation)
+         {
+           fhTTPt = new TH2F("fhTTPt","Trigger track p_{T} vs centrality",10,0,100,100,0,100);
+           fOutputList->Add(fhTTPt);
+
+           const Int_t dimCor = 5;
+           const Int_t nBinsCor[dimCor]     = {50, 200, 100,              8,   10};
+           const Double_t lowBinCor[dimCor] = {0,  -50, -0.5*TMath::Pi(), 0,   0};
+           const Double_t hiBinCor[dimCor]  = {50, 150, 1.5*TMath::Pi(),  0.8, 100};
+           fHJetPhiCorr = new THnSparseF("fHJetPhiCorr","TT p_{T} vs jet p_{T} vs dPhi vs area vs centrality",dimCor,nBinsCor,lowBinCor,hiBinCor);
+           fOutputList->Add(fHJetPhiCorr);
+         }
+
+
+        
      
    // =========== Switch on Sumw2 for all histos ===========
    for (Int_t i=0; i<fOutputList->GetEntries(); ++i) {
@@ -680,14 +704,23 @@ void AliAnalysisTaskJetCore::UserExec(Option_t *)
    //for(Int_t tt=0;tt<ParticleList.GetEntries();tt++){
    //if(fFlagOnlyHardest!=0){if(tt!=nT) continue;}
    //AliVParticle *partback = (AliVParticle*)ParticleList.At(tt);     
+   Double_t accep=2.*TMath::Pi()*1.8;
+   Int_t injet4=0;
+   Int_t injet=0; 
+   if(fSemigoodCorrect){
+   Double_t disthole=RelativePhi(partback->Phi(),fHolePos);
+   if(TMath::Abs(disthole)+fHoleWidth>TMath::Pi()-0.6){ 
+   PostData(1, fOutputList);
+   return;}
+
+   }
 
    fh2Ntriggers->Fill(centValue,partback->Pt());
    Double_t phiBinT = RelativePhi(partback->Phi(),fRPAngle);
    if(centValue<20.) fh2RPTC20->Fill(TMath::Abs(phiBinT),partback->Pt());
    if(centValue<10.) fh2RPTC10->Fill(TMath::Abs(phiBinT),partback->Pt());
-   Double_t accep=2.*TMath::Pi()*1.8;
-   Int_t injet4=0;
-   Int_t injet=0; 
+
+
 
    for(Int_t i=0; i<fListJets[0]->GetEntries(); ++i){
            AliAODJet* jetbig = (AliAODJet*)(fListJets[0]->At(i));
@@ -727,10 +760,15 @@ void AliAnalysisTaskJetCore::UserExec(Option_t *)
                    Double_t ptmax=-10.; 
                    Int_t index1=-1;
                    Int_t index2=-1;
+         
+                  Float_t phitt=partback->Phi();
+                   if(phitt<0)phitt+=TMath::Pi()*2.; 
+                   Int_t phiBintt = GetPhiBin(phitt-fRPAngle);
+
+                  Double_t fillspec[] = {centValue,jetbig->EffectiveAreaCharged(),ptcorr,partback->Pt(),phiBintt};
+                 fHJetSpec->Fill(fillspec);
+           
           
-          if(centValue<10.)  fh3spectriggeredC10->Fill(jetbig->EffectiveAreaCharged(),ptcorr,partback->Pt());
-           if(centValue<20.)  fh3spectriggeredC20->Fill(jetbig->EffectiveAreaCharged(),ptcorr,partback->Pt());
-           if(centValue>30. && centValue<60.)  fh3spectriggeredC3060->Fill(jetbig->EffectiveAreaCharged(),ptcorr,partback->Pt());
 
                    if(ptcorr<=0) continue;
 
@@ -738,15 +776,18 @@ void AliAnalysisTaskJetCore::UserExec(Option_t *)
                        Int_t ippt=0;
                        Double_t ppt=-10;
                        if(fFlagJetHadron==0){   
-                      TRefArray *genTrackList = jetbig->GetRefTracks();
-                       Int_t nTracksGenJet = genTrackList->GetEntriesFast();
-                       AliAODTrack* genTrack;
-                       for(Int_t ir=0; ir<nTracksGenJet; ++ir){
-                       genTrack = (AliAODTrack*)(genTrackList->At(ir));
-                      if(genTrack->Pt()>ppt){ppt=genTrack->Pt();
-                      ippt=ir;}}
-                       leadtrack=(AliAODTrack*)(genTrackList->At(ippt));
-                       if(!leadtrack) continue;}
+                        TRefArray *genTrackList = jetbig->GetRefTracks();
+                        Int_t nTracksGenJet = genTrackList->GetEntriesFast();
+                        AliAODTrack* genTrack;
+                        for(Int_t ir=0; ir<nTracksGenJet; ++ir){
+                          genTrack = (AliAODTrack*)(genTrackList->At(ir));
+                          if(genTrack->Pt()>ppt){ppt=genTrack->Pt();
+                            ippt=ir;}}
+                        leadtrack=(AliAODTrack*)(genTrackList->At(ippt));
+                        if(!leadtrack) continue;
+                      }
+
+
 
                       AliVParticle* leadtrackb=0;
                        if(fFlagJetHadron!=0){
@@ -759,26 +800,26 @@ void AliAnalysisTaskJetCore::UserExec(Option_t *)
 
 
                        
-                       //store one trigger info                   
-                        if(iCount==0){                        
-                         trigJet=i;
-                          trigBBTrack=nT;
-                          trigInTrack=ippt;
-                          iCount=iCount+1;} 
-
+                      //store one trigger info                   
+                      if(iCount==0){                        
+                        trigJet=i;
+                        trigBBTrack=nT;
+                        trigInTrack=ippt;
+                        iCount=iCount+1;} 
+                      
    
-                 if(fCheckMethods){
-                  for(Int_t j=0; j<fListJets[1]->GetEntries(); ++j){
-                  AliAODJet* jetsmall = (AliAODJet*)(fListJets[1]->At(j));
-                  etasmall  = jetsmall->Eta();
-                  phismall = jetsmall->Phi();
-                  ptsmall   = jetsmall->Pt();
-                  areasmall = jetsmall->EffectiveAreaCharged();
-                  Double_t tmpDeltaR=(phismall-phibig)*(phismall-phibig)+(etasmall-etabig)*(etasmall-etabig);
-                 tmpDeltaR=TMath::Sqrt(tmpDeltaR);
-                    //Fraction in the jet core  
-                    if((ptsmall>ptmax)&&(tmpDeltaR<=fRadioFrac)){ptmax=ptsmall;  
-                   index2=j;}  
+                      if(fCheckMethods){
+                        for(Int_t j=0; j<fListJets[1]->GetEntries(); ++j){
+                          AliAODJet* jetsmall = (AliAODJet*)(fListJets[1]->At(j));
+                          etasmall  = jetsmall->Eta();
+                          phismall = jetsmall->Phi();
+                          ptsmall   = jetsmall->Pt();
+                          areasmall = jetsmall->EffectiveAreaCharged();
+                          Double_t tmpDeltaR=(phismall-phibig)*(phismall-phibig)+(etasmall-etabig)*(etasmall-etabig);
+                          tmpDeltaR=TMath::Sqrt(tmpDeltaR);
+                          //Fraction in the jet core  
+                          if((ptsmall>ptmax)&&(tmpDeltaR<=fRadioFrac)){ptmax=ptsmall;  
+                            index2=j;}  
                     if(tmpDeltaR<=dismin){ dismin=tmpDeltaR;
                      index1=j;}} //en of loop over R=0.2 jets
                 //method1:most concentric jet=core 
@@ -794,8 +835,8 @@ void AliAnalysisTaskJetCore::UserExec(Option_t *)
                   if((centValue>20)&&(centValue<40)) fh2JetCoreMethod2C20->Fill(ptcorr,jetmethod2->Pt()/ptbig); 
                  if((centValue>30)&&(centValue<60)) fh2JetCoreMethod2C30->Fill(ptcorr,jetmethod2->Pt()/ptbig);
                  if(centValue>60) fh2JetCoreMethod2C60->Fill(ptcorr,jetmethod2->Pt()/ptbig); }}  
-                 if(centValue<10) fh2Ntriggers2C10->Fill(leadtrack->Pt(),partback->Pt());                  
-                  if(centValue<20) fh2Ntriggers2C20->Fill(leadtrack->Pt(),partback->Pt());  
+                 if(centValue<10&&leadtrack) fh2Ntriggers2C10->Fill(leadtrack->Pt(),partback->Pt());                  
+                  if(centValue<20&&leadtrack) fh2Ntriggers2C20->Fill(leadtrack->Pt(),partback->Pt());  
          if(fDoEventMixing==0 && fFlagOnlyRecoil==0){ 
         for(int it = 0;it<ParticleList.GetEntries();++it){
          AliVParticle *part = (AliVParticle*)ParticleList.At(it);
@@ -881,6 +922,33 @@ void AliAnalysisTaskJetCore::UserExec(Option_t *)
          
          }
 
+         /////////////////////////////////////////////////////////////////////////////
+         ////////////////////// Rongrong's analysis //////////////////////////////////
+         if(fRunAnaAzimuthalCorrelation)
+           {
+             fhTTPt->Fill(centValue,partback->Pt());
+             for(Int_t ij=0; ij<fListJets[0]->GetEntries(); ij++)
+               {
+                 AliAODJet* jet = (AliAODJet*)(fListJets[0]->At(ij));
+                 Double_t jetPt   = jet->Pt();
+                 Double_t jetEta  = jet->Eta();
+                 Double_t jetPhi  = jet->Phi();
+                 if(jetPt==0) continue; 
+                 if((jetEta<fJetEtaMin)||(jetEta>fJetEtaMax)) continue;
+                 Double_t jetArea = jet->EffectiveAreaCharged();
+                 Double_t jetPtCorr=jetPt-rho*jetArea;
+                 Double_t dPhi=jetPhi-partback->Phi();
+                 if(dPhi>2*TMath::Pi()) dPhi -= 2*TMath::Pi();
+                 if(dPhi<-2*TMath::Pi()) dPhi += 2*TMath::Pi();
+                 if(dPhi<-0.5*TMath::Pi()) dPhi += 2*TMath::Pi();
+                 if(dPhi>1.5*TMath::Pi()) dPhi -= 2*TMath::Pi();
+
+                 Double_t fill[] = {partback->Pt(),jetPtCorr,dPhi,jetArea,centValue};
+                 fHJetPhiCorr->Fill(fill);
+               }
+           }
+         /////////////////////////////////////////////////////////////////////////////
+         /////////////////////////////////////////////////////////////////////////////
 
 
      //////////////////ANGULAR STRUCTURE//////////////////////////////////////
@@ -1002,7 +1070,10 @@ Int_t  AliAnalysisTaskJetCore::GetListOfTracks(TList *list){
 
      if(!fESD)aod = fAODIn;
      else aod = fAODOut;   
-      Int_t index=-1;
+
+     if(!aod)return 0;
+
+     Int_t index=-1;
      Double_t ptmax=-10;