ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

//*****************************************************
//   Class AliEventplane
//   author: Alberica Toia, Johanna Gramling
//*****************************************************
/// A container for the event plane stored in AOD in ESD
 
#include "AliLog.h"
#include "AliEventplane.h"
#include "TVector2.h"
#include "AliVTrack.h"
#include "TObjArray.h"
#include "TArrayF.h"
#include "AliVEvent.h"
#include "AliVVZERO.h"

ClassImp(AliEventplane)

AliEventplane::AliEventplane() : TNamed("Eventplane", "Eventplane"),
  fQVector(0),
  fQContributionX(0),
  fQContributionY(0),
  fQContributionXsub1(0),
  fQContributionYsub1(0),
  fQContributionXsub2(0),
  fQContributionYsub2(0),
  fEventplaneQ(-1),
  fQsub1(0),
  fQsub2(0),
  fQsubRes(0)
{
  /// constructor
  fQContributionX = new TArrayF(0);
  fQContributionY = new TArrayF(0);
  fQContributionXsub1 = new TArrayF(0);
  fQContributionYsub1 = new TArrayF(0);
  fQContributionXsub2 = new TArrayF(0);
  fQContributionYsub2 = new TArrayF(0);
  for(Int_t i = 0; i < 11; ++i) {
    fMeanX2[i]=fMeanY2[i]=0.;
    fAPlus[i]=fAMinus[i]=1.;
    fLambdaPlus[i]=fLambdaMinus[i]=0.;
    fCos8Psi[i]=0.;
  }
}

AliEventplane::AliEventplane(const AliEventplane& ep) : 
  TNamed(ep),
  fQVector(0),
  fQContributionX(0),
  fQContributionY(0),
  fQContributionXsub1(0),
  fQContributionYsub1(0),
  fQContributionXsub2(0),
  fQContributionYsub2(0),
  fEventplaneQ(0),
  fQsub1(0),
  fQsub2(0),
  fQsubRes(0)
{
  /// Copy constructor
  ((AliEventplane &) ep).CopyEP(*this);
}

AliEventplane& AliEventplane::operator=(const AliEventplane& ep)
{
  /// Assignment operator
  if (this!=&ep){
    TNamed::operator=(ep);
    ((AliEventplane &) ep).CopyEP(*this);
  }
  return *this;
}

void AliEventplane::CopyEP(AliEventplane& ep) const 
{ // copy function

  AliEventplane& target = (AliEventplane &) ep;
  
  if(fQContributionX)
  {
    if(ep.fQContributionX)
    { 
      *(ep.fQContributionX) = *fQContributionX;
    }
    else 
    {
      ep.fQContributionX = new TArrayF(*fQContributionX);
    }
  }
  else
  {
    if(ep.fQContributionX) delete ep.fQContributionX;
    ep.fQContributionX = 0;
  }
  
  if(fQContributionY)
  {
    if(ep.fQContributionY)
    { 
      *(ep.fQContributionY) = *fQContributionY;
    }
    else 
    {
      ep.fQContributionY = new TArrayF(*fQContributionY);
    }
  }
  else
  {
    if(ep.fQContributionY) delete ep.fQContributionY;
    ep.fQContributionY = 0;
  }

  
  if(fQContributionXsub1)
  {
    if(ep.fQContributionXsub1)
    { 
      *(ep.fQContributionXsub1) = *fQContributionXsub1;
    }
    else 
    {
      ep.fQContributionXsub1 = new TArrayF(*fQContributionXsub1);
    }
  }
  else
  {
    if(ep.fQContributionXsub1) delete ep.fQContributionXsub1;
    ep.fQContributionXsub1 = 0;
  }
  
  if(fQContributionYsub1)
  {
    if(ep.fQContributionYsub1)
    { 
      *(ep.fQContributionYsub1) = *fQContributionYsub1;
    }
    else 
    {
      ep.fQContributionYsub1 = new TArrayF(*fQContributionYsub1);
    }
  }
  else
  {
    if(ep.fQContributionYsub1) delete ep.fQContributionYsub1;
    ep.fQContributionYsub1 = 0;
  }
  
  
  if(fQContributionXsub2)
  {
    if(ep.fQContributionXsub2)
    { 
      *(ep.fQContributionXsub2) = *fQContributionXsub2;
    }
    else 
    {
      ep.fQContributionXsub2 = new TArrayF(*fQContributionXsub2);
    }
  }
  else
  {
    if(ep.fQContributionXsub2) delete ep.fQContributionXsub2;
    ep.fQContributionXsub2 = 0;
  }
  
  if(fQContributionYsub2)
  {
    if(ep.fQContributionYsub2)
    { 
      *(ep.fQContributionYsub2) = *fQContributionYsub2;
    }
    else 
    {
      ep.fQContributionYsub2 = new TArrayF(*fQContributionYsub2);
    }
  }
  else
  {
    if(ep.fQContributionYsub2) delete ep.fQContributionYsub2;
    ep.fQContributionYsub2 = 0;
  }
  
  if (fEventplaneQ)
      target.fEventplaneQ = fEventplaneQ;
  
  if (fQVector)
      target.fQVector = dynamic_cast<TVector2*> (fQVector->Clone());
  if (fQsub1)
      target.fQsub1 = dynamic_cast<TVector2*> (fQsub1->Clone());
  if (fQsub2)
      target.fQsub2 = dynamic_cast<TVector2*> (fQsub2->Clone());
  if (fQsubRes)
      target.fQsubRes = fQsubRes;

  for(Int_t i = 0; i < 11; ++i) {
    target.fMeanX2[i]=fMeanX2[i];
    target.fMeanY2[i]=fMeanY2[i];
    target.fAPlus[i]=fAPlus[i];
    target.fAMinus[i]=fAMinus[i];
    target.fLambdaPlus[i]=fLambdaPlus[i];
    target.fLambdaMinus[i]=fLambdaMinus[i];
    target.fCos8Psi[i]=fCos8Psi[i];
  }
}

