AliUnicorAnalGlobal: histogram cemu added
authormisko <misko@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 21 Mar 2010 17:39:33 +0000 (17:39 +0000)
committermisko <misko@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 21 Mar 2010 17:39:33 +0000 (17:39 +0000)
AliUnicorAnalCorrel:    modified binning, added histogram bimo, pair frame.
AliUnicorEventAliceESD: event, track, and pair cuts updated; Nch definition.
AliAnalysisTaskUnicor:  pi+pi- added

PWG2/UNICOR/AliAnalysisTaskUnicor.cxx
PWG2/UNICOR/AliUnicorAnalCorrel.cxx
PWG2/UNICOR/AliUnicorAnalGlobal.cxx
PWG2/UNICOR/AliUnicorEvent.h
PWG2/UNICOR/AliUnicorEventAliceESD.cxx
PWG2/UNICOR/AliUnicorEventAliceESD.h
PWG2/UNICOR/AliUnicorHN.cxx
PWG2/UNICOR/AliUnicorHN.h

index 942e99b..cbc3c60 100644 (file)
@@ -51,6 +51,7 @@ void AliAnalysisTaskUnicor::UserCreateOutputObjects()
   fOutputList->Add(new AliUnicorAnalSingle("pip",fEv0->Etamin(),fEv0->Etamax(), 211));
   fOutputList->Add(new AliUnicorAnalCorrel("cnn",fEv0->Etamin(),fEv0->Etamax(),-211,-211));
   fOutputList->Add(new AliUnicorAnalCorrel("cpp",fEv0->Etamin(),fEv0->Etamax(), 211, 211));
+  fOutputList->Add(new AliUnicorAnalCorrel("cnp",fEv0->Etamin(),fEv0->Etamax(),-211, 211));
   fOutputList->Add(new AliUnicorAnalPtfluc("ptf",0,0));
   fOutputList->Add(new AliUnicorAnalHighpt("hpt",fEv0->Etamin(),fEv0->Etamax(),0,0));
 }
@@ -69,8 +70,10 @@ void AliAnalysisTaskUnicor::UserExec(Option_t */*option*/)
   ((AliUnicorAnalCorrel *) fOutputList->At(4))->Process(2,fEv0,fEv0,TMath::DegToRad()*180);
   ((AliUnicorAnalCorrel *) fOutputList->At(5))->Process(0,fEv0,fEv0,0);
   ((AliUnicorAnalCorrel *) fOutputList->At(5))->Process(2,fEv0,fEv0,TMath::DegToRad()*180);
-  ((AliUnicorAnalPtfluc *) fOutputList->At(6))->Process(0,fEv0,fEv0);
-  ((AliUnicorAnalHighpt *) fOutputList->At(7))->Process(fEv0,fEv0);
+  ((AliUnicorAnalCorrel *) fOutputList->At(6))->Process(0,fEv0,fEv0,0);
+  ((AliUnicorAnalCorrel *) fOutputList->At(6))->Process(2,fEv0,fEv0,TMath::DegToRad()*180);
+  ((AliUnicorAnalPtfluc *) fOutputList->At(7))->Process(0,fEv0,fEv0);
+  ((AliUnicorAnalHighpt *) fOutputList->At(8))->Process(fEv0,fEv0);
   PostData(1, fOutputList);
 } 
 //=============================================================================
