AliAnalysisTaskJetCore::AliAnalysisTaskJetCore() :
AliAnalysisTaskSE(),
fESD(0x0),
-fAOD(0x0),
+fAODIn(0x0),
+fAODOut(0x0),
fAODExtension(0x0),
fBackgroundBranch(""),
fNonStdFile(""),
fh2AngStructpt2C60(0x0),
fh2AngStructpt3C60(0x0),
fh2AngStructpt4C60(0x0),
+fh2JetsumHT3R2(0x0),
+fh2JetsumHT3R2gap(0x0),
+fh2JetsumHT3R4(0x0),
+fh2JetsumHT3R4gap(0x0),
+fh2JetsumHT3R6(0x0),
+fh2JetsumHT3R6gap(0x0),
+fh2JetsumHT3R8(0x0),
+fh2JetsumHT3R8gap(0x0),
+fh2JetsumHT3R10(0x0),
+fh2JetsumHT3R10gap(0x0),
fh3spectriggered(0x0),
fh3specbiased(0x0),
-fh3spectot(0x0)
-
+fh3spectot(0x0),
+fh3spectotb(0x0)
{
// default Constructor
AliAnalysisTaskJetCore::AliAnalysisTaskJetCore(const char *name) :
AliAnalysisTaskSE(name),
fESD(0x0),
-fAOD(0x0),
+fAODIn(0x0),
+fAODOut(0x0),
fAODExtension(0x0),
fBackgroundBranch(""),
fNonStdFile(""),
fh2AngStructpt2C60(0x0),
fh2AngStructpt3C60(0x0),
fh2AngStructpt4C60(0x0),
+fh2JetsumHT3R2(0x0),
+fh2JetsumHT3R2gap(0x0),
+fh2JetsumHT3R4(0x0),
+fh2JetsumHT3R4gap(0x0),
+fh2JetsumHT3R6(0x0),
+fh2JetsumHT3R6gap(0x0),
+fh2JetsumHT3R8(0x0),
+fh2JetsumHT3R8gap(0x0),
+fh2JetsumHT3R10(0x0),
+fh2JetsumHT3R10gap(0x0),
fh3spectriggered(0x0),
fh3specbiased(0x0),
-fh3spectot(0x0)
-
+fh3spectot(0x0),
+fh3spectotb(0x0)
{
// Constructor
UInt_t entries = 0; // bit coded, see GetDimParams() below
entries = 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6 |1<<7;
fhnDeltaR = NewTHnSparseF("fhnDeltaR", entries);
-
+
+ //change binning in pTtrack
+ Double_t *xPt3 = new Double_t[10];
+ xPt3[0] = 0.;
+ for(int i = 1; i<=9;i++){
+ if(xPt3[i-1]<1)xPt3[i] = xPt3[i-1] + 0.2; // 1 - 5
+ else if(xPt3[i-1]<10)xPt3[i] = xPt3[i-1] + 3; // 5 - 12
+ else xPt3[i] = xPt3[i-1] + 150.; // 18
+ }
+ fhnDeltaR->SetBinEdges(2,xPt3);
+ delete [] xPt3;
+
+ //change binning in HTI
+ Double_t *xPt4 = new Double_t[14];
+ xPt4[0] = 0.;
+ for(int i = 1; i<=13;i++){
+ if(xPt4[i-1]<10)xPt4[i] = xPt4[i-1] + 1; // 1 - 10
+ else if(xPt4[i-1]<20)xPt4[i] = xPt4[i-1] + 5; // 10 - 12
+ else xPt4[i] = xPt4[i-1] + 30.; // 13
+ }
+ fhnDeltaR->SetBinEdges(6,xPt4);
+ delete [] xPt4;
+
+
+
+
+
+
+ if(fDoEventMixing){
UInt_t cifras = 0; // bit coded, see GetDimParams() below
cifras = 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6 |1<<7;
- fhnMixedEvents = NewTHnSparseF("fhnMixedEvents", cifras);
+ fhnMixedEvents = NewTHnSparseF("fhnMixedEvents", cifras);}
if(fCheckMethods){
fh2AngStructpt2C60 = new TH2F("Ang struct pt2 C60","",15,0.,1.5,150,0.,10.);
fh2AngStructpt3C60 = new TH2F("Ang struct pt3 C60","",15,0.,1.5,150,0.,10.);
fh2AngStructpt4C60 = new TH2F("Ang struct pt4 C60","",15,0.,1.5,150,0.,10.); }
+
+ fh2JetsumHT3R2 = new TH2F("Pt sum R02 HT3","",20,0.,200.,100,0.,10.);
+ fh2JetsumHT3R2gap = new TH2F("Pt sum R02 HT3 gap","",20,0.,200.,100,0.,10.);
+ fh2JetsumHT3R4 = new TH2F("Pt sum R04 HT3","",20,0.,200.,100,0.,10.);
+ fh2JetsumHT3R4gap = new TH2F("Pt sum R04 HT3 gap","",20,0.,200.,100,0.,10.);
+ fh2JetsumHT3R6 = new TH2F("Pt sum R06 HT3","",20,0.,200.,100,0.,10.);
+ fh2JetsumHT3R6gap = new TH2F("Pt sum R06 HT3 gap","",20,0.,200.,100,0.,10.);
+ fh2JetsumHT3R8 = new TH2F("Pt sum R08 HT3","",20,0.,200.,100,0.,10.);
+ fh2JetsumHT3R8gap = new TH2F("Pt sum R08 HT3 gap","",20,0.,200.,100,0.,10.);
+ fh2JetsumHT3R10 = new TH2F("Pt sum R10 HT3","",20,0.,200.,100,0.,10.);
+ fh2JetsumHT3R10gap = new TH2F("Pt sum R10 HT3 gap","",20,0.,200.,100,0.,10.);
fh3spectriggered = new TH3F("Triggered spectrum","",10,0,100,50,0.,200,50,0.,50.);
fh3specbiased = new TH3F("Biased spectrum","",10,0,100,50,0.,200.,50,0.,50.);
- fh3spectot = new TH3F("Total spectrum","",50,0.,200.,50,0.,50.,50,0.,50.);
-
+ fh3spectot = new TH3F("Total spectrum 0-10","",50,0.,200.,50,0.,50.,50,0.,50.);
+ fh3spectotb = new TH3F("Total spectrum 0-20","",50,0.,200.,50,0.,50.,50,0.,50.);
fOutputList->Add(fHistEvtSelection);
fOutputList->Add(fhnDeltaR);
fOutputList->Add(fh2AngStructpt2C60);
fOutputList->Add(fh2AngStructpt3C60);
fOutputList->Add(fh2AngStructpt4C60);}
+
+
+ fOutputList->Add(fh2JetsumHT3R2);
+ fOutputList->Add(fh2JetsumHT3R2gap);
+
+
+ fOutputList->Add(fh2JetsumHT3R4);
+ fOutputList->Add(fh2JetsumHT3R4gap);
+
+
+ fOutputList->Add(fh2JetsumHT3R6);
+ fOutputList->Add(fh2JetsumHT3R6gap);
+
+
+ fOutputList->Add(fh2JetsumHT3R8);
+ fOutputList->Add(fh2JetsumHT3R8gap);
+
+
+ fOutputList->Add(fh2JetsumHT3R10);
+ fOutputList->Add(fh2JetsumHT3R10gap);
+
+
fOutputList->Add(fh3spectriggered);
fOutputList->Add(fh3specbiased);
fOutputList->Add(fh3spectot);
-
+ fOutputList->Add(fh3spectotb);
// =========== Switch on Sumw2 for all histos ===========
for (Int_t i=0; i<fOutputList->GetEntries(); ++i) {
TH1 *h1 = dynamic_cast<TH1*>(fOutputList->At(i));
fESD=dynamic_cast<AliESDEvent*>(InputEvent());
if (!fESD) {
AliError("ESD not available");
- fAOD = dynamic_cast<AliAODEvent*>(InputEvent());
- } else {
- fAOD = dynamic_cast<AliAODEvent*>(AODEvent());
- }
+ fAODIn = dynamic_cast<AliAODEvent*>(InputEvent());
+ }
+ fAODOut = dynamic_cast<AliAODEvent*>(AODEvent());
+
+ static AliAODEvent* aod = 0;
+ // take all other information from the aod we take the tracks from
+ if(!aod){
+ if(!fESD)aod = fAODIn;
+ else aod = fAODOut;}
+
+
if(fNonStdFile.Length()!=0){
// case that we have an AOD extension we need can fetch the jets from the extended output
}
// vertex selection
- if(!fAOD){
+ if(!aod){
if(fDebug) Printf("%s:%d No AOD",(char*)__FILE__,__LINE__);
fHistEvtSelection->Fill(3);
PostData(1, fOutputList);
}
- AliAODVertex* primVtx = fAOD->GetPrimaryVertex();
+ AliAODVertex* primVtx = aod->GetPrimaryVertex();
if(!primVtx){
if(fDebug) Printf("%s:%d No primVtx",(char*)__FILE__,__LINE__);
fHistEvtSelection->Fill(3);
- PostData(1, fOutputList);
+ PostData(1, fOutputList);
+ return;
}
Int_t nTracksPrim = primVtx->GetNContributors();
// centrality selection
AliCentrality *cent = 0x0;
Double_t centValue = 0.;
- if(fESD) cent = fESD->GetCentrality();
- if(cent) centValue = cent->GetCentralityPercentile("V0M");
+ if(fESD) {cent = fESD->GetCentrality();
+ if(cent) centValue = cent->GetCentralityPercentile("V0M");}
+ else centValue=aod->GetHeader()->GetCentrality();
+
if(fDebug) printf("centrality: %f\n", centValue);
if (centValue < fCentMin || centValue > fCentMax){
fHistEvtSelection->Fill(4);
// get background
AliAODJetEventBackground* externalBackground = 0;
- if(fAOD&&!externalBackground&&fBackgroundBranch.Length()){
- externalBackground = (AliAODJetEventBackground*)(fAOD->FindListObject(fBackgroundBranch.Data()));
+ if(fAODOut&&!externalBackground&&fBackgroundBranch.Length()){
+ externalBackground = (AliAODJetEventBackground*)(fAODOut->FindListObject(fBackgroundBranch.Data()));
if(!externalBackground)Printf("%s:%d Background branch not found %s",(char*)__FILE__,__LINE__,fBackgroundBranch.Data());;
}
if(fAODExtension&&!externalBackground&&fBackgroundBranch.Length()){
externalBackground = (AliAODJetEventBackground*)(fAODExtension->GetAOD()->FindListObject(fBackgroundBranch.Data()));
if(!externalBackground)Printf("%s:%d Background branch not found %s",(char*)__FILE__,__LINE__,fBackgroundBranch.Data());;
}
+
+ if(fAODIn&&!externalBackground&&fBackgroundBranch.Length()){
+ externalBackground = (AliAODJetEventBackground*)(fAODIn->FindListObject(fBackgroundBranch.Data()));
+ if(!externalBackground)Printf("%s:%d Background branch not found %s",(char*)__FILE__,__LINE__,fBackgroundBranch.Data());;
+ }
Float_t rho = 0;
if(externalBackground)rho = externalBackground->GetBackground(0);
// fetch jets
TClonesArray *aodJets[2];
aodJets[0]=0;
- if(fAOD&&!aodJets[0]){
- aodJets[0] = dynamic_cast<TClonesArray*>(fAOD->FindListObject(fJetBranchName[0].Data()));
- aodJets[1] = dynamic_cast<TClonesArray*>(fAOD->FindListObject(fJetBranchName[1].Data())); }
+ if(fAODOut&&!aodJets[0]){
+ aodJets[0] = dynamic_cast<TClonesArray*>(fAODOut->FindListObject(fJetBranchName[0].Data()));
+ aodJets[1] = dynamic_cast<TClonesArray*>(fAODOut->FindListObject(fJetBranchName[1].Data())); }
if(fAODExtension && !aodJets[0]){
aodJets[0] = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fJetBranchName[0].Data()));
aodJets[1] = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fJetBranchName[1].Data())); }
+ if(fAODIn&&!aodJets[0]){
+ aodJets[0] = dynamic_cast<TClonesArray*>(fAODIn->FindListObject(fJetBranchName[0].Data()));
+ aodJets[1] = dynamic_cast<TClonesArray*>(fAODIn->FindListObject(fJetBranchName[1].Data())); }
+
//Double_t ptsub[aodJets[0]->GetEntriesFast()];
//Int_t inord[aodJets[0]->GetEntriesFast()];
AliVParticle *partback = (AliVParticle*)ParticleList.At(point);
if(!partback) continue;
fh3spectriggered->Fill(centValue,ptcorr,partback->Pt());
+ //if(partback->Pt()<6.) continue;
AliAODTrack* leadtrack;
Int_t ippt=0;
Double_t ppt=-10;
if(!leadtrack) continue;
fh3specbiased->Fill(centValue,ptcorr,leadtrack->Pt());
if(centValue<10)fh3spectot->Fill(ptcorr,leadtrack->Pt(),partback->Pt());
+ if(centValue<20)fh3spectotb->Fill(ptcorr,leadtrack->Pt(),partback->Pt());
//store one trigger info
if((partback->Pt()>10.)&&(iCount==0)){
trigJet=i;
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); }}
+ Double_t sumpt2a=0.;
+ Double_t sumpt2b=0.;
+
+ Double_t sumpt4a=0.;
+ Double_t sumpt4b=0.;
+
+ Double_t sumpt6a=0.;
+ Double_t sumpt6b=0.;
+
+ Double_t sumpt8a=0.;
+ Double_t sumpt8b=0.;
+
+ Double_t sumpt10a=0.;
+ Double_t sumpt10b=0.;
+
for(int it = 0;it<nT;++it){
AliVParticle *part = (AliVParticle*)ParticleList.At(it);
Double_t deltaR = jetbig->DeltaR(part);
- Double_t deltaEta = etabig-part->Eta();
+ Double_t deltaEta = etabig-part->Eta();
+ if(partback->Pt()>10.){
+ if(centValue<10){
+
+ if(deltaR<0.2){if(leadtrack->Pt()>3.){ sumpt2a=sumpt2a+part->Pt();
+ if(TMath::Abs(deltaEta)>0.8) sumpt2b=sumpt2b+part->Pt();}}
+ if(deltaR>=0.2 && deltaR<0.4){if(leadtrack->Pt()>3.){ sumpt4a=sumpt4a+part->Pt();
+ if(TMath::Abs(deltaEta)>0.8) sumpt4b=sumpt4b+part->Pt();}}
+ if(deltaR>=0.4 && deltaR<0.6){if(leadtrack->Pt()>3.){ sumpt6a=sumpt6a+part->Pt();
+ if(TMath::Abs(deltaEta)>0.8) sumpt6b=sumpt6b+part->Pt();}}
+ if(deltaR>=0.6 && deltaR<0.8){if(leadtrack->Pt()>3.){ sumpt8a=sumpt8a+part->Pt();
+ if(TMath::Abs(deltaEta)>0.8) sumpt8b=sumpt8b+part->Pt();}}
+ if(deltaR>=0.8 && deltaR<1.2){if(leadtrack->Pt()>3.){ sumpt10a=sumpt10a+part->Pt();
+ if(TMath::Abs(deltaEta)>0.8) sumpt10b=sumpt10b+part->Pt();}}}}
+
+
Double_t deltaPhi=phibig-part->Phi();
if(deltaPhi<-0.5*TMath::Pi()) deltaPhi+=2.*TMath::Pi();
if(deltaPhi>3./2.*TMath::Pi()) deltaPhi-=2.*TMath::Pi();
Double_t jetEntries[8] = {centValue,ptcorr,part->Pt(),deltaR,deltaEta,deltaPhi,leadtrack->Pt(),partback->Pt()}; fhnDeltaR->Fill(jetEntries);
}
//end of track loop
- }
+ Double_t rhoin2=rho*TMath::Pi()*0.2*0.2;
+ Double_t rhoin4=rho*TMath::Pi()*(0.4*0.4-0.2*0.2);
+ Double_t rhoin6=rho*TMath::Pi()*(0.6*0.6-0.4*0.4);
+ Double_t rhoin8=rho*TMath::Pi()*(0.8*0.8-0.6*0.6);
+ Double_t rhoin10=rho*TMath::Pi()*(1.2*1.2-0.8*0.8);
+
+
+ if(rho!=0){
+ if(partback->Pt()>10.){
+ fh2JetsumHT3R2->Fill(ptcorr,sumpt2a/rhoin2);
+ fh2JetsumHT3R2gap->Fill(ptcorr,sumpt2b/rhoin2);
+ fh2JetsumHT3R4->Fill(ptcorr,sumpt4a/rhoin4);
+ fh2JetsumHT3R4gap->Fill(ptcorr,sumpt4b/rhoin4);
+ fh2JetsumHT3R6->Fill(ptcorr,sumpt6a/rhoin6);
+ fh2JetsumHT3R6gap->Fill(ptcorr,sumpt6b/rhoin6);
+ fh2JetsumHT3R8->Fill(ptcorr,sumpt8a/rhoin8);
+ fh2JetsumHT3R8gap->Fill(ptcorr,sumpt8b/rhoin8);
+ fh2JetsumHT3R10->Fill(ptcorr,sumpt10a/rhoin10);
+ fh2JetsumHT3R10gap->Fill(ptcorr,sumpt10b/rhoin10);
+ }}
+
+ }
//end of jet loop
if (TMath::Abs(fTrigBuffer[fTindex][6]-centValue<10)){
for(int it = 0;it<nT;++it){
- AliVParticle *part = (AliVParticle*)ParticleList.At(it); Double_t DPhi = fTrigBuffer[fTindex][1] - part->Phi();
+ AliVParticle *part = (AliVParticle*)ParticleList.At(it);
+ Double_t DPhi = fTrigBuffer[fTindex][1] - part->Phi();
Double_t DEta = fTrigBuffer[fTindex][2] - part->Eta();
Double_t DR=TMath::Sqrt(DPhi*DPhi+DEta*DEta);
if(DPhi<-0.5*TMath::Pi()) DPhi+=2.*TMath::Pi();
-
-
-
-
-
-
+
Int_t AliAnalysisTaskJetCore::GetListOfTracks(TList *list){
- Int_t iCount = 0;
-
+ Int_t iCount = 0;
+ AliAODEvent *aod = 0;
+ if(!fESD)aod = fAODIn;
+ else aod = fAODOut;
- for(int it = 0;it < fAOD->GetNumberOfTracks();++it){
- AliAODTrack *tr = fAOD->GetTrack(it);
+ for(int it = 0;it < aod->GetNumberOfTracks();++it){
+ AliAODTrack *tr = aod->GetTrack(it);
if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask)))continue;
if(TMath::Abs(tr->Eta())>0.9)continue;
if(tr->Pt()<0.15)continue;
}
Int_t AliAnalysisTaskJetCore::GetHardestTrackBackToJet(AliAODJet *jetbig){
-
-
+
+ AliAODEvent *aod = 0;
+ if(!fESD)aod = fAODIn;
+ else aod = fAODOut;
Int_t index=-1;
Double_t ptmax=-10;
Double_t dphi=0;
Double_t dif=0;
Int_t iCount=0;
- for(int it = 0;it < fAOD->GetNumberOfTracks();++it){
- AliAODTrack *tr = fAOD->GetTrack(it);
+ for(int it = 0;it < aod->GetNumberOfTracks();++it){
+ AliAODTrack *tr = aod->GetTrack(it);
if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask)))continue;
if(TMath::Abs(tr->Eta())>0.9)continue;
if(tr->Pt()<0.15)continue;
dphi=RelativePhi(tr->Phi(),jetbig->Phi());
if(TMath::Abs(dphi)<TMath::Pi()-0.2) continue;
if(tr->Pt()>ptmax){ ptmax=tr->Pt();
- index=iCount;
- dif=dphi; }}
+ index=iCount-1;
+ dif=dphi; }}
return index;
Int_t AliAnalysisTaskJetCore::GetListOfTracksCloseToJet(TList *list,AliAODJet *jetbig){
Int_t iCount = 0;
-
+ AliAODEvent *aod = 0;
+ if(!fESD)aod = fAODIn;
+ else aod = fAODOut;
- for(int it = 0;it < fAOD->GetNumberOfTracks();++it){
- AliAODTrack *tr = fAOD->GetTrack(it);
+ for(int it = 0;it < aod->GetNumberOfTracks();++it){
+ AliAODTrack *tr = aod->GetTrack(it);
if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask)))continue;
if(TMath::Abs(tr->Eta())>0.9)continue;
if(tr->Pt()<0.15)continue;
{
Int_t nInputTracks = 0;
-
+ AliAODEvent *aod = 0;
+ if(!fESD)aod = fAODIn;
+ else aod = fAODOut;
TString jbname(fJetBranchName[1]);
//needs complete event, use jets without background subtraction
for(Int_t i=1; i<=3; ++i){
if(jbname.Contains("AODextra")) jbname.ReplaceAll("AODextra","AOD");
if(fDebug) Printf("Multiplicity from jet branch %s", jbname.Data());
- TClonesArray *tmpAODjets = dynamic_cast<TClonesArray*>(fAOD->FindListObject(jbname.Data()));
+ TClonesArray *tmpAODjets = dynamic_cast<TClonesArray*>(aod->FindListObject(jbname.Data()));
if(!tmpAODjets){
Printf("Jet branch %s not found", jbname.Data());
Printf("AliAnalysisTaskJetCore::GetNInputTracks FAILED");
case 1:
label = "corrected jet pt";
- nbins = 50;
+ nbins = 20;
xmin = 0.;
xmax = 200.;
break;
case 2:
label = "track pT";
- nbins = 1000;
+ nbins = 10;
xmin = 0.;
- xmax = 50;
+ xmax = 150;
break;
case 4:
label = "deltaEta";
- nbins = 30;
+ nbins = 15;
xmin = -1.5;
xmax = 1.5;
break;
case 6:
label = "leading track";
- nbins = 50;
+ nbins = 14;
xmin = 0;
xmax = 50;
break;
case 7:
label = "trigger track";
- nbins =50;
+ nbins =5;
xmin = 0;
xmax = 50;
break;