AliEventplane::~AliEventplane()
{
  /// destructor
  if (fQContributionX){
      delete fQContributionX;
      fQContributionX = 0;
  }
  if (fQContributionY){
      delete fQContributionY;
      fQContributionY = 0;
  }
  if (fQContributionXsub1){
      delete fQContributionXsub1;
      fQContributionXsub1 = 0;
  }
  if (fQContributionYsub1){
      delete fQContributionYsub1;
      fQContributionYsub1 = 0;
  }
  if (fQContributionXsub2){
      delete fQContributionXsub2;
      fQContributionXsub2 = 0;
  }
  if (fQContributionYsub2){
      delete fQContributionYsub2;
      fQContributionYsub2 = 0;
  }
  if (fQVector){
      delete fQVector;
      fQVector = 0;
  }
  if (fQsub1){
      delete fQsub1;
      fQsub1 = 0;
  }
    if (fQsub2){
      delete fQsub2;
      fQsub2 = 0;
  }
}

TVector2* AliEventplane::GetQVector()
{
  return fQVector;
}

Double_t AliEventplane::GetEventplane(const char *x, const AliVEvent *event, Int_t harmonic) const
{
  TString method = x;
  Double_t qx = 0, qy = 0;
  if(method.CompareTo("Q")==0)      return fEventplaneQ;
  else if(method.CompareTo("V0A")==0) return CalculateVZEROEventPlane(event, 8, harmonic, qx, qy);
  else if(method.CompareTo("V0C")==0) return CalculateVZEROEventPlane(event, 9, harmonic, qx, qy);
  else if(method.CompareTo("V0")==0)  return CalculateVZEROEventPlane(event,10, harmonic, qx, qy);

  return -1000.;
}

