26 #include "TObjArray.h" 37 fQContributionXsub1(0),
38 fQContributionYsub1(0),
39 fQContributionXsub2(0),
40 fQContributionYsub2(0),
47 fQContributionX =
new TArrayF(0);
48 fQContributionY =
new TArrayF(0);
49 fQContributionXsub1 =
new TArrayF(0);
50 fQContributionYsub1 =
new TArrayF(0);
51 fQContributionXsub2 =
new TArrayF(0);
52 fQContributionYsub2 =
new TArrayF(0);
53 for(Int_t i = 0; i < 11; ++i) {
54 fMeanX2[i]=fMeanY2[i]=0.;
55 fAPlus[i]=fAMinus[i]=1.;
56 fLambdaPlus[i]=fLambdaMinus[i]=0.;
66 fQContributionXsub1(0),
67 fQContributionYsub1(0),
68 fQContributionXsub2(0),
69 fQContributionYsub2(0),
83 TNamed::operator=(ep);
204 target.
fQsub1 =
dynamic_cast<TVector2*
> (
fQsub1->Clone());
206 target.
fQsub2 =
dynamic_cast<TVector2*
> (
fQsub2->Clone());
210 for(Int_t i = 0; i < 11; ++i) {
270 Double_t qx = 0, qy = 0;
287 AliVVZERO *vzeroData =
event->GetVZEROData();
289 AliError(
"Enable to get VZERO Data");
293 AliError(
"Required harmonic is less or equal to 0");
299 Double_t totMult = 0.;
300 for(Int_t ring = firstRing; ring <=lastRing; ++ring) {
302 Double_t multRing = 0.;
303 for(Int_t iCh = ring*8; iCh < (ring+1)*8; ++iCh) {
304 Double_t phi = TMath::Pi()/8. + TMath::Pi()/4.*(iCh%8);
305 Double_t mult =
event->GetVZEROEqMultiplicity(iCh);
306 qx += mult*TMath::Cos(harmonic*phi);
307 qy += mult*TMath::Sin(harmonic*phi);
311 if (multRing < 1e-6)
continue;
316 Double_t qxPrime = qx -
fMeanX2[ring];
317 Double_t qyPrime = qy -
fMeanY2[ring];
319 Double_t
trans[2][2];
324 Double_t qxSeconde = trans[0][0]*qxPrime + trans[0][1]*qyPrime;
325 Double_t qySeconde = trans[1][0]*qxPrime + trans[1][1]*qyPrime;
327 Double_t qxTierce = qxSeconde/
fAPlus[ring];
328 Double_t qyTierce = qySeconde/
fAMinus[ring];
330 Double_t psi = TMath::ATan2(qyTierce,qxTierce)/harmonic;
331 Double_t deltaPsi = (
fCos8Psi[ring]*TMath::Sin(2.*4.*psi))/2.;
332 Double_t qxQuarte = qxTierce*TMath::Cos(2.*deltaPsi) - qyTierce*TMath::Sin(2.*deltaPsi);
333 Double_t qyQuarte = qxTierce*TMath::Sin(2.*deltaPsi) + qyTierce*TMath::Cos(2.*deltaPsi);
344 if (totMult<1e-6)
return -999;
346 return (TMath::ATan2(qyTot,qxTot)/harmonic);
358 AliVVZERO *vzeroData =
event->GetVZEROData();
360 AliError(
"Enable to get VZERO Data");
364 AliError(
"Required harmonic is less or equal to 0");
368 Int_t firstCh=-1,lastCh=-1;
373 else if (ring == 8) {
377 else if (ring == 9) {
381 else if (ring == 10) {
386 Double_t multRing = 0.;
387 for(Int_t iCh = firstCh; iCh < lastCh; ++iCh) {
388 Double_t phi = TMath::Pi()/8. + TMath::Pi()/4.*(iCh%8);
389 Double_t mult =
event->GetVZEROEqMultiplicity(iCh);
390 qx += mult*TMath::Cos(harmonic*phi);
391 qy += mult*TMath::Sin(harmonic*phi);
396 if (multRing < 1e-6)
return -999;
400 Double_t qxPrime = qx -
fMeanX2[ring];
401 Double_t qyPrime = qy -
fMeanY2[ring];
403 Double_t
trans[2][2];
408 Double_t qxSeconde = trans[0][0]*qxPrime + trans[0][1]*qyPrime;
409 Double_t qySeconde = trans[1][0]*qxPrime + trans[1][1]*qyPrime;
411 Double_t qxTierce = qxSeconde/
fAPlus[ring];
412 Double_t qyTierce = qySeconde/
fAMinus[ring];
414 Double_t psi = TMath::ATan2(qyTierce,qxTierce)/harmonic;
415 Double_t deltaPsi = (
fCos8Psi[ring]*TMath::Sin(2.*4.*psi))/2.;
416 Double_t qxQuarte = qxTierce*TMath::Cos(2.*deltaPsi) - qyTierce*TMath::Sin(2.*deltaPsi);
417 Double_t qyQuarte = qxTierce*TMath::Sin(2.*deltaPsi) + qyTierce*TMath::Cos(2.*deltaPsi);
422 return (TMath::ATan2(qy,qx)/harmonic);
426 Double_t meanX2, Double_t meanY2,
427 Double_t aPlus, Double_t aMinus,
428 Double_t lambdaPlus, Double_t lambdaMinus,
433 if (ring < 0 || ring >= 11)
AliFatal(Form(
"Bad ring index (%d)",ring));
Double_t GetQContributionYsub1(AliVTrack *track)
TArrayF * fQContributionYsub2
AliEventplane()
A container for the event plane stored in AOD in ESD.
AliEventplane & operator=(const AliEventplane &ep)
copy constructor
void SetVZEROEPParams(Int_t ring, Double_t meanX2, Double_t meanY2, Double_t aPlus, Double_t aMinus, Double_t lambdaPlus, Double_t lambdaMinus, Double_t cos8Psi)
TArrayF * fQContributionXsub2
Bool_t IsEventInEventplaneClass(Double_t a, Double_t b, const char *method)
Double_t GetQContributionX(AliVTrack *track)
TArrayF * fQContributionX
Double_t CalculateVZEROEventPlane(const AliVEvent *event, Int_t firstRing, Int_t lastRing, Int_t harmonic, Double_t &qxTot, Double_t &qyTot) const
bool trans(const AliFMDIndex &x, const AliFMDIndex &y, const AliFMDIndex &z)
virtual void CopyEP(AliEventplane &ep) const
assignment operator
Double_t fLambdaMinus[11]
TVector2 * GetQVector()
get event plane result
Double_t GetQContributionXsub1(AliVTrack *track)
TArrayF * fQContributionXsub1
virtual Int_t GetID() const =0
Double_t GetQContributionXsub2(AliVTrack *track)
Double_t GetQContributionY(AliVTrack *track)
~AliEventplane()
constructor
#define AliFatal(message)
TArrayF * fQContributionY
#define AliError(message)
Double_t GetEventplane(const char *x, const AliVEvent *event=NULL, Int_t harmonic=2) const
Double_t GetQContributionYsub2(AliVTrack *track)
TArrayF * fQContributionYsub1