fhnDiJetVarsCh(0),
fhnDiJetVarsFullCharged(0),
fhnMatchingFullCharged(0),
- fh3JetPtFullFractionDR(0),
fh3PtTrigKt1Kt2Ch(0),
fh3PtTrigKt1Kt2FuCh(0),
fh3PtTrigDPhi1DPhi2Ch(0),
fhnDiJetVarsCh(0),
fhnDiJetVarsFullCharged(0),
fhnMatchingFullCharged(0),
- fh3JetPtFullFractionDR(0),
fh3PtTrigKt1Kt2Ch(0),
fh3PtTrigKt1Kt2FuCh(0),
fh3PtTrigDPhi1DPhi2Ch(0),
const Int_t nBinsKt = 50;
const Int_t nBinsDiJetEta = 40;
const Int_t nBinsCentr = fNcentBins;
- const Int_t nBinsAj = 50;
+ const Int_t nBinsAj = 20;
const Int_t nBins0[nBinsSparse0] = {nBinsPtW,nBinsPtW,nBinsDPhi,nBinsKt,nBinsDiJetEta,nBinsCentr,nBinsAj};
//pT1, pT2, deltaPhi, kT
const Double_t xmin0[nBinsSparse0] = { minPt, minPt, -0.5*TMath::Pi(), 0.,-1.,0. , 0.};
nBinsSparseMatch,nBinsMatch,xminMatch,xmaxMatch);
fOutput->Add(fhnMatchingFullCharged);
}
- fh3JetPtFullFractionDR = new TH3F("fh3JetPtFullFractionDR","fh3JetPtFullFractionDR;#it{p}_{T,full} (GeV/#it{c}); #it{f}_{ch};#Delta R",nBinsPt,minPt,maxPt,nBinsFraction,0.,1.05,nBinsDR,0.,1.);
- fOutput->Add(fh3JetPtFullFractionDR);
// =========== Switch on Sumw2 for all histos ===========
for (Int_t i=0; i<fOutput->GetEntries(); ++i) {
#include "AliVCaloCells.h"
#include "AliJetContainer.h"
#include "AliClusterContainer.h"
+#include "AliParticleContainer.h"
#include "AliEmcalTriggerPatchInfo.h"
#include "AliAODHeader.h"
fTriggerType(-1),
fNFastOR(16),
fhNEvents(0),
+ fh3PtEtaPhiTracks(0),
fh3PtEtaPhiJetFull(0),
fh3PtEtaPhiJetCharged(0),
fh2NJetsPtFull(0),
fh3PtLeadJet2VsPatchEnergy(0),
fh3PatchEnergyEtaPhiCenterJ1(0),
fh3PatchEnergyEtaPhiCenterJ2(0),
+ fh3PatchEnergyEtaPhiCenterJ1J2(0),
+ fh3PatchADCEnergyEtaPhiCenterJ1(0),
+ fh3PatchADCEnergyEtaPhiCenterJ2(0),
+ fh3PatchADCEnergyEtaPhiCenterJ1J2(0),
fh2CellEnergyVsTime(0),
fh3EClusELeadingCellVsTime(0)
{
fTriggerType(-1),
fNFastOR(16),
fhNEvents(0),
+ fh3PtEtaPhiTracks(0),
fh3PtEtaPhiJetFull(0),
fh3PtEtaPhiJetCharged(0),
fh2NJetsPtFull(0),
fh3PtLeadJet2VsPatchEnergy(0),
fh3PatchEnergyEtaPhiCenterJ1(0),
fh3PatchEnergyEtaPhiCenterJ2(0),
+ fh3PatchEnergyEtaPhiCenterJ1J2(0),
+ fh3PatchADCEnergyEtaPhiCenterJ1(0),
+ fh3PatchADCEnergyEtaPhiCenterJ2(0),
+ fh3PatchADCEnergyEtaPhiCenterJ1J2(0),
fh2CellEnergyVsTime(0),
fh3EClusELeadingCellVsTime(0)
{
//Check if requested trigger was fired
TString firedTrigClass = InputEvent()->GetFiredTriggerClasses();
- if(fTriggerClass.Contains("J1") && fTriggerClass.Contains("J2")) {
+ if(fTriggerClass.Contains("J1") && fTriggerClass.Contains("J2")) {
if(!firedTrigClass.Contains("J1") || !firedTrigClass.Contains("J2") )
- return kFALSE;
+ return kFALSE;
}
else {
-
if(!firedTrigClass.Contains(fTriggerClass))
- return kFALSE;
+ return kFALSE;
if(fTriggerClass.Contains("J2") && firedTrigClass.Contains("J1")) //only accept J2 triggers which were not fired by J1 as well
- return kFALSE;
+ return kFALSE;
+ else if(fTriggerClass.Contains("J1") && firedTrigClass.Contains("J2")) //only accept J2 triggers which were not fired by J1 as well
+ return kFALSE;
}
+
}
fhNEvents->Fill(1.5);
AliEmcalTriggerPatchInfo *patch = GetMainTriggerPatch();
if(patch) {
fMaxPatchEnergy = patch->GetPatchE();
- if(patch->IsJetLow() && !patch->IsJetHigh())
+ Double_t patchADCGeV = patch->GetADCAmpGeVRough();
+ if(patch->IsJetLow() && !patch->IsJetHigh()) {
fh3PatchEnergyEtaPhiCenterJ2->Fill(patch->GetPatchE(),patch->GetEtaGeo(),patch->GetPhiGeo());
- if(patch->IsJetHigh())
+ fh3PatchADCEnergyEtaPhiCenterJ2->Fill(patchADCGeV,patch->GetEtaGeo(),patch->GetPhiGeo());
+ }
+ else if(patch->IsJetHigh() && !patch->IsJetLow()) {
fh3PatchEnergyEtaPhiCenterJ1->Fill(patch->GetPatchE(),patch->GetEtaGeo(),patch->GetPhiGeo());
+ fh3PatchADCEnergyEtaPhiCenterJ1->Fill(patchADCGeV,patch->GetEtaGeo(),patch->GetPhiGeo());
+ }
+ else if(patch->IsJetHigh() && patch->IsJetLow()) {
+ fh3PatchEnergyEtaPhiCenterJ1J2->Fill(patch->GetPatchE(),patch->GetEtaGeo(),patch->GetPhiGeo());
+ fh3PatchADCEnergyEtaPhiCenterJ1J2->Fill(patchADCGeV,patch->GetEtaGeo(),patch->GetPhiGeo());
+ }
}
+
}
//________________________________________________________________________
if(i<=nbin13 && i>nbin12) binsEn[i]=(Double_t)enmin3 + (enmax3-enmin3)/(nbin13-nbin12)*((Double_t)i-(Double_t)nbin12) ;
}
+ fh3PtEtaPhiTracks = new TH3F("fh3PtEtaPhiTracks","fh3PtEtaPhiTracks;#it{p}_{T}^{track};#eta;#varphi",fgkNEnBins,binsEn,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
+ fOutput->Add(fh3PtEtaPhiTracks);
fh3PtEtaPhiJetFull = new TH3F("fh3PtEtaPhiJetFull","fh3PtEtaPhiJetFull;#it{p}_{T}^{jet};#eta;#varphi",fgkNPtBins,binsPt,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
fOutput->Add(fh3PtEtaPhiJetFull);
fh3PatchEnergyEtaPhiCenterJ2 = new TH3F("fh3PatchEnergyEtaPhiCenterJ2","fh3PatchEnergyEtaPhiCenterJ2;E_{patch};#eta;#phi",fgkNPtBins,binsPt,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
fOutput->Add(fh3PatchEnergyEtaPhiCenterJ2);
+ fh3PatchEnergyEtaPhiCenterJ1J2 = new TH3F("fh3PatchEnergyEtaPhiCenterJ1J2","fh3PatchEnergyEtaPhiCenterJ1J2;E_{patch};#eta;#phi",fgkNPtBins,binsPt,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
+ fOutput->Add(fh3PatchEnergyEtaPhiCenterJ1J2);
+
+ fh3PatchADCEnergyEtaPhiCenterJ1 = new TH3F("fh3PatchADCEnergyEtaPhiCenterJ1","fh3PatchADCEnergyEtaPhiCenterJ1;E_{ADC,patch};#eta;#phi",fgkNPtBins,binsPt,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
+ fOutput->Add(fh3PatchADCEnergyEtaPhiCenterJ1);
+
+ fh3PatchADCEnergyEtaPhiCenterJ2 = new TH3F("fh3PatchADCEnergyEtaPhiCenterJ2","fh3PatchADCEnergyEtaPhiCenterJ2;E_{ADC,patch};#eta;#phi",fgkNPtBins,binsPt,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
+ fOutput->Add(fh3PatchADCEnergyEtaPhiCenterJ2);
+
+ fh3PatchADCEnergyEtaPhiCenterJ1J2 = new TH3F("fh3PatchADCEnergyEtaPhiCenterJ1J2","fh3PatchADCEnergyEtaPhiCenterJ1J2;E_{ADC,patch};#eta;#phi",fgkNPtBins,binsPt,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
+ fOutput->Add(fh3PatchADCEnergyEtaPhiCenterJ1J2);
+
fh2CellEnergyVsTime = new TH2F("fh2CellEnergyVsTime","fh2CellEnergyVsTime;E_{cell};time",fgkNEnBins,binsEn,fgkNTimeBins,binsTime);
fOutput->Add(fh2CellEnergyVsTime);
{
// Fill histograms.
+ AliParticleContainer *partCont = GetParticleContainer(0);
+ if (partCont) {
+ AliVParticle *track = partCont->GetNextAcceptParticle(0);
+ while(track) {
+ fh3PtEtaPhiTracks->Fill(track->Pt(),track->Eta(),track->Phi());
+ track = partCont->GetNextAcceptParticle();
+ }
+ }
+
+
AliClusterContainer *clusCont = GetClusterContainer(0);
if (clusCont) {
Int_t nclusters = clusCont->GetNClusters();
if(!SelectEvent())
return kFALSE;
- if(!fTriggerClass.IsNull())
+ if(fTriggerPatchInfo)
FindTriggerPatch();
return kTRUE; // If return kFALSE FillHistogram() will NOT be executed.
return -1.;
}
+
+//________________________________________________________________________
+Double_t AliAnalysisTaskEmcalJetTriggerQA::GetECross(Int_t absID) const {
+
+ //Get Ecross = sum of energy of neighbouring cells (using uncalibrated energy)
+
+ if(!fCaloCells)
+ return -1.;
+
+ Double_t ecross = -1.;
+
+ Int_t absID1 = -1;
+ Int_t absID2 = -1;
+ Int_t absID3 = -1;
+ Int_t absID4 = -1;
+
+ Int_t imod = -1, iphi =-1, ieta=-1,iTower = -1, iIphi = -1, iIeta = -1;
+ fGeom->GetCellIndex(absID,imod,iTower,iIphi,iIeta);
+ fGeom->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi, iIeta,iphi,ieta);
+
+ if( iphi < AliEMCALGeoParams::fgkEMCALRows-1)
+ absID1 = fGeom->GetAbsCellIdFromCellIndexes(imod, iphi+1, ieta);
+ if( iphi > 0 )
+ absID2 = fGeom->GetAbsCellIdFromCellIndexes(imod, iphi-1, ieta);
+
+ if( ieta == AliEMCALGeoParams::fgkEMCALCols-1 && !(imod%2) ) {
+ absID3 = fGeom->GetAbsCellIdFromCellIndexes(imod+1, iphi, 0);
+ absID4 = fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta-1);
+ }
+ else if( ieta == 0 && imod%2 ) {
+ absID3 = fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta+1);
+ absID4 = fGeom->GetAbsCellIdFromCellIndexes(imod-1, iphi, AliEMCALGeoParams::fgkEMCALCols-1);
+ }
+ else {
+ if( ieta < AliEMCALGeoParams::fgkEMCALCols-1 )
+ absID3 = fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta+1);
+ if( ieta > 0 )
+ absID4 = fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta-1);
+ }
+
+ Double_t ecell1 = fCaloCells->GetCellAmplitude(absID1);
+ Double_t ecell2 = fCaloCells->GetCellAmplitude(absID2);
+ Double_t ecell3 = fCaloCells->GetCellAmplitude(absID3);
+ Double_t ecell4 = fCaloCells->GetCellAmplitude(absID4);
+
+ ecross = ecell1+ecell2+ecell3+ecell4;
+
+ return ecross;
+}
Int_t GetLeadingCellId(const AliVCluster *clus) const;
Double_t GetEnergyLeadingCell(const AliVCluster *clus) const;
+ Double_t GetECross(Int_t absID) const;
Double_t GetZ(const AliVParticle *trk, const AliEmcalJet *jet) const;
Double_t GetZ(const Double_t trkPx, const Double_t trkPy, const Double_t trkPz, const Double_t jetPx, const Double_t jetPy, const Double_t jetPz) const;
Int_t fNFastOR; // size of trigger patch fNFastORxfNFastOR
TH1F *fhNEvents; //! Histo number of events
+ TH3F *fh3PtEtaPhiTracks; //! pt,eta,phi of tracks
TH3F *fh3PtEtaPhiJetFull; //! pt,eta,phi of full jets
TH3F *fh3PtEtaPhiJetCharged; //! pt,eta,phi of charged jets
TH2F *fh2NJetsPtFull; //! NJets per event vs pT,jet
TH3F *fh3PtLeadJet2VsPatchEnergy; //! leading jet energy vs leading patch energy vs jet trigger (J1/J2)
TH3F *fh3PatchEnergyEtaPhiCenterJ1; //! patch energy vs eta, phi at center of patch, high threshold
TH3F *fh3PatchEnergyEtaPhiCenterJ2; //! patch energy vs eta, phi at center of patch, low threshold
+ TH3F *fh3PatchEnergyEtaPhiCenterJ1J2; //! patch energy vs eta, phi at center of patch, low + high threshold
+ TH3F *fh3PatchADCEnergyEtaPhiCenterJ1; //! patch ADC energy vs eta, phi at center of patch, high threshold
+ TH3F *fh3PatchADCEnergyEtaPhiCenterJ2; //! patch ADC energy vs eta, phi at center of patch, low threshold
+ TH3F *fh3PatchADCEnergyEtaPhiCenterJ1J2; //! patch ADC energy vs eta, phi at center of patch, low + high threshold
TH2F *fh2CellEnergyVsTime; //! emcal cell energy vs time
TH3F *fh3EClusELeadingCellVsTime; //! cluster energy vs energy of leading cell in cluster vs time of the leading cell
AliAnalysisTaskEmcalJetTriggerQA(const AliAnalysisTaskEmcalJetTriggerQA&); // not implemented
AliAnalysisTaskEmcalJetTriggerQA &operator=(const AliAnalysisTaskEmcalJetTriggerQA&); // not implemented
- ClassDef(AliAnalysisTaskEmcalJetTriggerQA, 5)
+ ClassDef(AliAnalysisTaskEmcalJetTriggerQA, 6)
};
#endif