Double_t AliEventplane::CalculateVZEROEventPlane(const AliVEvent *  event, Int_t firstRing, Int_t lastRing, Int_t harmonic, Double_t &qxTot, Double_t &qyTot) const
{
  // Calculate the VZERO event-plane by summing rings
  // The flatenning is done on every ring separately
  if(!event) {
    AliError("No Event received");
    return -1000.;
  }
  AliVVZERO *vzeroData = event->GetVZEROData();
  if(!vzeroData) {
    AliError("Enable to get VZERO Data");
    return -1000.;
  }
  if(harmonic <= 0) {
    AliError("Required harmonic is less or equal to 0");
    return -1000.;
  }

  qxTot=qyTot=0.;
  Double_t qx, qy;
  Double_t totMult = 0.;
  for(Int_t ring = firstRing; ring <=lastRing; ++ring) {
    qx=qy=0.;
    Double_t multRing = 0.;
    for(Int_t iCh = ring*8; iCh < (ring+1)*8; ++iCh) {
      Double_t phi = TMath::Pi()/8. + TMath::Pi()/4.*(iCh%8);
      Double_t mult = event->GetVZEROEqMultiplicity(iCh);
      qx += mult*TMath::Cos(harmonic*phi);
      qy += mult*TMath::Sin(harmonic*phi);
      multRing += mult;
    }

    if (multRing < 1e-6) continue;
    totMult += multRing;

    if (harmonic == 2) {
      // Recentering
      Double_t qxPrime = qx - fMeanX2[ring];
      Double_t qyPrime = qy - fMeanY2[ring];
      // Twist
      Double_t trans[2][2];
      trans[0][0] = 1./(1.-fLambdaPlus[ring]*fLambdaMinus[ring]);
      trans[0][1] = -fLambdaMinus[ring]/(1.-fLambdaPlus[ring]*fLambdaMinus[ring]);
      trans[1][0] = -fLambdaPlus[ring]/(1.-fLambdaPlus[ring]*fLambdaMinus[ring]);
      trans[1][1] = 1./(1.-fLambdaPlus[ring]*fLambdaMinus[ring]);
      Double_t qxSeconde = trans[0][0]*qxPrime + trans[0][1]*qyPrime;
      Double_t qySeconde = trans[1][0]*qxPrime + trans[1][1]*qyPrime;
      // Rescaling
      Double_t qxTierce = qxSeconde/fAPlus[ring];
      Double_t qyTierce = qySeconde/fAMinus[ring];
      // 4th Fourier momenta in order to flatten the EP within a sector
      Double_t psi = TMath::ATan2(qyTierce,qxTierce)/harmonic;
      Double_t deltaPsi = (fCos8Psi[ring]*TMath::Sin(2.*4.*psi))/2.;
      Double_t qxQuarte = qxTierce*TMath::Cos(2.*deltaPsi) - qyTierce*TMath::Sin(2.*deltaPsi);
      Double_t qyQuarte = qxTierce*TMath::Sin(2.*deltaPsi) + qyTierce*TMath::Cos(2.*deltaPsi);
      qxTot += qxQuarte;
      qyTot += qyQuarte;
    }
    else {
      qxTot += qx;
      qyTot += qy;
    }
  }

  // In case of no hits return an invalid event-plane angle
  if (totMult<1e-6) return -999;

  return (TMath::ATan2(qyTot,qxTot)/harmonic);
}

Double_t AliEventplane::CalculateVZEROEventPlane(const AliVEvent *  event, Int_t ring, Int_t harmonic, Double_t &qx, Double_t &qy) const
{
  // Calculate the VZERO event-plane from an individual ring
  // Ring 8 - total V0A (rings 4-7), Ring 9 - total V0C (rings 0-3)
  // Ring 10 - total V0 (rings 0-7)
  if(!event) {
    AliError("No Event received");
    return -1000.;
  }
  AliVVZERO *vzeroData = event->GetVZEROData();
  if(!vzeroData) {
    AliError("Enable to get VZERO Data");
    return -1000.;
  }
  if(harmonic <= 0) {
    AliError("Required harmonic is less or equal to 0");
    return -1000.;
  }

  Int_t firstCh=-1,lastCh=-1;
  if (ring < 8) {
    firstCh = ring*8;
    lastCh = (ring+1)*8;
  }
  else if (ring == 8) {
    firstCh = 32;
    lastCh = 64;
  }
  else if (ring == 9) {
    firstCh = 0;
    lastCh = 32;
  }
  else if (ring == 10) {
    firstCh = 0;
    lastCh = 64;
  }
  qx=qy=0.;
  Double_t multRing = 0.;
  for(Int_t iCh = firstCh; iCh < lastCh; ++iCh) {
    Double_t phi = TMath::Pi()/8. + TMath::Pi()/4.*(iCh%8);
    Double_t mult = event->GetVZEROEqMultiplicity(iCh);
    qx += mult*TMath::Cos(harmonic*phi);
    qy += mult*TMath::Sin(harmonic*phi);
    multRing += mult;
  }

  // In case of no hits return an invalid event-plane angle
  if (multRing < 1e-6) return -999;

  if (harmonic == 2) {
    // Recentering
    Double_t qxPrime = qx - fMeanX2[ring];
    Double_t qyPrime = qy - fMeanY2[ring];
    // Twist
    Double_t trans[2][2];
    trans[0][0] = 1./(1.-fLambdaPlus[ring]*fLambdaMinus[ring]);
    trans[0][1] = -fLambdaMinus[ring]/(1.-fLambdaPlus[ring]*fLambdaMinus[ring]);
    trans[1][0] = -fLambdaPlus[ring]/(1.-fLambdaPlus[ring]*fLambdaMinus[ring]);
    trans[1][1] = 1./(1.-fLambdaPlus[ring]*fLambdaMinus[ring]);
    Double_t qxSeconde = trans[0][0]*qxPrime + trans[0][1]*qyPrime;
    Double_t qySeconde = trans[1][0]*qxPrime + trans[1][1]*qyPrime;
    // Rescaling
    Double_t qxTierce = qxSeconde/fAPlus[ring];
    Double_t qyTierce = qySeconde/fAMinus[ring];
    // 4th Fourier momenta in order to flatten the EP within a sector
    Double_t psi = TMath::ATan2(qyTierce,qxTierce)/harmonic;
    Double_t deltaPsi = (fCos8Psi[ring]*TMath::Sin(2.*4.*psi))/2.;
    Double_t qxQuarte = qxTierce*TMath::Cos(2.*deltaPsi) - qyTierce*TMath::Sin(2.*deltaPsi);
    Double_t qyQuarte = qxTierce*TMath::Sin(2.*deltaPsi) + qyTierce*TMath::Cos(2.*deltaPsi);
    qx = qxQuarte;
    qy = qyQuarte;
  }

  return (TMath::ATan2(qy,qx)/harmonic);
}

