fBackgroundBranch(""),
fNonStdFile(""),
fIsPbPb(kTRUE),
-fDebug(0),
fOfflineTrgMask(AliVEvent::kAny),
fMinContribVtx(1),
fVtxZMin(-10.),
fTrackTypeRec(kTrackUndef),
fRPAngle(0),
fNRPBins(50),
+fSemigoodCorrect(0),
+fHolePos(4.71),
+fHoleWidth(0.2),
fJetEtaMin(-.5),
fJetEtaMax(.5),
fNevents(0),
fNMatchJets(4),
fMatchMaxDist(0.8),
fKeepJets(kFALSE),
+fRunAnaAzimuthalCorrelation(kFALSE),
fkNbranches(2),
fkEvtClasses(12),
fOutputList(0x0),
fh2RPJetsC20(0x0),
fh2RPTC10(0x0),
fh2RPTC20(0x0),
-fh3spectriggeredC10(0x0),
-fh3spectriggeredC20(0x0),
-fh3spectriggeredC3060(0x0)
+fHJetSpec(0x0),
+fhTTPt(0x0),
+fHJetPhiCorr(0x0)
{
fBackgroundBranch(""),
fNonStdFile(""),
fIsPbPb(kTRUE),
-fDebug(0),
fOfflineTrgMask(AliVEvent::kAny),
fMinContribVtx(1),
fVtxZMin(-10.),
fTrackTypeRec(kTrackUndef),
fRPAngle(0),
fNRPBins(50),
+fSemigoodCorrect(0),
+fHolePos(4.71),
+fHoleWidth(0.2),
fJetEtaMin(-.5),
fJetEtaMax(.5),
fNevents(0),
fNMatchJets(4),
fMatchMaxDist(0.8),
fKeepJets(kFALSE),
+fRunAnaAzimuthalCorrelation(kFALSE),
fkNbranches(2),
fkEvtClasses(12),
fOutputList(0x0),
fh2RPJetsC20(0x0),
fh2RPTC10(0x0),
fh2RPTC20(0x0),
-fh3spectriggeredC10(0x0),
-fh3spectriggeredC20(0x0),
-fh3spectriggeredC3060(0x0)
+fHJetSpec(0x0),
+fhTTPt(0x0),
+fHJetPhiCorr(0x0)
{
// Constructor
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.);
+
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) {
//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));
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;
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){
- //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
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);
}
+ /////////////////////////////////////////////////////////////////////////////
+ ////////////////////// 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//////////////////////////////////////
if(!fESD)aod = fAODIn;
else aod = fAODOut;
- Int_t index=-1;
+
+ if(!aod)return 0;
+
+ Int_t index=-1;
Double_t ptmax=-10;