AliAnalysisTaskEmcalJet("AliAnalysisTaskCLQA", kTRUE),
fDoCumulants(0),
fCumPtMin(0.3), fCumPtMax(5.0), fCumEtaMin(-1.0), fCumEtaMax(1.0), fCumMmin(15),
- fNtupCum(0), fNtupCumInfo(0)
+ fNtupCum(0), fNtupCumInfo(0), fNtupZdcInfo(0)
{
// Default constructor.
}
AliAnalysisTaskEmcalJet(name, kTRUE),
fDoCumulants(0),
fCumPtMin(0.3), fCumPtMax(5.0), fCumEtaMin(-1.0), fCumEtaMax(1.0), fCumMmin(15),
- fNtupCum(0), fNtupCumInfo(0)
+ fNtupCum(0), fNtupCumInfo(0), fNtupZdcInfo(0)
{
// Standard constructor.
}
Double_t Q4r=0,Q4i=0;
Double_t mpt=0,mpt2=0,ptmaxq=0;
Double_t ts00=0,ts10=0,ts11=0;
+ Double_t v0ach=0, v0cch=0;
+
for (Int_t i =0; i<ntracks; ++i) {
- AliVTrack *track = dynamic_cast<AliVTrack*>(fTracks->At(i));
+ AliVParticle *track = dynamic_cast<AliVParticle*>(fTracks->At(i));
if (!track)
continue;
Double_t eta = track->Eta();
+ if (track->Charge()!=0) {
+ if ((eta<5.1)&&(eta>2.8))
+ ++v0ach;
+ else if ((eta>-3.7)&&(eta<-1.7))
+ ++v0cch;
+ }
if ((eta<etamin) || (eta>etamax))
continue;
Double_t pt = track->Pt();
Double_t Q2abs = Q2r*Q2r+Q2i*Q2i;
Double_t Q4abs = Q4r*Q4r+Q4i*Q4i;
Double_t Q42re = Q4r*Q2r*Q2r-Q4r*Q2i*Q2i+2*Q4i*Q2r*Q2i;
-
Double_t tsall = -1;
Double_t tsax = (tsa00+tsa11)*(tsa00+tsa11)-4*(tsa00*tsa11-tsa10*tsa10);
if (tsax>=0) {
fNtupCumInfo->fQ2abs = Q2abs;
fNtupCumInfo->fQ4abs = Q4abs;
fNtupCumInfo->fQ42re = Q42re;
+ fNtupCumInfo->fCos2phi = Q2r;
+ fNtupCumInfo->fSin2phi = Q2i;
fNtupCumInfo->fPtMax = ptmaxq;
fNtupCumInfo->fMPt = mpt/M;
fNtupCumInfo->fMPt2 = mpt2/M;
fNtupCumInfo->fTS = ts;
- AliVVZERO *vzero = InputEvent()->GetVZEROData();
- fNtupCumInfo->fMV0M = vzero->GetMTotV0A()+vzero->GetMTotV0C();
+ TString tname(fTracks->GetName());
+ if (tname.Contains("mc")) {
+ fNtupCumInfo->fMV0M = v0ach + v0cch;
+ } else {
+ AliVVZERO *vzero = InputEvent()->GetVZEROData();
+ fNtupCumInfo->fMV0M = vzero->GetMTotV0A()+vzero->GetMTotV0C();
+ }
+
AliCentrality *cent = InputEvent()->GetCentrality();
fNtupCumInfo->fCl1 = cent->GetCentralityPercentile("CL1");
fNtupCumInfo->fV0M = cent->GetCentralityPercentile("V0M");
fNtupCumInfo->fV0A = cent->GetCentralityPercentile("V0A");
fNtupCumInfo->fV0AEq = cent->GetCentralityPercentile("V0AEq");
fNtupCumInfo->fZNA = cent->GetCentralityPercentile("ZNA");
+
+ AliVZDC *vZDC = InputEvent()->GetZDCData();
+ const Double_t *znaTowers = vZDC->GetZNATowerEnergy();
+ fNtupZdcInfo->fZna0 = znaTowers[0];
+ fNtupZdcInfo->fZna1 = znaTowers[1];
+ fNtupZdcInfo->fZna2 = znaTowers[2];
+ fNtupZdcInfo->fZna3 = znaTowers[3];
+ fNtupZdcInfo->fZna4 = znaTowers[4];
+
fNtupCum->Fill();
}
}
fNtupCumInfo = new AliNtupCumInfo;
fNtupCum->Branch("cumulants", &fNtupCumInfo, 32*1024, 99);
+ fNtupZdcInfo = new AliNtupZdcInfo;
+ fNtupCum->Branch("zdc", &fNtupZdcInfo, 32*1024, 99);
+
fOutput->Add(fNtupCum);
}
#include "AliAnalysisTaskEmcalJet.h"
class AliNtupCumInfo;
+class AliNtupZdcInfo;
class AliAnalysisTaskCLQA : public AliAnalysisTaskEmcalJet {
public:
Double_t fCumMmin; // minimum number of tracks for cumulants
TTree *fNtupCum; //!ntuple for cumulant analysis
AliNtupCumInfo *fNtupCumInfo; //!object holding cumulant results
+ AliNtupZdcInfo *fNtupZdcInfo; //!object holding zdc info
private:
AliAnalysisTaskCLQA(const AliAnalysisTaskCLQA&); // not implemented
AliAnalysisTaskCLQA &operator=(const AliAnalysisTaskCLQA&); // not implemented
- ClassDef(AliAnalysisTaskCLQA, 1) // Constantin's Task
+ ClassDef(AliAnalysisTaskCLQA, 2) // Constantin's Task
};
class AliNtupCumInfo {
public:
- AliNtupCumInfo() : fTrig(0), fRun(0), fVz(0), fIsFEC(0), fIsVSel(0), fIsP(0),
- fMall(0), fMall2(0), fPtMaxall(0), fMPtall(0),
- fMPt2all(0), fMPtall2(0), fTSall(0),
- fM(0), fQ2abs(0), fQ4abs(0), fQ42re(0),
- fPtMax(0), fMPt(0), fMPt2(0), fTS(0), fMV0M(0),
- fCl1(0), fV0M(0), fV0MEq(0), fV0A(0), fV0AEq(0), fZNA(0) {;}
+ AliNtupCumInfo() : fTrig(0), fRun(0), fVz(0), fIsFEC(0), fIsVSel(0), fIsP(0),
+ fMall(0), fMall2(0), fPtMaxall(0), fMPtall(0),
+ fMPt2all(0), fMPtall2(0), fTSall(0),
+ fM(0), fQ2abs(0), fQ4abs(0), fQ42re(0), fCos2phi(0), fSin2phi(0),
+ fPtMax(0), fMPt(0), fMPt2(0), fTS(0), fMV0M(0),
+ fCl1(0), fV0M(0), fV0MEq(0), fV0A(0), fV0AEq(0), fZNA(0) {;}
virtual ~AliNtupCumInfo() {;}
public:
Double32_t fMPtall2; //[0,0,16] mean pT truncated above 1 GeV/c
Double32_t fTSall; //[0,0,16] transverse sphericity
Int_t fM; // multiplicity (tracks in pT range)
- Double_t fQ2abs; // Q2 absolute
- Double_t fQ4abs; // Q4 absolute
- Double_t fQ42re; // Re(Q2Q*Q*)
+ Double32_t fQ2abs; // Q2 absolute
+ Double32_t fQ4abs; // Q4 absolute
+ Double32_t fQ42re; // Re(Q2Q*Q*)
+ Double32_t fCos2phi; // Cos(2phi)
+ Double32_t fSin2phi; // Sin(2phi)
Double32_t fPtMax; //[0,0,16] maximum pT
Double32_t fMPt; //[0,0,16] mean pT
Double32_t fMPt2; //[0,0,16] mean pT2
Double32_t fV0A; //[0,0,16] class V0A
Double32_t fV0AEq; //[0,0,16] class V0A Eq
Double32_t fZNA; //[0,0,16] class ZNA
-
- ClassDef(AliNtupCumInfo,2) // Cumulant storage class
+
+ ClassDef(AliNtupCumInfo,3) // Cumulant storage class
+};
+
+class AliNtupZdcInfo {
+ public:
+ AliNtupZdcInfo() : fZna0(0), fZna1(0), fZna2(0), fZna3(0), fZna4(0) {;}
+ virtual ~AliNtupZdcInfo() {;}
+
+ public:
+ Double32_t fZna0; // ZNA energy 0
+ Double32_t fZna1; // ZNA energy 1
+ Double32_t fZna2; // ZNA energy 2
+ Double32_t fZna3; // ZNA energy 3
+ Double32_t fZna4; // ZNA energy 4
+
+ ClassDef(AliNtupZdcInfo,1) // ZDC storage class
};
+
#endif