index 595f526..99534bc 100644 (file)
@@ -47,7 +47,10 @@ AliUnicorAnalCorrel::AliUnicorAnalCorrel(Char_t *nam, Double_t emi, Double_t ema
 
   // correlation function
 
-  double ptbins[]={0,0.1,0.2,0.3,0.4,0.5,0.7,1.0};
+  //int npt = 7; double ptbins[]={0,0.1,0.2,0.3,0.4,0.5,0.7,1.0};
+  //int npt = 6; double ptbins[]={0,0.1,0.25,0.35,0.55,1.0,2.0}; // like Adam, except last bin split
+  int npt = 7; double ptbins[]={0,0.1,0.25,0.40,0.55,0.7,1.0,2.0}; // like Adam in Mar-2010, + first+last
+
   double qbins[100];
   for (int i=0;i<20;i++) qbins[i]=i*0.005;
   for (int i=0;i<45;i++) qbins[20+i]=0.1+i*0.02;
@@ -55,23 +58,32 @@ AliUnicorAnalCorrel::AliUnicorAnalCorrel(Char_t *nam, Double_t emi, Double_t ema
   TAxis *ax[8];
   ax[0] = new TAxis(3,-0.5,2.5);ax[0]->SetTitle("trumixrot");
   ax[1] = new TAxis(5,0,1.0);   ax[1]->SetTitle("centrality");
-  ax[2] = new TAxis(3,emi,ema); ax[2]->SetTitle("pair y");
-  //ax[3] = new TAxis(8,-pi,pi);  ax[3]->SetTitle("pair phi"); // wrt event plane
-  ax[3] = new TAxis(1,-pi,pi);  ax[3]->SetTitle("pair phi"); // wrt event plane
-  ax[4] = new TAxis(7,ptbins);  ax[4]->SetTitle("(pair pt)/2 (GeV)");
+  ax[2] = new TAxis(3,emi,ema); ax[2]->SetTitle("y");          // pair y
+  //  ax[3] = new TAxis(8,-pi,pi);  ax[3]->SetTitle("phi");      // wrt event plane
+  ax[3] = new TAxis(1,-pi,pi);  ax[3]->SetTitle("phi");        // wrt event plane
+  ax[4] = new TAxis(npt,ptbins);ax[4]->SetTitle("kt (GeV/c)"); // pair pt/2
   ax[5] = new TAxis(8,0,pi);    ax[5]->SetTitle("q-theta");
   ax[6] = new TAxis(16,-pi,pi); ax[6]->SetTitle("q-phi");
   //ax[7] = new TAxis(64,qbins);  ax[7]->SetTitle("q (GeV/c)");
-  ax[7] = new TAxis(100,0,2.0); ax[7]->SetTitle("q (GeV/c)");
+  ax[7] = new TAxis(150,0,3.0); ax[7]->SetTitle("q (GeV/c)");
   AliUnicorHN *pair = new AliUnicorHN("pair",8,ax);
   for (int i=0; i<8; i++) delete ax[i];
   fHistos.Add(pair);
 
+  // correlation function bin monitor (needed to get <kt> etc.)
+
+  ax[0] = new TAxis(5,0,1);      ax[0]->SetTitle("centrality");
+  ax[1] = new TAxis(30,emi,ema); ax[1]->SetTitle("y");           // pair y
+  ax[2] = new TAxis(100,0,2);    ax[2]->SetTitle("kt (GeV/c)");  // pair pt/2
+  AliUnicorHN *bimo = new AliUnicorHN("bimo",3,ax);
+  for (int i=0; i<3; i++) delete ax[i];
+  fHistos.Add(bimo);
+
   // two-track resolution monitoring histogram
 
   ax[0] = new TAxis(3,-0.5,2.5);    ax[0]->SetTitle("trumixrot");
   ax[1] = new TAxis(2,-0.5,1.5);    ax[1]->SetTitle("cut applied");
-  ax[2] = new TAxis(7,ptbins);      ax[2]->SetTitle("(pair pt)/2 (GeV)");
+  ax[2] = new TAxis(npt,ptbins);    ax[2]->SetTitle("(pair pt)/2 (GeV)");
   ax[3] = new TAxis(80,-0.02,0.02); ax[3]->SetTitle("dtheta");
   ax[4] = new TAxis(80,-0.04,0.04); ax[4]->SetTitle("dphi");
   AliUnicorHN *twot = new AliUnicorHN("twot",5,ax);
@@ -92,7 +104,8 @@ void AliUnicorAnalCorrel::Process(Int_t tmr, const AliUnicorEvent * const ev0, c
 
   static TRandom2 ran;
   AliUnicorHN *pair = (AliUnicorHN*) fHistos.At(0);
-  AliUnicorHN *twot = (AliUnicorHN*) fHistos.At(1);
+  AliUnicorHN *bimo = (AliUnicorHN*) fHistos.At(1);
+  AliUnicorHN *twot = (AliUnicorHN*) fHistos.At(2);
 
   // mixing-and-rotating-proof centrality and reaction plane angle
   // (but not rotation-proof for rotation angles much different from 0 and 180)
@@ -122,10 +135,11 @@ void AliUnicorAnalCorrel::Process(Int_t tmr, const AliUnicorEvent * const ev0, c
       twot->Fill((double) tmr, 1.0, fPa.Pt()/2.0, fPa.DTheta(), fPa.DPhi(),1.0);
       fPa.CalcLAB();
       fPa.CalcPairCM();
+      //fPa.CalcLcmsCM();
       if (fPa.QCM()==0) return; // should not be too frequent
       double phi = TVector2::Phi_mpi_pi(fPa.Phi()-rpphi);
       double weigth = 1.0;
-      //if (tmr==0) weigth = 1.0+0.3*exp(-fPa.QCM()*fPa.QCM()*1*1/0.197/0.197); 
+      //      if (tmr==0) weigth = 1.0+0.5*exp(-fPa.QCM()*fPa.QCM()*1*1/0.197/0.197); 
       pair->Fill((double) tmr,           // 0 for tru, 1 for mix, 2 for rot
                 cent,                   // centrality
                 fPa.Rapidity(),         // pair rapidity
@@ -135,6 +149,9 @@ void AliUnicorAnalCorrel::Process(Int_t tmr, const AliUnicorEvent * const ev0, c
                 fPa.QCMPhiOut(),        // azimuthal angle of Q w.r.t. out
                 fPa.QCM(),              // |p2-p1| in c.m.s.
                 weigth);                // weigth
+      if (tmr) continue;
+      if (fPa.QCM()>0.2) continue;
+      bimo->Fill(cent, fPa.Rapidity(), fPa.Pt()/2.0, 1.0);
     }
   }
 }
index 4eb13b1..782d98e 100644 (file)
@@ -40,13 +40,17 @@ AliUnicorAnalGlobal::AliUnicorAnalGlobal(Char_t *nam) : AliUnicorAnal(nam)
   mult->SetXTitle("multiplicity");
   TH1D *cent = new TH1D("cent","cent",100,0,1);
   cent->SetXTitle("centrality");
-  TH2D *dire = new TH2D("dire","dire",100,-40,40,100,-40,40);
+  TH2D *cemu = new TH2D("cemu","cemu",100,0,1,5000,-0.5,4999.5);
+  cemu->SetXTitle("centrality");
+  cemu->SetYTitle("Nch");
+  TH2D *dire = new TH2D("dire","dire",160,-40,40,160,-40,40);
   dire->SetXTitle("Qx (GeV)");
   dire->SetYTitle("Qy (GeV)");
   TH1D *zver = new TH1D("zver","zver",120,-1.2,1.2);
   zver->SetXTitle("normalized z-vertex");
   fHistos.Add(mult);
   fHistos.Add(cent);
+  fHistos.Add(cemu);
   fHistos.Add(dire);
   fHistos.Add(zver);
   gROOT->cd();
@@ -58,11 +62,13 @@ void AliUnicorAnalGlobal::Process(AliUnicorEvent *ev) const
 
   TH1D *mult = (TH1D*) fHistos.At(0);
   TH1D *cent = (TH1D*) fHistos.At(1);
-  TH2D *dire = (TH2D*) fHistos.At(2);
-  TH1D *zver = (TH1D*) fHistos.At(3);
+  TH2D *cemu = (TH2D*) fHistos.At(2);
+  TH2D *dire = (TH2D*) fHistos.At(3);
+  TH1D *zver = (TH1D*) fHistos.At(4);
 
-  mult->Fill(ev->NParticles(),1.0);
+  mult->Fill(ev->NGoodParticles(),1.0);
   cent->Fill(ev->Centrality(),1.0);
+  cemu->Fill(ev->Centrality(),ev->NGoodParticles());
   Double_t qx,qy;
   ev->RP(qx,qy);
   dire->Fill(qx,qy,1.0);
index ba83681..b62025c 100644 (file)
@@ -25,14 +25,15 @@ class AliUnicorEvent : public TObject {
   // interface part
 
   virtual void        AttachTree(TTree *tr) = 0;
-  virtual Double_t    Etamin() const = 0;     // experiment's acceptance
+  virtual Double_t    Etamin() const = 0;         // experiment's acceptance
   virtual Double_t    Etamax() const = 0;
   virtual Bool_t      Good() const = 0;  
-  virtual Double_t    Centrality() const = 0; // centrality (0,1); 0 is most central
+  virtual Double_t    Centrality() const = 0;     // centrality (0,1); 0 is most central
   virtual void        RP(Double_t &qx, Double_t &qy) const = 0;
   virtual Double_t    RPphi() const = 0;
-  virtual Double_t    Zver() const = 0;       // z-vertex (-1,1)
-  virtual Int_t       NParticles() const = 0;
+  virtual Double_t    Zver() const = 0;           // z-vertex (-1,1)
+  virtual Int_t       NParticles() const = 0;     // number of tracks
+  virtual Int_t       NGoodParticles() const = 0; // number of good particles
 
   virtual Bool_t      ParticleGood(Int_t i, Int_t pidi) const = 0;
   virtual Double_t    ParticleP(Int_t i) const = 0;
index a29ee81..6f0d029 100644 (file)
@@ -44,8 +44,11 @@ Bool_t AliUnicorEventAliceESD::Good() const
 {
   // event cuts
 
+  const AliESDVertex *vtx = fESD->GetPrimaryVertexSPD();
+  if (!vtx->GetStatus()) return kFALSE;
+  if (vtx->GetZRes()>0.1) return kFALSE; // 1.5 used for TPC 
+  if (vtx->IsFromVertexerZ() && vtx->GetDispersion()>0.2) return kFALSE;
   if (fabs(Zver())>1) return kFALSE;
-  if (fESD->GetPrimaryVertexTPC()->GetZRes()>1.5) return kFALSE;
   return kTRUE;
 }
 //=============================================================================
@@ -58,21 +61,30 @@ Bool_t AliUnicorEventAliceESD::ParticleGood(Int_t i, Int_t pidi) const
 
   AliESDtrack *track = fESD->GetTrack(i);
   if (!track->IsOn(AliESDtrack::kTPCrefit)) return 0;        // TPC refit
+  if (!track->IsOn(AliESDtrack::kITSrefit)) return 0;        // ITS refit
   if (track->GetTPCNcls() < 100) return 0;                   // number of TPC clusters
-  const AliExternalTrackParam *tp = track->GetTPCInnerParam();
-  if (!tp) return 0;           
+  if (track->GetKinkIndex(0) > 0) return 0;                  // no kink daughters
+  const AliExternalTrackParam *tp = GetTrackParam(i);
+  if (!tp) return 0;                                         // track param
+  if (fabs(tp->Eta())>0.8) return 0;                         // fiducial pseudorapidity
+
+  //  double pi9 = TMath::Pi()/9.0;
+  //  double eta = tp->Eta();
+  //  double phi = ParticlePhi(i);
+  //  if (eta>0 && phi>-8*pi9 && phi<-7*pi9) return 0; // A10
+  //  if (eta>0 && phi> 1*pi9 && phi< 2*pi9) return 0; // A01
 
   Float_t r,z;
   track->GetImpactParametersTPC(r,z);
-  if (fabs(z)>1) return 0;                            // impact parameter in z
-  if (fabs(r)>1) return 0;                            // impact parameter in xy
+  if (fabs(z)>3.2) return 0;                          // impact parameter in z
+  if (fabs(r)>2.4) return 0;                          // impact parameter in xy
 
   //TBits shared = track->GetTPCSharedMap();
-  //if (shared.CountBits()) return 0;                   // no shared clusters; pragmatic but dangerous
+  //if (shared.CountBits()) return 0;                 // no shared clusters; pragmatic but dangerous
 
-  // pid
+  if (pidi==0) return 1; 
 
-  if (pidi==0) return 1;
+  // pid
 
   if (!track->IsOn(AliESDtrack::kTPCpid)) return 0;
   Double_t p[AliPID::kSPECIES];
@@ -95,10 +107,10 @@ Bool_t AliUnicorEventAliceESD::PairGood(Double_t /*p0*/, Double_t the0, Double_t
 
   // two-track separation cut
 
+  return 1;
   double dthe = the1-the0;
   double dphi = TVector2::Phi_mpi_pi(phi1-phi0);
   //  double dpt = p1*sin(the1) - p0*sin(the0);
-  //  return (fabs(dthe)>0.005 || fabs(dphi)>0.030);
   return (fabs(dthe)>0.010 || fabs(dphi)>0.060);
   //return (dpt*dphi<0);
 }
index 883c40f..65b0d0e 100644 (file)
@@ -10,6 +10,8 @@
 #include <cmath>
 #include "TVector2.h"
 #include "AliESDEvent.h"
+#include "AliMultiplicity.h"
+#include "AliExternalTrackParam.h"
 #include "AliUnicorEvent.h"
 
 //=============================================================================
@@ -24,22 +26,27 @@ class AliUnicorEventAliceESD : public AliUnicorEvent {
   Double_t    Etamax() const {return  0.75;}
   void        AttachTree(TTree *tr) {fESD->ReadFromTree(tr);}
   Bool_t      Good() const;
-  Double_t    Centrality() const {return 0.9999*exp(-NParticles()/20.0);} // OK for pp
+  Double_t    Centrality() const {return 0.9999*exp(-NGoodParticles()/7.0);} // OK for pp
   void        RP(Double_t &qx, Double_t &qy) const {AliUnicorEvent::RP(qx,qy,2);}
   Double_t    RPphi() const {Double_t qx,qy; RP(qx,qy); return atan2(qy,qx);}
-  Double_t    Zver() const {return fESD->GetPrimaryVertexTPC()->GetZv()/10.0;}
+  Double_t    Zver() const {return fESD->GetPrimaryVertexSPD()->GetZv()/10.0;}
   Int_t       NParticles() const {return fESD->GetNumberOfTracks();}
+  Int_t       NGoodParticles() const {int n=0; for (int i=0; i<NParticles(); i++) if (ParticleGood(i)) n++; return n;}
+  //  Int_t       NGoodParticles() const {int n=0; for (int i=0; i<fESD->GetMultiplicity()->GetNumberOfTracklets(); i++) if (fabs(fESD->GetMultiplicity()->GetEta(i))<0.8) n++; return n;}
 
   Bool_t      ParticleGood(Int_t i, Int_t pidi=0) const;
-  Double_t    ParticleP(Int_t i)     const {return fESD->GetTrack(i)->GetTPCInnerParam()->P();}
-  Double_t    ParticleTheta(Int_t i) const {return fESD->GetTrack(i)->GetTPCInnerParam()->Theta();}
-  Double_t    ParticlePhi(Int_t i)   const {return TVector2::Phi_mpi_pi(fESD->GetTrack(i)->GetTPCInnerParam()->Phi());}
+  Double_t    ParticleP(Int_t i)     const {return GetTrackParam(i)->P();}
+  Double_t    ParticleTheta(Int_t i) const {return GetTrackParam(i)->Theta();}
+  Double_t    ParticlePhi(Int_t i)   const {return TVector2::Phi_mpi_pi(GetTrackParam(i)->Phi());}
   Double_t    ParticleDedx(Int_t i)  const {return fESD->GetTrack(i)->GetTPCsignal()/50.0;}
   Bool_t      PairGood(Double_t p0, Double_t the0, Double_t phi0, 
                       Double_t p1, Double_t the1, Double_t phi1) const;
-  // alternative: GetConstrainedParam, GetInnerParam, GetTPCInnerParam 
   void        SetESD(AliESDEvent * const esd) {fESD = esd;}
   AliESDEvent *GetESD() const {return fESD;}
+  //const AliExternalTrackParam *GetTrackParam(Int_t i) const {return fESD->GetTrack(i);}
+  //const AliExternalTrackParam *GetTrackParam(Int_t i) const {return fESD->GetTrack(i)->GetConstrainedParam();}
+  const AliExternalTrackParam *GetTrackParam(Int_t i) const {return fESD->GetTrack(i)->GetInnerParam();} // not at vtx!
+  //const AliExternalTrackParam *GetTrackParam(Int_t i) const {return fESD->GetTrack(i)->GetTPCInnerParam();}
 
  protected:
   AliESDEvent *fESD;   //! pointer to the actual source of data
index 10c69fa..afc35c3 100644 (file)
@@ -57,34 +57,39 @@ AliUnicorHN::AliUnicorHN(Char_t *nam, Int_t ndim, TAxis **ax)
   printf("   %d-dimensional histogram %s with %d bins created\n",fNdim,nam,GetNbinsX());
 }
 //=============================================================================
-AliUnicorHN::AliUnicorHN(Char_t *filnam, Char_t *nam) 
-  : TH1D(*((TH1D*) TFile::Open(filnam,"read")->GetDirectory(nam)->Get("histo"))), 
-    fNdim(0) 
+AliUnicorHN::AliUnicorHN(Char_t *filnam, Char_t *nam) : 
+  TH1D(*(TFile::Open(filnam,"read")?
+        TFile::Open(filnam,"read")->GetDirectory(nam)?
+        (TH1D*) TFile::Open(filnam,"read")->GetDirectory(nam)->Get("histo"):new TH1D():new TH1D()
+        )), 
+  fNdim(0) 
 {
   // Constructor for reading from file.
 
   TFile *f = TFile::Open(filnam,"read");
-  f->cd(nam);
-  TAxis *ax[fgkMaxNdim];
-  for (fNdim=0; fNdim<fgkMaxNdim; fNdim++) {
-    ax[fNdim] = (TAxis *) gDirectory->Get(Form("axis%d",fNdim));
-    if (ax[fNdim]) ax[fNdim]->Copy(fAxis[fNdim]); 
-    else break;
-  }
-  f->Close();
-
-  fMbins[fNdim-1] = 1;
-  for (int i=0; i<fNdim; i++) fNbins[i] = fAxis[i].GetNbins();
-  for (int i=fNdim-1; i>0; i--) fMbins[i-1] = fMbins[i]*fNbins[i];
+  if (f) if (f->cd(nam)) {
+    TAxis *ax[fgkMaxNdim];
+    for (fNdim=0; fNdim<fgkMaxNdim; fNdim++) {
+      ax[fNdim] = (TAxis *) gDirectory->Get(Form("axis%d",fNdim));
+      if (ax[fNdim]) ax[fNdim]->Copy(fAxis[fNdim]); 
+      else break;
+    }
+    f->Close();
+
+    fMbins[fNdim-1] = 1;
+    for (int i=0; i<fNdim; i++) fNbins[i] = fAxis[i].GetNbins();
+    for (int i=fNdim-1; i>0; i--) fMbins[i-1] = fMbins[i]*fNbins[i];
+    
+    if (GetNbinsX()!=Albins(fNdim,ax)) {
+      printf("number of bins of histo %d differs from product of nbins of axes %d\n",
+            GetNbinsX(),Albins(fNdim,ax));
+      printf("bombing\n");
+      exit(-1);
+    }
 
-  if (GetNbinsX()!=Albins(fNdim,ax)) {
-    printf("number of bins of histo %d differs from product of nbins of axes %d\n",
-          GetNbinsX(),Albins(fNdim,ax));
-    printf("bombing\n");
-    exit(-1);
+    printf("%d-dimensional histogram %s with %d bins read from file %s\n",
+          fNdim,nam,GetNbinsX(),filnam);
   }
-  printf("%d-dimensional histogram %s with %d bins read from file %s\n",
-        fNdim,nam,GetNbinsX(),filnam);
 }
 //=============================================================================
 Int_t AliUnicorHN::Albins(Int_t n, TAxis **ax) 
@@ -188,11 +193,11 @@ AliUnicorHN *AliUnicorHN::ProjectAlong(char *nam, Int_t dim, Int_t first, Int_t
 {
   // Reduce dimension dim by summing up its bins between first and last. 
   // Use root convention: bin=1 is the first bin, bin=nbins is the last. 
+  // last=0 means till the last bin
   // Return the resulting fNdim-1 dimensional histogram. 
 
   if (dim<0 || dim>fNdim-1) return 0;
-  if (first<0) first = 1;
-  if (last<0) last = fNbins[dim];
+  if (last<=0) last = fNbins[dim];
 
   // create new (reduced) histogram
 
@@ -270,6 +275,7 @@ TH1D *AliUnicorHN::ProjectOn(char *nam, Int_t dim, const Int_t * const first, co
 
   TH1D *his;
   char *name = strlen(nam)? nam : Form("%s_proj%d",GetName(),dim);
+  //  if (gDirectory->Get(name)) gDirectory->Get(name)->Delete(); // for some reason leads to troubles
   if (fAxis[dim].IsVariableBinSize()) 
     his = new TH1D(name,name,fNbins[dim],fAxis[dim].GetXbins()->GetArray());
   else 
index 9839e00..c471630 100644 (file)
@@ -38,7 +38,7 @@ class AliUnicorHN : public TH1D {
   Int_t Write(const char *, Int_t, Int_t) const {return Write();} 
 
   // project along (integrate over) one axis
-  AliUnicorHN  *ProjectAlong(char *nam, Int_t dim, Int_t first=-1, Int_t last=-1);
+  AliUnicorHN  *ProjectAlong(char *nam, Int_t dim, Int_t first=0, Int_t last=0);
   // project on 1-dim histogram
   TH1D *ProjectOn(char *nam, Int_t dim, const Int_t * const first=0, const Int_t * const last=0) const;
   // project on 1-dim histogram