//________________________________________________________________________
AliAnalysisTaskRho::AliAnalysisTaskRho() :
AliAnalysisTaskRhoBase("AliAnalysisTaskRho"),
+ fHistOccCorrvsCent(0),
fNExclLeadJets(0)
{
// Constructor.
//________________________________________________________________________
AliAnalysisTaskRho::AliAnalysisTaskRho(const char *name, Bool_t histo) :
AliAnalysisTaskRhoBase(name, histo),
+ fHistOccCorrvsCent(0),
fNExclLeadJets(0)
{
// Constructor.
}
+//________________________________________________________________________
+void AliAnalysisTaskRho::UserCreateOutputObjects()
+{
+ if (!fCreateHisto)
+ return;
+
+ AliAnalysisTaskRhoBase::UserCreateOutputObjects();
+
+ fHistOccCorrvsCent = new TH2F("OccCorrvsCent", "OccCorrvsCent", 101, -1, 100, 2000, 0 , 2);
+ fOutput->Add(fHistOccCorrvsCent);
+}
+
//________________________________________________________________________
Bool_t AliAnalysisTaskRho::Run()
{
static Double_t rhovec[999];
Int_t NjetAcc = 0;
+ Double_t TotaljetArea=0;
+ Double_t TotaljetAreaPhys=0;
// push all jets within selected acceptance into stack
for (Int_t iJets = 0; iJets < Njets; ++iJets) {
continue;
}
+ //cout << "jetpt: " << jet->Pt() << " jetArea: " << jet->Area() <<endl;
+
if (!AcceptJet(jet))
continue;
- rhovec[NjetAcc] = jet->Pt() / jet->Area();
+
+ if(jet->Pt()>0.01) rhovec[NjetAcc] = jet->Pt() / jet->Area();
+ //cout << "ACCEPTED: jetpt: " << jet->Pt() << " jetArea: " << jet->Area() << " jetRho: " << rhovec[NjetAcc] <<endl;
+ if(jet->Pt()>0.01) TotaljetAreaPhys+=jet->Area();
+ TotaljetArea+=jet->Area();
++NjetAcc;
}
+ const Double_t TpcMaxPhi = TMath::Pi()*2.;
+
+ const Double_t TpcArea = TpcMaxPhi * 2.*(0.7);
+ Double_t OccCorr=0.0;
+ //cout << "Area Physical: " << TotaljetAreaPhys << " total: " << TotaljetArea <<endl;
+ //if(TotaljetArea>0) OccCorr=TotaljetAreaPhys/TotaljetArea;
+ if(TpcArea>0) OccCorr=TotaljetAreaPhys/TpcArea;
+
+ fHistOccCorrvsCent->Fill(fCent, OccCorr);
+
+ //cout << "Accepted " << NjetAcc << " of " << Njets <<endl;
+ //if (fOccCorr)fOccCorr->SetVal(OccCorr);
+
if (NjetAcc > 0) {
//find median value
Double_t rho = TMath::Median(NjetAcc, rhovec);
fRho->SetVal(rho);
if (fRhoScaled) {
- Double_t rhoScaled = rho * GetScaleFactor(fCent);
+ //Double_t rhoScaled = rho * GetScaleFactor(fCent);
+ Double_t rhoScaled = rho * OccCorr;
+ //cout << "OCC_CORR " << OccCorr <<endl;
fRhoScaled->SetVal(rhoScaled);
}
}
AliAnalysisTaskRho(const char *name, Bool_t histo=kFALSE);
virtual ~AliAnalysisTaskRho() {}
+ void UserCreateOutputObjects();
void SetExcludeLeadJets(UInt_t n) { fNExclLeadJets = n ; }
protected:
Bool_t Run();
+ TH2F *fHistOccCorrvsCent; //!occupancy correction vs. centrality
UInt_t fNExclLeadJets; // number of leading jets to be excluded from the median calculation
AliAnalysisTaskRho(const AliAnalysisTaskRho&); // not implemented
AliAnalysisTaskRho& operator=(const AliAnalysisTaskRho&); // not implemented
- ClassDef(AliAnalysisTaskRho, 8); // Rho task
+ ClassDef(AliAnalysisTaskRho, 9); // Rho task
};
#endif
AliAnalysisTaskRhoBase("AliAnalysisTaskRhoSparse"),
fHistOccCorrvsCent(0),
fNExclLeadJets(0),
- fRhoCMS(0)
+ fRhoCMS(0),
+ fSigJetsName("SJets")
{
// Constructor.
}
AliAnalysisTaskRhoBase(name, histo),
fHistOccCorrvsCent(0),
fNExclLeadJets(0),
- fRhoCMS(0)
+ fRhoCMS(0),
+ fSigJetsName("SJets")
{
// Constructor.
}
fOutput->Add(fHistOccCorrvsCent);
}
+//________________________________________________________________________
+Bool_t AliAnalysisTaskRhoSparse::IsJetOverlapping(AliEmcalJet* jet1, AliEmcalJet* jet2)
+{
+ for (Int_t i = 0; i < jet1->GetNumberOfTracks(); ++i)
+ {
+ Int_t jet1Track = jet1->TrackAt(i);
+ for (Int_t j = 0; j < jet2->GetNumberOfTracks(); ++j)
+ {
+ Int_t jet2Track = jet2->TrackAt(j);
+ if (jet1Track == jet2Track)
+ return kTRUE;
+ }
+ }
+ return kFALSE;
+}
+
+//________________________________________________________________________
+Bool_t AliAnalysisTaskRhoSparse::IsJetSignal(AliEmcalJet* jet)
+{
+ if(jet->Pt()>5){
+ return kTRUE;
+ }else{
+ return kFALSE;
+ }
+}
+
+
//________________________________________________________________________
Bool_t AliAnalysisTaskRhoSparse::Run()
{
const Int_t Njets = fJets->GetEntries();
+ TClonesArray *sigjets = 0;
+ sigjets= dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fSigJetsName));
+
+ Int_t NjetsSig = 0;
+ if(sigjets) NjetsSig = sigjets->GetEntries();
+
+
Int_t maxJetIds[] = {-1, -1};
Float_t maxJetPts[] = { 0, 0};
continue;
}
- //cout << "jetpt: " << jet->Pt() << " jetArea: " << jet->Area() <<endl;
-
if (!AcceptJet(jet))
continue;
+ // Search for overlap with signal jets
+ Bool_t isOverlapping = kFALSE;
+ if(sigjets){
+ for(Int_t j=0;j<NjetsSig;j++)
+ {
+ AliEmcalJet* signalJet = static_cast<AliEmcalJet*>(sigjets->At(j));
+ if(!AcceptJet(signalJet))
+ continue;
+ if(!IsJetSignal(signalJet))
+ continue;
+
+ if(IsJetOverlapping(signalJet, jet))
+ {
+ isOverlapping = kTRUE;
+ break;
+ }
+ }
+ }
+
+ if(isOverlapping)
+ continue;
- if(jet->Pt()>0.01) rhovec[NjetAcc] = jet->Pt() / jet->Area();
- //cout << "ACCEPTED: jetpt: " << jet->Pt() << " jetArea: " << jet->Area() << " jetRho: " << rhovec[NjetAcc] <<endl;
- if(jet->Pt()>0.01) TotaljetAreaPhys+=jet->Area();
+ rhovec[NjetAcc] = jet->Pt() / jet->Area();
+
+ TotaljetAreaPhys+=jet->Area();
TotaljetArea+=jet->Area();
++NjetAcc;
+
}
const Double_t TpcMaxPhi = TMath::Pi()*2.;
void UserCreateOutputObjects();
void SetExcludeLeadJets(UInt_t n) { fNExclLeadJets = n ; }
void SetRhoCMS(Bool_t cms) { fRhoCMS = cms ; }
+ void SetSigJetsName(const char *n) { fSigJetsName = n ; }
+ Bool_t IsJetOverlapping(AliEmcalJet* jet1, AliEmcalJet* jet2);
+ Bool_t IsJetSignal(AliEmcalJet* jet1);
protected:
UInt_t fNExclLeadJets; // number of leading jets to be excluded from the median calculation
- Bool_t fRhoCMS;
+ Bool_t fRhoCMS; //Flag to run CMS method
+ TString fSigJetsName; //name of anti-kT jet collection used for excluding the signal from the rho calculation
AliAnalysisTaskRhoSparse(const AliAnalysisTaskRhoSparse&); // not implemented
AliAnalysisTaskRhoSparse& operator=(const AliAnalysisTaskRhoSparse&); // not implemented
- ClassDef(AliAnalysisTaskRhoSparse, 1); // Rho task
+ ClassDef(AliAnalysisTaskRhoSparse, 2); // Rho task
};
#endif
void AliEmcalJetTask::UserExec(Option_t *)
{
// Main loop, called for each event.
-
if (!fIsInit) {
if (!DoInit())
return;
void AliEmcalJetTask::FindJets()
{
// Find jets.
-
- if (!fTracks && !fClus)
+ if (!fTracks && !fClus){
+ cout << "WARNING NO TRACKS OR CLUSTERS:" <<endl;
return;
+ }
+
TString name("kt");
fastjet::JetAlgorithm jalgo(fastjet::kt_algorithm);