//________________________________________________________________________
AliAnalysisTaskEmcalJetHMEC::AliAnalysisTaskEmcalJetHMEC() :
- AliAnalysisTaskSE(),
- fTracksName("tracks"),
- fJetsName("jets"),
+ AliAnalysisTaskEmcalJet("HMEC",kFALSE),
+ fTracksName(""),
+ fJetsName(""),
fPhimin(-10),
fPhimax(10),
fEtamin(-0.9),
fTrkEta(0.9),
fDoEventMixing(0),
fMixingTracks(50000),
- fESD(0),
+ fESD(0),
+ fAOD(0),
fPoolMgr(0x0),
- fOutputList(0),
fHistTrackPt(0),
fHistCentrality(0),
fHistJetEtaPhi(0),
fHistTrackEtaPhi[ipta]=0;
}
-
for(Int_t icent = 0; icent<6; ++icent){
fHistJetPt[icent]=0;
fHistJetPtBias[icent]=0;
fHistJetPtTT[icent]=0;
for(Int_t iptjet = 0; iptjet<5; ++iptjet){
for(Int_t ieta = 0; ieta<3; ++ieta){
- fHistJetH[icent][iptjet][ieta]=0;
- fHistJetHBias[icent][iptjet][ieta]=0;
- fHistJetHTT[icent][iptjet][ieta]=0;
-
+ fHistJetH[icent][iptjet][ieta]=0;
+ fHistJetHBias[icent][iptjet][ieta]=0;
+ fHistJetHTT[icent][iptjet][ieta]=0;
}
}
}
}
//________________________________________________________________________
AliAnalysisTaskEmcalJetHMEC::AliAnalysisTaskEmcalJetHMEC(const char *name) :
- AliAnalysisTaskSE(name),
- fTracksName("tracks"),
- fJetsName("jets"),
+ AliAnalysisTaskEmcalJet(name,kTRUE),
+ fTracksName(""),
+ fJetsName(""),
fPhimin(-10),
fPhimax(10),
fEtamin(-0.9),
fTrkEta(0.9),
fDoEventMixing(0),
fMixingTracks(50000),
- fESD(0),
+ fESD(0),
+ fAOD(0),
fPoolMgr(0x0),
- fOutputList(0),
fHistTrackPt(0),
fHistCentrality(0),
fHistJetEtaPhi(0),
fHistJetPtTT[icent]=0;
for(Int_t iptjet = 0; iptjet<5; ++iptjet){
for(Int_t ieta = 0; ieta<3; ++ieta){
- fHistJetH[icent][iptjet][ieta]=0;
- fHistJetHBias[icent][iptjet][ieta]=0;
- fHistJetHTT[icent][iptjet][ieta]=0;
+ fHistJetH[icent][iptjet][ieta]=0;
+ fHistJetHBias[icent][iptjet][ieta]=0;
+ fHistJetHTT[icent][iptjet][ieta]=0;
}
}
}
-
- DefineInput(0, TChain::Class());
- DefineOutput(1, TList::Class());
-
}
//________________________________________________________________________
-void AliAnalysisTaskEmcalJetHMEC::UserCreateOutputObjects()
-{
- // Called once
-
-
- AliVEventHandler* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
- if (!handler) {
- AliError("Input handler not available!");
- return;
- }
-
+void AliAnalysisTaskEmcalJetHMEC::UserCreateOutputObjects() {
+ // Called once
+ AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
OpenFile(1);
- fOutputList = new TList();
- fOutputList->SetOwner();
-
-
// Create histograms
fHistTrackPt = new TH1F("fHistTrackPt", "P_{T} distribution", 1000, 0.0, 100.0);
-
-
-
fHistCentrality = new TH1F("fHistCentrality","centrality",100,0,100);
+ fHistJetEtaPhi = new TH2F("fHistJetEtaPhi","Jet eta-phi",900,-1.8,1.8,720,-3.2,3.2);
+ fHistJetHEtaPhi = new TH2F("fHistJetHEtaPhi","Jet-Hadron deta-dphi",900,-1.8,1.8,720,-1.6,4.8);
- fHistJetEtaPhi = new TH2F("fHistJetEtaPhi","Jet eta-phi",900,-1.8,1.8,640,-3.2,3.2);
- fHistJetHEtaPhi = new TH2F("fHistJetHEtaPhi","Jet-Hadron deta-dphi",900,-1.8,1.8,640,-1.6,4.8);
-
- char name[200];
+ TString name;
for(Int_t ipta=0; ipta<7; ++ipta){
- sprintf(name, "fHistTrackEtaPhi_%i", ipta);
- fHistTrackEtaPhi[ipta] = new TH2F(name,name,400,-1,1,640,0.0,2.0*TMath::Pi());
- fOutputList->Add(fHistTrackEtaPhi[ipta]);
-
+ name = Form("fHistTrackEtaPhi_%i", ipta);
+ fHistTrackEtaPhi[ipta] = new TH2F(name,name,400,-1,1,720,0.0,2.0*TMath::Pi());
+ fOutput->Add(fHistTrackEtaPhi[ipta]);
}
for(Int_t icent = 0; icent<6; ++icent){
- sprintf(name,"fHistJetPt_%i",icent);
+ name = Form("fHistJetPt_%i",icent);
fHistJetPt[icent] = new TH1F(name,name,200,0,200);
- fOutputList->Add(fHistJetPt[icent]);
+ fOutput->Add(fHistJetPt[icent]);
- sprintf(name,"fHistJetPtBias_%i",icent);
+ name = Form("fHistJetPtBias_%i",icent);
fHistJetPtBias[icent] = new TH1F(name,name,200,0,200);
- fOutputList->Add(fHistJetPtBias[icent]);
+ fOutput->Add(fHistJetPtBias[icent]);
- sprintf(name,"fHistLeadJetPt_%i",icent);
+ name = Form("fHistLeadJetPt_%i",icent);
fHistLeadJetPt[icent] = new TH1F(name,name,200,0,200);
- fOutputList->Add(fHistLeadJetPt[icent]);
+ fOutput->Add(fHistLeadJetPt[icent]);
- sprintf(name,"fHistLeadJetPtBias_%i",icent);
+ name = Form("fHistLeadJetPtBias_%i",icent);
fHistLeadJetPtBias[icent] = new TH1F(name,name,200,0,200);
- fOutputList->Add(fHistLeadJetPtBias[icent]);
+ fOutput->Add(fHistLeadJetPtBias[icent]);
- sprintf(name,"fHistJetPtTT_%i",icent);
+ name = Form("fHistJetPtTT_%i",icent);
fHistJetPtTT[icent] = new TH1F(name,name,200,0,200);
- fOutputList->Add(fHistJetPtTT[icent]);
+ fOutput->Add(fHistJetPtTT[icent]);
for(Int_t iptjet = 0; iptjet<5; ++iptjet){
for(Int_t ieta = 0; ieta<3; ++ieta){
- sprintf(name,"fHistJetH_%i_%i_%i",icent,iptjet,ieta);
- fHistJetH[icent][iptjet][ieta]=new TH2F(name,name,64,-0.5*TMath::Pi(),1.5*TMath::Pi(),300,0,30);
- fOutputList->Add(fHistJetH[icent][iptjet][ieta]);
+ name = Form("fHistJetH_%i_%i_%i",icent,iptjet,ieta);
+ fHistJetH[icent][iptjet][ieta]=new TH2F(name,name,72,-0.5*TMath::Pi(),1.5*TMath::Pi(),300,0,30);
+ fOutput->Add(fHistJetH[icent][iptjet][ieta]);
- sprintf(name,"fHistJetHBias_%i_%i_%i",icent,iptjet,ieta);
- fHistJetHBias[icent][iptjet][ieta]=new TH2F(name,name,64,-0.5*TMath::Pi(),1.5*TMath::Pi(),300,0,30);
- fOutputList->Add(fHistJetHBias[icent][iptjet][ieta]);
+ name = Form("fHistJetHBias_%i_%i_%i",icent,iptjet,ieta);
+ fHistJetHBias[icent][iptjet][ieta]=new TH2F(name,name,72,-0.5*TMath::Pi(),1.5*TMath::Pi(),300,0,30);
+ fOutput->Add(fHistJetHBias[icent][iptjet][ieta]);
- sprintf(name,"fHistJetHTT_%i_%i_%i",icent,iptjet,ieta);
- fHistJetHTT[icent][iptjet][ieta]=new TH2F(name,name,64,-0.5*TMath::Pi(),1.5*TMath::Pi(),300,0,30);
- fOutputList->Add(fHistJetHTT[icent][iptjet][ieta]);
+ name = Form("fHistJetHTT_%i_%i_%i",icent,iptjet,ieta);
+ fHistJetHTT[icent][iptjet][ieta]=new TH2F(name,name,72,-0.5*TMath::Pi(),1.5*TMath::Pi(),300,0,30);
+ fOutput->Add(fHistJetHTT[icent][iptjet][ieta]);
}
}
}
-
-
UInt_t cifras = 0; // bit coded, see GetDimParams() below
cifras = 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<7 | 1<<8;
fhnJH = NewTHnSparseF("fhnJH", cifras);
-
fhnJH->Sumw2();
-
- fOutputList->Add(fhnJH);
-
+ fOutput->Add(fhnJH);
if(fDoEventMixing){
cifras = 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<7 | 1<<8;
fhnMixedEvents = NewTHnSparseF("fhnMixedEvents", cifras);
-
fhnMixedEvents->Sumw2();
-
- fOutputList->Add(fhnMixedEvents);
-
+ fOutput->Add(fhnMixedEvents);
}
+ fOutput->Add(fHistTrackPt);
+ fOutput->Add(fHistCentrality);
+ fOutput->Add(fHistJetEtaPhi);
+ fOutput->Add(fHistJetHEtaPhi);
- fOutputList->Add(fHistTrackPt);
- fOutputList->Add(fHistCentrality);
- fOutputList->Add(fHistJetEtaPhi);
- fOutputList->Add(fHistJetHEtaPhi);
-
-
- PostData(1, fOutputList);
-
+ PostData(1, fOutput);
//Event Mixing
Int_t trackDepth = fMixingTracks;
Int_t poolsize = 1000; // Maximum number of events, ignored in the present implemented of AliEventPoolManager
- Int_t nZvtxBins = 7+1+7;
+ Int_t nZvtxBins = 5+1+5;
// bins for second buffer are shifted by 100 cm
- Double_t vertexBins[] = { -7, -5, -3, -1, 1, 3, 5, 7, 93, 95, 97, 99, 101, 103, 105, 107 };
+ Double_t vertexBins[] = { -10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10, };
Double_t* zvtxbin = vertexBins;
Int_t nCentralityBins = 100;
fPoolMgr = new AliEventPoolManager(poolsize, trackDepth, nCentralityBins, centralityBins, nZvtxBins, zvtxbin);
-
-
}
//________________________________________________________________________
Double_t AliAnalysisTaskEmcalJetHMEC:: RelativePhi(Double_t mphi,Double_t vphi) {
-
if (vphi < -1*TMath::Pi()) vphi += (2*TMath::Pi());
else if (vphi > TMath::Pi()) vphi -= (2*TMath::Pi());
if (mphi < -1*TMath::Pi()) mphi += (2*TMath::Pi());
return dphi;//dphi in [-Pi, Pi]
}
-
//________________________________________________________________________
-Int_t AliAnalysisTaskEmcalJetHMEC::GetCentBin(Double_t cent) const
-{
+Int_t AliAnalysisTaskEmcalJetHMEC::GetCentBin(Double_t cent) const {
// Get centrality bin.
Int_t centbin = -1;
- if (cent>=0 && cent<10)
- centbin = 0;
- else if (cent>=10 && cent<20)
- centbin = 1;
- else if (cent>=20 && cent<30)
- centbin = 2;
- else if (cent>=30 && cent<40)
- centbin = 3;
- else if (cent>=40 && cent<50)
- centbin = 4;
- else if (cent>=50 && cent<90)
- centbin = 5;
+ if (cent>=0 && cent<10) centbin = 0;
+ else if (cent>=10 && cent<20) centbin = 1;
+ else if (cent>=20 && cent<30) centbin = 2;
+ else if (cent>=30 && cent<40) centbin = 3;
+ else if (cent>=40 && cent<50) centbin = 4;
+ else if (cent>=50 && cent<90) centbin = 5;
return centbin;
}
-
//________________________________________________________________________
-Int_t AliAnalysisTaskEmcalJetHMEC::GetEtaBin(Double_t eta) const
-{
+Int_t AliAnalysisTaskEmcalJetHMEC::GetEtaBin(Double_t eta) const {
// Get eta bin for histos.
Int_t etabin = -1;
- if (TMath::Abs(eta)<=0.4)
- etabin = 0;
- else if (TMath::Abs(eta)>0.4 && TMath::Abs(eta)<0.8)
- etabin = 1;
- else if (TMath::Abs(eta)>=0.8)
- etabin = 2;
+ if (TMath::Abs(eta)<=0.4) etabin = 0;
+ else if (TMath::Abs(eta)>0.4 && TMath::Abs(eta)<0.8) etabin = 1;
+ else if (TMath::Abs(eta)>=0.8) etabin = 2;
return etabin;
}
//________________________________________________________________________
// Get jet pt bin for histos.
Int_t ptbin = -1;
- if (pt>=15 && pt<20)
- ptbin = 0;
- else if (pt>=20 && pt<25)
- ptbin = 1;
- else if (pt>=25 && pt<30)
- ptbin = 2;
- else if (pt>=30 && pt<60)
- ptbin = 3;
- else if (pt>=60)
- ptbin = 4;
-
+ if (pt>=15 && pt<20) ptbin = 0;
+ else if (pt>=20 && pt<25) ptbin = 1;
+ else if (pt>=25 && pt<30) ptbin = 2;
+ else if (pt>=30 && pt<60) ptbin = 3;
+ else if (pt>=60) ptbin = 4;
return ptbin;
}
+//________________________________________________________________________
+void AliAnalysisTaskEmcalJetHMEC::ExecOnce() {
+ AliAnalysisTaskEmcalJet::ExecOnce();
+
+}
//________________________________________________________________________
-void AliAnalysisTaskEmcalJetHMEC::UserExec(Option_t *)
-{
+Bool_t AliAnalysisTaskEmcalJetHMEC::Run() {
+ // Main loop called for each event
+ if(!fTracks){
+ AliError(Form("No fTracks object!!\n"));
+ return kTRUE;
+ }
+ if(!fJets){
+ AliError(Form("No fJets object!!\n"));
+ return kTRUE;
+ }
+ // what kind of event do we have: AOD or ESD?
+ Bool_t esdMode = kTRUE;
+ if (dynamic_cast<AliAODEvent*>(InputEvent())) esdMode = kFALSE;
- // Main loop called for each event
- // esd or aod mode
- Bool_t esdMode = kTRUE;
- if (dynamic_cast<AliAODEvent*>(InputEvent()))
- esdMode = kFALSE;
+ // if we have ESD event, set up ESD object
+ if(esdMode){
+ fESD = dynamic_cast<AliESDEvent*>(InputEvent());
+ if (!fESD) {
+ AliError(Form("ERROR: fESD not available\n"));
+ return kTRUE;
+ }
+ }
+ // if we have AOD event, set up AOD object
+ if(!esdMode){
+ fAOD = dynamic_cast<AliAODEvent*>(InputEvent());
+ if(!fAOD) {
+ AliError(Form("ERROR: fAOD not available\n"));
+ return kTRUE;
+ }
+ }
- if (esdMode) {
- // optimization in case autobranch loading is off
- AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
- if (fTracksName == "Tracks")
- am->LoadBranch("Tracks");
+ TList *list = InputEvent()->GetList();
+ if(!list) {
+ AliError(Form("ERROR: list not attached\n"));
+ return kTRUE;
}
-
- //get centrality
- TList *list = InputEvent()->GetList();
- AliCentrality *centrality = InputEvent()->GetCentrality() ;
- Double_t fcent=-1;
- if(centrality)
- fcent = centrality->GetCentralityPercentile("V0M");
- else
- fcent=99;//probably pp data
-
- if (fcent<0) {
- AliError(Form("Centrality negative: %f", fcent));
- return;
+ // get centrality
+ if (fCent<0) {
+ AliError(Form("Centrality negative: %f", fCent));
+ return kTRUE;
}
+ Int_t centbin = GetCentBin(fCent);
+ if(centbin<0) return kTRUE;
+
+ Double_t fvertex[3]={0,0,0};
+ InputEvent()->GetPrimaryVertex()->GetXYZ(fvertex);
+ Double_t zVtx=fvertex[2];
- fHistCentrality->Fill(fcent);
- Int_t centbin = GetCentBin(fcent);
+ if(fabs(zVtx)>10.0) return kTRUE;
- if(centbin<0)
- return;
+ fHistCentrality->Fill(fCent);
TClonesArray *jets = 0;
TClonesArray *tracks = 0;
- tracks = dynamic_cast<TClonesArray*>(list->FindObject(fTracksName));
+ tracks = dynamic_cast<TClonesArray*>(list->FindObject(fTracks));
if (!tracks) {
- AliError(Form("Pointer to tracks %s == 0", fTracksName.Data() ));
- return;
+ AliError(Form("Pointer to tracks %s == 0", fTracks->GetName() ));
+ return kTRUE;
}
const Int_t Ntracks=tracks->GetEntries();
- jets= dynamic_cast<TClonesArray*>(list->FindObject(fJetsName));
+ jets= dynamic_cast<TClonesArray*>(list->FindObject(fJets));
+ if (!jets) {
+ AliError(Form("Pointer to tracks %s == 0", fJets->GetName() ));
+ return kTRUE;
+ }
const Int_t Njets = jets->GetEntries();
//Leticia's loop to find hardest track
-
Int_t iTT=-1;
Double_t ptmax=-10;
- for (Int_t iTracks = 0; iTracks < Ntracks; iTracks++)
- {
- AliVTrack* track = static_cast<AliVTrack*>(tracks->At(iTracks));
- if (!track) {
- printf("ERROR: Could not receive track %d\n", iTracks);
- continue;
- }
+ for (Int_t iTracks = 0; iTracks < Ntracks; iTracks++) {
+ AliVTrack* track = static_cast<AliVTrack*>(tracks->At(iTracks));
+ if (!track) {
+ printf("ERROR: Could not receive track %d\n", iTracks);
+ continue;
+ }
- if(TMath::Abs(track->Eta())>0.9) continue;
- if(track->Pt()<0.15)continue;
- //iCount++;
- if(track->Pt()>ptmax){
- ptmax=track->Pt();
- iTT=iTracks;
- }
+ if(TMath::Abs(track->Eta())>0.9) continue;
+ if(track->Pt()<0.15) continue;
+ //iCount++;
+ if(track->Pt()>ptmax){
+ ptmax=track->Pt();
+ iTT=iTracks;
}
+ }
-
Int_t ijethi=-1;
-
Double_t highestjetpt=0.0;
-
Int_t passedTTcut=0;
- for (Int_t ijet = 0; ijet < Njets; ijet++)
- {
-
- AliEmcalJet *jet = static_cast<AliEmcalJet*>(jets->At(ijet));
-
- if (!jet)
- continue;
-
- if(!AcceptJet(jet))
- continue;
+ for (Int_t ijets = 0; ijets < Njets; ijets++){
+ AliEmcalJet *jet = static_cast<AliEmcalJet*>(jets->At(ijets));
+ if (!jet) continue;
+ if(!AcceptthisJet(jet)) continue;
Double_t jetPt = jet->Pt();
if(highestjetpt<jetPt){
- ijethi=ijet;
- highestjetpt=jetPt;
+ ijethi=ijets;
+ highestjetpt=jetPt;
}
+ }
- }
-
-
-
- for (Int_t ijet = 0; ijet < Njets; ijet++){
-
+ for (Int_t ijet = 0; ijet < Njets; ijet++){
AliEmcalJet *jet = static_cast<AliEmcalJet*>(jets->At(ijet));
+ if (!jet) continue;
+ if(!AcceptthisJet(jet)) continue;
- if(!AcceptJet(jet))
- continue;
-
-
Double_t jetphi = jet->Phi();
Double_t jetPt = jet->Pt();
Double_t jeteta=jet->Eta();
Double_t leadjet=0;
if (ijet==ijethi) leadjet=1;
-
fHistJetPt[centbin]->Fill(jet->Pt());
fHistLeadJetPt[centbin]->Fill(jet->Pt());
fHistLeadJetPtBias[centbin]->Fill(jet->Pt());
}
- fHistJetEtaPhi->Fill(jet->Eta(),jetphi);
+ fHistJetEtaPhi->Fill(jet->Eta(),jetphi);
+ if(iTT>0){
+ AliVTrack* TT = static_cast<AliVTrack*>(tracks->At(iTT));
+ if(TMath::Abs(jetphi-TT->Phi()-TMath::Pi())<0.6) passedTTcut=1;
+ else passedTTcut=0;
+ }
- if(iTT>0){
- AliVTrack* TT = static_cast<AliVTrack*>(tracks->At(iTT));
- if(TMath::Abs(jetphi-TT->Phi()-TMath::Pi())<0.6) passedTTcut=1;
- else passedTTcut=0;
- }
+ if(passedTTcut)
+ fHistJetPtTT[centbin]->Fill(jet->Pt());
- if(passedTTcut)
- fHistJetPtTT[centbin]->Fill(jet->Pt());
-
+ Int_t iptjet=-1;
+ iptjet=GetpTjetBin(jetPt);
+ if(iptjet<0) continue;
- if (highestjetpt>15) {
-
- for (Int_t iTracks = 0; iTracks < Ntracks; iTracks++)
- {
- AliVTrack* track = static_cast<AliVTrack*>(tracks->At(iTracks));
- if (!track) {
- printf("ERROR: Could not receive track %d\n", iTracks);
- continue;
- }
+ //if (highestjetpt>15) {
+ if (highestjetpt>8) {
+
+ for (Int_t iTracks = 0; iTracks < Ntracks; iTracks++) {
+ AliVTrack* track = static_cast<AliVTrack*>(tracks->At(iTracks));
+ if (!track) {
+ printf("ERROR: Could not receive track %d\n", iTracks);
+ continue;
+ }
- if(TMath::Abs(track->Eta())>fTrkEta) continue;
+ if(TMath::Abs(track->Eta())>fTrkEta) continue;
- fHistTrackPt->Fill(track->Pt());
+ fHistTrackPt->Fill(track->Pt());
- if (track->Pt()<0.15)
- continue;
+ if (track->Pt()<0.15) continue;
- Double_t trackphi = track->Phi();
- if (trackphi > TMath::Pi())
- trackphi = trackphi-2*TMath::Pi();
-
- Double_t tracketa=track->Eta();
- Double_t trackpt=track->Pt();
- Double_t deta=tracketa-jeteta;
- Int_t ieta=GetEtaBin(deta);
-
- //Jet pt, track pt, dPhi,deta,fcent
- Double_t dphijh = RelativePhi(jetphi,trackphi);
- if (dphijh < -0.5*TMath::Pi())
- dphijh+= 2*TMath::Pi();
- if (dphijh > 1.5*TMath::Pi()) dphijh-=2.*TMath::Pi();
-
-
- Int_t iptjet=-1;
- iptjet=GetpTjetBin(jetPt);
-
- fHistJetH[centbin][iptjet][ieta]->Fill(dphijh,track->Pt());
- fHistJetHEtaPhi->Fill(deta,dphijh);
-
- Double_t dR=sqrt(deta*deta+dphijh*dphijh);
-
- if ((jet->MaxTrackPt()>fTrkBias) || (jet->MaxClusterPt()>fClusBias)){
- fHistJetHBias[centbin][iptjet][ieta]->Fill(dphijh,trackpt);
+ Double_t trackphi = track->Phi();
+ if (trackphi > TMath::Pi())
+ trackphi = trackphi-2*TMath::Pi();
+
+ Double_t tracketa=track->Eta();
+ Double_t trackpt=track->Pt();
+ Double_t deta=tracketa-jeteta;
+ Int_t ieta=GetEtaBin(deta);
+ if (ieta<0) {
+ AliError(Form("Eta Bin negative: %f", deta));
+ continue;
+ }
+
+ //Jet pt, track pt, dPhi,deta,fCent
+ Double_t dphijh = RelativePhi(jetphi,trackphi);
+ if (dphijh < -0.5*TMath::Pi())
+ dphijh+= 2*TMath::Pi();
+ if (dphijh > 1.5*TMath::Pi())
+ dphijh-=2.*TMath::Pi();
+ fHistJetH[centbin][iptjet][ieta]->Fill(dphijh,track->Pt());
+ fHistJetHEtaPhi->Fill(deta,dphijh);
- Double_t triggerEntries[8] = {fcent,jetPt,track->Pt(),dR,deta,dphijh,0.0,leadjet};
- fhnJH->Fill(triggerEntries);
- }
+ Double_t dR=sqrt(deta*deta+dphijh*dphijh);
- if(passedTTcut)
- fHistJetHTT[centbin][iptjet][ieta]->Fill(dphijh,trackpt);
+ if ((jet->MaxTrackPt()>fTrkBias) || (jet->MaxClusterPt()>fClusBias)){
+ fHistJetHBias[centbin][iptjet][ieta]->Fill(dphijh,trackpt);
+ Double_t triggerEntries[8] = {fCent,jetPt,trackpt,dR,deta,dphijh,0.0,leadjet};
+ fhnJH->Fill(triggerEntries);
+ }
- } //track loop
- }//jet pt cut
+ if(passedTTcut)
+ fHistJetHTT[centbin][iptjet][ieta]->Fill(dphijh,trackpt);
+ } //track loop
+ }//jet pt cut
}//jet loop
-
//Prepare to do event mixing
// create a list of reduced objects. This speeds up processing and reduces memory consumption for the event pool
TObjArray* tracksClone = CloneAndReduceTrackList(tracks);
//delete tracks;
- Double_t fvertex[3]={0,0,0};
- InputEvent()->GetPrimaryVertex()->GetXYZ(fvertex);
- Double_t zVtx=fvertex[2];
-
if(fDoEventMixing>0){
// event mixing
// FillCorrelations(). Also nMix should be passed in, so a weight
// of 1./nMix can be applied.
-
-
-
-
- AliEventPool* pool = fPoolMgr->GetEventPool(fcent, zVtx);
+ AliEventPool* pool = fPoolMgr->GetEventPool(fCent, zVtx);
- if (!pool)
- AliFatal(Form("No pool found for centrality = %f, zVtx = %f", fcent, zVtx));
-
+ if (!pool){
+ AliFatal(Form("No pool found for centrality = %f, zVtx = %f", fCent, zVtx));
+ return kTRUE;
+ }
//check for a trigger jet
-
+ if (pool->IsReady() || pool->NTracksInPool() > fMixingTracks / 10 || pool->GetCurrentNEvents() >= 5) {
- if (pool->IsReady() || pool->NTracksInPool() > fMixingTracks / 10 || pool->GetCurrentNEvents() >= 5)
- {
-
for (Int_t ijet = 0; ijet < Njets; ijet++){
-
Double_t leadjet=0;
if (ijet==ijethi) leadjet=1;
AliEmcalJet *jet = static_cast<AliEmcalJet*>(jets->At(ijet));
-
- if(!AcceptJet(jet))
- continue;
+ if(!AcceptthisJet(jet)) continue;
Double_t jetPt = jet->Pt();
Double_t jetphi = jet->Phi();
Double_t jeteta=jet->Eta();
-
Int_t nMix = pool->GetCurrentNEvents();
//Fill for biased jet triggers only
if ((jet->MaxTrackPt()>fTrkBias) || (jet->MaxClusterPt()>fClusBias)){
// Fill mixed-event histos here
- for (Int_t jMix=0; jMix<nMix; jMix++)
- {
- TObjArray* bgTracks = pool->GetEvent(jMix);
- const Int_t Nbgtrks = bgTracks->GetEntries();
- for(Int_t ibg=0; ibg<Nbgtrks; ibg++){
- AliPicoTrack *part = static_cast<AliPicoTrack*>(bgTracks->At(ibg));
- if(!part) continue;
-
- Double_t DPhi = jetphi - part->Phi();
- Double_t DEta = jeteta - part->Eta();
- Double_t DR=TMath::Sqrt(DPhi*DPhi+DEta*DEta);
- if(DPhi<-0.5*TMath::Pi()) DPhi+=2.*TMath::Pi();
- if(DPhi>3./2.*TMath::Pi()) DPhi-=2.*TMath::Pi();
- Double_t triggerEntries[8] = {fcent,jetPt,part->Pt(),DR,DEta,DPhi,0.0,leadjet};
- fhnMixedEvents->Fill(triggerEntries,1./nMix);
-
+ for (Int_t jMix=0; jMix<nMix; jMix++) {
+ TObjArray* bgTracks = pool->GetEvent(jMix);
+ const Int_t Nbgtrks = bgTracks->GetEntries();
- }
+ for(Int_t ibg=0; ibg<Nbgtrks; ibg++){
+ AliPicoTrack *part = static_cast<AliPicoTrack*>(bgTracks->At(ibg));
+ if(!part) continue;
+
+ Double_t DEta = part->Eta()-jeteta;
+ Double_t DPhi = RelativePhi(jetphi,part->Phi());
+
+ Double_t DR=TMath::Sqrt(DPhi*DPhi+DEta*DEta);
+ if(DPhi<-0.5*TMath::Pi()) DPhi+=2.*TMath::Pi();
+ if(DPhi>3./2.*TMath::Pi()) DPhi-=2.*TMath::Pi();
+ Double_t triggerEntries[8] = {fCent,jetPt,part->Pt(),DR,DEta,DPhi,0.0,leadjet};
+ fhnMixedEvents->Fill(triggerEntries,1./nMix);
+ }
}
+ }
}
- }
}
//update pool if jet in event or not
pool->UpdatePool(tracksClone);
-
}
-
-
-
- PostData(1, fOutputList);
+ return kTRUE;
}
//________________________________________________________________________
void AliAnalysisTaskEmcalJetHMEC::Terminate(Option_t *)
{
//just terminate
-
}
//________________________________________________________________________
-Int_t AliAnalysisTaskEmcalJetHMEC::AcceptJet(AliEmcalJet *jet)
+Int_t AliAnalysisTaskEmcalJetHMEC::AcceptthisJet(AliEmcalJet *jet)
{
//applies all jet cuts except pt
float jetphi = jet->Phi();
if (jetphi>TMath::Pi())
jetphi = jetphi-2*TMath::Pi();
-
+
if ((jet->Phi()<fPhimin)||(jet->Phi()>fPhimax))
return 0;
if ((jet->Eta()<fEtamin)||(jet->Eta()>fEtamax))
return 0;
//prevents 0 area jets from sneaking by when area cut == 0
if (jet->Area()==0)
- return 0;
-
+ return 0;
//exclude jets with extremely high pt tracks which are likely misreconstructed
if(jet->MaxTrackPt()>100)
return 0;
//passed all above cuts
return 1;
-
}
//________________________________________________________________________
-THnSparse* AliAnalysisTaskEmcalJetHMEC::NewTHnSparseF(const char* name, UInt_t entries)
-{
+THnSparse* AliAnalysisTaskEmcalJetHMEC::NewTHnSparseF(const char* name, UInt_t entries){
// generate new THnSparseF, axes are defined in GetDimParams()
Int_t count = 0;
case 0:
label = "V0 centrality (%)";
-
nbins = 10;
xmin = 0.;
xmax = 100.;
break;
-
case 1:
label = "corrected jet pt";
- nbins = 20;
- xmin = 0.;
- xmax = 200.;
- break;
-
+ nbins = 20;
+ xmin = 0.;
+ xmax = 200.;
+ break;
case 2:
label = "track pT";
-
- nbins = 100;
- xmin = 0.;
- xmax = 10;
- break;
-
-
+ nbins = 100;
+ xmin = 0.;
+ xmax = 10;
+ break;
+
case 3:
label = "deltaR";
- nbins = 15;
+ nbins = 10;
xmin = 0.;
- xmax = 1.5;
+ xmax = 5.0;
break;
-
-
case 4:
label = "deltaEta";
nbins = 24;
xmax = 1.2;
break;
-
case 5:
label = "deltaPhi";
- nbins = 64;
+ nbins = 72;
xmin = -0.5*pi;
xmax = 1.5*pi;
- break;
-
-
+ break;
case 6:
label = "leading track";
xmax = 2.5;
break;
-
}
-
}
-
//_________________________________________________
// From CF event mixing code PhiCorrelations
TObjArray* AliAnalysisTaskEmcalJetHMEC::CloneAndReduceTrackList(TObjArray* tracks)
{
AliVParticle* particle = (AliVParticle*) tracks->At(i);
if(TMath::Abs(particle->Eta())>fTrkEta) continue;
- if(particle->Pt()<0.15)continue;
+ if(particle->Pt()<0.15) continue;
Double_t trackpt=particle->Pt();
if(hadbin>-1) fHistTrackEtaPhi[hadbin]->Fill(particle->Eta(),particle->Phi());
-
tracksClone->Add(new AliPicoTrack(particle->Pt(), particle->Eta(), particle->Phi(), particle->Charge(), 0, 0, 0, 0));
}
return tracksClone;
}
-
-
-
-