void AliEventplane::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)
{
  // Set the VZERO event-plane
  // flatenning parameters
  if (ring < 0 || ring >= 11) AliFatal(Form("Bad ring index (%d)",ring));

  fMeanX2[ring] = meanX2;
  fMeanY2[ring] = meanY2;
  fAPlus[ring] = aPlus;
  fAMinus[ring] = aMinus;
  fLambdaPlus[ring] = lambdaPlus;
  fLambdaMinus[ring] = lambdaMinus;
  fCos8Psi[ring] = cos8Psi;
}

TVector2* AliEventplane::GetQsub1()
{
  return fQsub1;
}

TVector2* AliEventplane::GetQsub2()
{
  return fQsub2;
}

Double_t AliEventplane::GetQsubRes()
{
  return fQsubRes;
}

Bool_t AliEventplane::IsEventInEventplaneClass(Double_t a, Double_t b, const char *x)
{
  TString method = x;
  if ((method.CompareTo("Q")==0) && (fEventplaneQ >=a && fEventplaneQ < b)) return kTRUE;
  else return kFALSE;
}

Double_t AliEventplane::GetQContributionX(AliVTrack* track)
{ 
  return fQContributionX->GetAt(track->GetID());
}

Double_t AliEventplane::GetQContributionY(AliVTrack* track)
{ 
  return fQContributionY->GetAt(track->GetID());
}

Double_t AliEventplane::GetQContributionXsub1(AliVTrack* track)
{ 
  return fQContributionXsub1->GetAt(track->GetID());
}

Double_t AliEventplane::GetQContributionYsub1(AliVTrack* track)
{ 
  return fQContributionYsub1->GetAt(track->GetID());
}

Double_t AliEventplane::GetQContributionXsub2(AliVTrack* track)
{ 
  return fQContributionXsub2->GetAt(track->GetID());
}

Double_t AliEventplane::GetQContributionYsub2(AliVTrack* track)
{ 
  return fQContributionYsub2->GetAt(track->GetID());
}

void AliEventplane::Reset()
{ 
  delete fQVector; fQVector=0;
  fQContributionX->Reset();
  fQContributionY->Reset();
  fQContributionXsub1->Reset();
  fQContributionYsub1->Reset();
  fQContributionXsub2->Reset();
  fQContributionYsub2->Reset();
  fEventplaneQ = -1;
  delete fQsub1; fQsub1=0;
  delete fQsub2; fQsub2=0;
  fQsubRes = 0;
}
 AliEventplane.cxx:1
 AliEventplane.cxx:2
 AliEventplane.cxx:3
 AliEventplane.cxx:4
 AliEventplane.cxx:5
 AliEventplane.cxx:6
 AliEventplane.cxx:7
 AliEventplane.cxx:8
 AliEventplane.cxx:9
 AliEventplane.cxx:10
 AliEventplane.cxx:11
 AliEventplane.cxx:12
 AliEventplane.cxx:13
 AliEventplane.cxx:14
 AliEventplane.cxx:15
 AliEventplane.cxx:16
 AliEventplane.cxx:17
 AliEventplane.cxx:18
 AliEventplane.cxx:19
 AliEventplane.cxx:20
 AliEventplane.cxx:21
 AliEventplane.cxx:22
 AliEventplane.cxx:23
 AliEventplane.cxx:24
 AliEventplane.cxx:25
 AliEventplane.cxx:26
 AliEventplane.cxx:27
 AliEventplane.cxx:28
 AliEventplane.cxx:29
 AliEventplane.cxx:30
 AliEventplane.cxx:31
 AliEventplane.cxx:32
 AliEventplane.cxx:33
 AliEventplane.cxx:34
 AliEventplane.cxx:35
 AliEventplane.cxx:36
 AliEventplane.cxx:37
 AliEventplane.cxx:38
 AliEventplane.cxx:39
 AliEventplane.cxx:40
 AliEventplane.cxx:41
 AliEventplane.cxx:42
 AliEventplane.cxx:43
 AliEventplane.cxx:44
 AliEventplane.cxx:45
 AliEventplane.cxx:46
 AliEventplane.cxx:47
 AliEventplane.cxx:48
 AliEventplane.cxx:49
 AliEventplane.cxx:50
 AliEventplane.cxx:51
 AliEventplane.cxx:52
 AliEventplane.cxx:53
 AliEventplane.cxx:54
 AliEventplane.cxx:55
 AliEventplane.cxx:56
 AliEventplane.cxx:57
 AliEventplane.cxx:58
 AliEventplane.cxx:59
 AliEventplane.cxx:60
 AliEventplane.cxx:61
 AliEventplane.cxx:62
 AliEventplane.cxx:63
 AliEventplane.cxx:64
 AliEventplane.cxx:65
 AliEventplane.cxx:66
 AliEventplane.cxx:67
 AliEventplane.cxx:68
 AliEventplane.cxx:69
 AliEventplane.cxx:70
 AliEventplane.cxx:71
 AliEventplane.cxx:72
 AliEventplane.cxx:73
 AliEventplane.cxx:74
 AliEventplane.cxx:75
 AliEventplane.cxx:76
 AliEventplane.cxx:77
 AliEventplane.cxx:78
 AliEventplane.cxx:79
 AliEventplane.cxx:80
 AliEventplane.cxx:81
 AliEventplane.cxx:82
 AliEventplane.cxx:83
 AliEventplane.cxx:84
 AliEventplane.cxx:85
 AliEventplane.cxx:86
 AliEventplane.cxx:87
 AliEventplane.cxx:88
 AliEventplane.cxx:89
 AliEventplane.cxx:90
 AliEventplane.cxx:91
 AliEventplane.cxx:92
 AliEventplane.cxx:93
 AliEventplane.cxx:94
 AliEventplane.cxx:95
 AliEventplane.cxx:96
 AliEventplane.cxx:97
 AliEventplane.cxx:98
 AliEventplane.cxx:99
 AliEventplane.cxx:100
 AliEventplane.cxx:101
 AliEventplane.cxx:102
 AliEventplane.cxx:103
 AliEventplane.cxx:104
 AliEventplane.cxx:105
 AliEventplane.cxx:106
 AliEventplane.cxx:107
 AliEventplane.cxx:108
 AliEventplane.cxx:109
 AliEventplane.cxx:110
 AliEventplane.cxx:111
 AliEventplane.cxx:112
 AliEventplane.cxx:113
 AliEventplane.cxx:114
 AliEventplane.cxx:115
 AliEventplane.cxx:116
 AliEventplane.cxx:117
 AliEventplane.cxx:118
 AliEventplane.cxx:119
 AliEventplane.cxx:120
 AliEventplane.cxx:121
 AliEventplane.cxx:122
 AliEventplane.cxx:123
 AliEventplane.cxx:124
 AliEventplane.cxx:125
 AliEventplane.cxx:126
 AliEventplane.cxx:127
 AliEventplane.cxx:128
 AliEventplane.cxx:129
 AliEventplane.cxx:130
 AliEventplane.cxx:131
 AliEventplane.cxx:132
 AliEventplane.cxx:133
 AliEventplane.cxx:134
 AliEventplane.cxx:135
 AliEventplane.cxx:136
 AliEventplane.cxx:137
 AliEventplane.cxx:138
 AliEventplane.cxx:139
 AliEventplane.cxx:140
 AliEventplane.cxx:141
 AliEventplane.cxx:142
 AliEventplane.cxx:143
 AliEventplane.cxx:144
 AliEventplane.cxx:145
 AliEventplane.cxx:146
 AliEventplane.cxx:147
 AliEventplane.cxx:148
 AliEventplane.cxx:149
 AliEventplane.cxx:150
 AliEventplane.cxx:151
 AliEventplane.cxx:152
 AliEventplane.cxx:153
 AliEventplane.cxx:154
 AliEventplane.cxx:155
 AliEventplane.cxx:156
 AliEventplane.cxx:157
 AliEventplane.cxx:158
 AliEventplane.cxx:159
 AliEventplane.cxx:160
 AliEventplane.cxx:161
 AliEventplane.cxx:162
 AliEventplane.cxx:163
 AliEventplane.cxx:164
 AliEventplane.cxx:165
 AliEventplane.cxx:166
 AliEventplane.cxx:167
 AliEventplane.cxx:168
 AliEventplane.cxx:169
 AliEventplane.cxx:170
 AliEventplane.cxx:171
 AliEventplane.cxx:172
 AliEventplane.cxx:173
 AliEventplane.cxx:174
 AliEventplane.cxx:175
 AliEventplane.cxx:176
 AliEventplane.cxx:177
 AliEventplane.cxx:178
 AliEventplane.cxx:179
 AliEventplane.cxx:180
 AliEventplane.cxx:181
 AliEventplane.cxx:182
 AliEventplane.cxx:183
 AliEventplane.cxx:184
 AliEventplane.cxx:185
 AliEventplane.cxx:186
 AliEventplane.cxx:187
 AliEventplane.cxx:188
 AliEventplane.cxx:189
 AliEventplane.cxx:190
 AliEventplane.cxx:191
 AliEventplane.cxx:192
 AliEventplane.cxx:193
 AliEventplane.cxx:194
 AliEventplane.cxx:195
 AliEventplane.cxx:196
 AliEventplane.cxx:197
 AliEventplane.cxx:198
 AliEventplane.cxx:199
 AliEventplane.cxx:200
 AliEventplane.cxx:201
 AliEventplane.cxx:202
 AliEventplane.cxx:203
 AliEventplane.cxx:204
 AliEventplane.cxx:205
 AliEventplane.cxx:206
 AliEventplane.cxx:207
 AliEventplane.cxx:208
 AliEventplane.cxx:209
 AliEventplane.cxx:210
 AliEventplane.cxx:211
 AliEventplane.cxx:212
 AliEventplane.cxx:213
 AliEventplane.cxx:214
 AliEventplane.cxx:215
 AliEventplane.cxx:216
 AliEventplane.cxx:217
 AliEventplane.cxx:218
 AliEventplane.cxx:219
 AliEventplane.cxx:220
 AliEventplane.cxx:221
 AliEventplane.cxx:222
 AliEventplane.cxx:223
 AliEventplane.cxx:224
 AliEventplane.cxx:225
 AliEventplane.cxx:226
 AliEventplane.cxx:227
 AliEventplane.cxx:228
 AliEventplane.cxx:229
 AliEventplane.cxx:230
 AliEventplane.cxx:231
 AliEventplane.cxx:232
 AliEventplane.cxx:233
 AliEventplane.cxx:234
 AliEventplane.cxx:235
 AliEventplane.cxx:236
 AliEventplane.cxx:237
 AliEventplane.cxx:238
 AliEventplane.cxx:239
 AliEventplane.cxx:240
 AliEventplane.cxx:241
 AliEventplane.cxx:242
 AliEventplane.cxx:243
 AliEventplane.cxx:244
 AliEventplane.cxx:245
 AliEventplane.cxx:246
 AliEventplane.cxx:247
 AliEventplane.cxx:248
 AliEventplane.cxx:249
 AliEventplane.cxx:250
 AliEventplane.cxx:251
 AliEventplane.cxx:252
 AliEventplane.cxx:253
 AliEventplane.cxx:254
 AliEventplane.cxx:255
 AliEventplane.cxx:256
 AliEventplane.cxx:257
 AliEventplane.cxx:258
 AliEventplane.cxx:259
 AliEventplane.cxx:260
 AliEventplane.cxx:261
 AliEventplane.cxx:262
 AliEventplane.cxx:263
 AliEventplane.cxx:264
 AliEventplane.cxx:265
 AliEventplane.cxx:266
 AliEventplane.cxx:267
 AliEventplane.cxx:268
 AliEventplane.cxx:269
 AliEventplane.cxx:270
 AliEventplane.cxx:271
 AliEventplane.cxx:272
 AliEventplane.cxx:273
 AliEventplane.cxx:274
 AliEventplane.cxx:275
 AliEventplane.cxx:276
 AliEventplane.cxx:277
 AliEventplane.cxx:278
 AliEventplane.cxx:279
 AliEventplane.cxx:280
 AliEventplane.cxx:281
 AliEventplane.cxx:282
 AliEventplane.cxx:283
 AliEventplane.cxx:284
 AliEventplane.cxx:285
 AliEventplane.cxx:286
 AliEventplane.cxx:287
 AliEventplane.cxx:288
 AliEventplane.cxx:289
 AliEventplane.cxx:290
 AliEventplane.cxx:291
 AliEventplane.cxx:292
 AliEventplane.cxx:293
 AliEventplane.cxx:294
 AliEventplane.cxx:295
 AliEventplane.cxx:296
 AliEventplane.cxx:297
 AliEventplane.cxx:298
 AliEventplane.cxx:299
 AliEventplane.cxx:300
 AliEventplane.cxx:301
 AliEventplane.cxx:302
 AliEventplane.cxx:303
 AliEventplane.cxx:304
 AliEventplane.cxx:305
 AliEventplane.cxx:306
 AliEventplane.cxx:307
 AliEventplane.cxx:308
 AliEventplane.cxx:309
 AliEventplane.cxx:310
 AliEventplane.cxx:311
 AliEventplane.cxx:312
 AliEventplane.cxx:313
 AliEventplane.cxx:314
 AliEventplane.cxx:315
 AliEventplane.cxx:316
 AliEventplane.cxx:317
 AliEventplane.cxx:318
 AliEventplane.cxx:319
 AliEventplane.cxx:320
 AliEventplane.cxx:321
 AliEventplane.cxx:322
 AliEventplane.cxx:323
 AliEventplane.cxx:324
 AliEventplane.cxx:325
 AliEventplane.cxx:326
 AliEventplane.cxx:327
 AliEventplane.cxx:328
 AliEventplane.cxx:329
 AliEventplane.cxx:330
 AliEventplane.cxx:331
 AliEventplane.cxx:332
 AliEventplane.cxx:333
 AliEventplane.cxx:334
 AliEventplane.cxx:335
 AliEventplane.cxx:336
 AliEventplane.cxx:337
 AliEventplane.cxx:338
 AliEventplane.cxx:339
 AliEventplane.cxx:340
 AliEventplane.cxx:341
 AliEventplane.cxx:342
 AliEventplane.cxx:343
 AliEventplane.cxx:344
 AliEventplane.cxx:345
 AliEventplane.cxx:346
 AliEventplane.cxx:347
 AliEventplane.cxx:348
 AliEventplane.cxx:349
 AliEventplane.cxx:350
 AliEventplane.cxx:351
 AliEventplane.cxx:352
 AliEventplane.cxx:353
 AliEventplane.cxx:354
 AliEventplane.cxx:355
 AliEventplane.cxx:356
 AliEventplane.cxx:357
 AliEventplane.cxx:358
 AliEventplane.cxx:359
 AliEventplane.cxx:360
 AliEventplane.cxx:361
 AliEventplane.cxx:362
 AliEventplane.cxx:363
 AliEventplane.cxx:364
 AliEventplane.cxx:365
 AliEventplane.cxx:366
 AliEventplane.cxx:367
 AliEventplane.cxx:368
 AliEventplane.cxx:369
 AliEventplane.cxx:370
 AliEventplane.cxx:371
 AliEventplane.cxx:372
 AliEventplane.cxx:373
 AliEventplane.cxx:374
 AliEventplane.cxx:375
 AliEventplane.cxx:376
 AliEventplane.cxx:377
 AliEventplane.cxx:378
 AliEventplane.cxx:379
 AliEventplane.cxx:380
 AliEventplane.cxx:381
 AliEventplane.cxx:382
 AliEventplane.cxx:383
 AliEventplane.cxx:384
 AliEventplane.cxx:385
 AliEventplane.cxx:386
 AliEventplane.cxx:387
 AliEventplane.cxx:388
 AliEventplane.cxx:389
 AliEventplane.cxx:390
 AliEventplane.cxx:391
 AliEventplane.cxx:392
 AliEventplane.cxx:393
 AliEventplane.cxx:394
 AliEventplane.cxx:395
 AliEventplane.cxx:396
 AliEventplane.cxx:397
 AliEventplane.cxx:398
 AliEventplane.cxx:399
 AliEventplane.cxx:400
 AliEventplane.cxx:401
 AliEventplane.cxx:402
 AliEventplane.cxx:403
 AliEventplane.cxx:404
 AliEventplane.cxx:405
 AliEventplane.cxx:406
 AliEventplane.cxx:407
 AliEventplane.cxx:408
 AliEventplane.cxx:409
 AliEventplane.cxx:410
 AliEventplane.cxx:411
 AliEventplane.cxx:412
 AliEventplane.cxx:413
 AliEventplane.cxx:414
 AliEventplane.cxx:415
 AliEventplane.cxx:416
 AliEventplane.cxx:417
 AliEventplane.cxx:418
 AliEventplane.cxx:419
 AliEventplane.cxx:420
 AliEventplane.cxx:421
 AliEventplane.cxx:422
 AliEventplane.cxx:423
 AliEventplane.cxx:424
 AliEventplane.cxx:425
 AliEventplane.cxx:426
 AliEventplane.cxx:427
 AliEventplane.cxx:428
 AliEventplane.cxx:429
 AliEventplane.cxx:430
 AliEventplane.cxx:431
 AliEventplane.cxx:432
 AliEventplane.cxx:433
 AliEventplane.cxx:434
 AliEventplane.cxx:435
 AliEventplane.cxx:436
 AliEventplane.cxx:437
 AliEventplane.cxx:438
 AliEventplane.cxx:439
 AliEventplane.cxx:440
 AliEventplane.cxx:441
 AliEventplane.cxx:442
 AliEventplane.cxx:443
 AliEventplane.cxx:444
 AliEventplane.cxx:445
 AliEventplane.cxx:446
 AliEventplane.cxx:447
 AliEventplane.cxx:448
 AliEventplane.cxx:449
 AliEventplane.cxx:450
 AliEventplane.cxx:451
 AliEventplane.cxx:452
 AliEventplane.cxx:453
 AliEventplane.cxx:454
 AliEventplane.cxx:455
 AliEventplane.cxx:456
 AliEventplane.cxx:457
 AliEventplane.cxx:458
 AliEventplane.cxx:459
 AliEventplane.cxx:460
 AliEventplane.cxx:461
 AliEventplane.cxx:462
 AliEventplane.cxx:463
 AliEventplane.cxx:464
 AliEventplane.cxx:465
 AliEventplane.cxx:466
 AliEventplane.cxx:467
 AliEventplane.cxx:468
 AliEventplane.cxx:469
 AliEventplane.cxx:470
 AliEventplane.cxx:471
 AliEventplane.cxx:472
 AliEventplane.cxx:473
 AliEventplane.cxx:474
 AliEventplane.cxx:475
 AliEventplane.cxx:476
 AliEventplane.cxx:477
 AliEventplane.cxx:478
 AliEventplane.cxx:479
 AliEventplane.cxx:480
 AliEventplane.cxx:481
 AliEventplane.cxx:482
 AliEventplane.cxx:483
 AliEventplane.cxx:484
 AliEventplane.cxx:485
 AliEventplane.cxx:486
 AliEventplane.cxx:487
 AliEventplane.cxx:488
 AliEventplane.cxx:489
 AliEventplane.cxx:490
 AliEventplane.cxx:491
 AliEventplane.cxx:492
 AliEventplane.cxx:493
 AliEventplane.cxx:494
 AliEventplane.cxx:495
 AliEventplane.cxx:496
 AliEventplane.cxx:497
 AliEventplane.cxx:498
 AliEventplane.cxx:499
 AliEventplane.cxx:500
 AliEventplane.cxx:501
 AliEventplane.cxx:502
 AliEventplane.cxx:503
 AliEventplane.cxx:504
 AliEventplane.cxx:505
 AliEventplane.cxx:506
 AliEventplane.cxx:507
 AliEventplane.cxx:508
 AliEventplane.cxx:509