ROOT logo
/************************************************************************* 
* Copyright(c) 1998-2048, 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.                  * 
**************************************************************************/

// Author: Dariusz Miskowiec <mailto:d.miskowiec@gsi.de> 2007

//=============================================================================
// single particle analyzer
// Loop over tracks of one event and, for tracks that fulfill the quality 
// and pid cuts, fill single track histograms. 
//=============================================================================

#include <cmath>
#include <TROOT.h>
#include <TMath.h>
#include <TAxis.h>
#include <TParticlePDG.h>
#include "AliUnicorHN.h"
#include "AliUnicorEvent.h"
#include "AliUnicorAnalSingle.h"

ClassImp(AliUnicorAnalSingle)

//=============================================================================
AliUnicorAnalSingle::AliUnicorAnalSingle(const char *nam, Double_t emi, Double_t ema, Int_t pid) : 
  AliUnicorAnal(nam), fPid(pid), fMass(0.0) 
{
  // constructor
  // emi and ema define the rapidity range for histograms

  fPid = pid;
  TParticlePDG *part = AliUnicorAnal::fgPDG.GetParticle(fPid);
  fMass = part? part->Mass() : 0;

  double pi = TMath::Pi();
  TAxis *ax[10];
  ax[0] = new TAxis(30,-1,1);    ax[0]->SetTitle("vertex z");
  ax[1] = new TAxis(80,emi,ema); ax[1]->SetTitle("eta");
  ax[2] = new TAxis(90,-pi,pi);  ax[2]->SetTitle("phi");
  AliUnicorHN *zep = new AliUnicorHN("zep",3,ax);
  for (int i=0; i<3; i++) delete ax[i];

  ax[0] = new TAxis(20,0,1);     ax[0]->SetTitle("centrality");
  ax[1] = new TAxis(80,emi,ema); ax[1]->SetTitle("y");
  ax[2] = new TAxis(80,0,2);     ax[2]->SetTitle("pt (GeV)");
  AliUnicorHN *cyp = new AliUnicorHN("cyp",3,ax);
  for (int i=0; i<3; i++) delete ax[i];

  ax[0] = new TAxis(10,emi,ema); ax[0]->SetTitle("eta");
  ax[1] = new TAxis(150,0,3);    ax[1]->SetTitle("p (GeV)");
  ax[2] = new TAxis(150,0.5,3.5);ax[2]->SetTitle("sqrt(dedx (mips))");
  AliUnicorHN *epd = new AliUnicorHN("epd",3,ax);
  for (int i=0; i<3; i++) delete ax[i];

  fHistos.Add(zep);
  fHistos.Add(cyp);
  fHistos.Add(epd);
  gROOT->cd();
}
//=============================================================================
void AliUnicorAnalSingle::Process(AliUnicorEvent *ev) 
{
  // fill single particle histograms

  AliUnicorHN *zep = (AliUnicorHN*) fHistos.At(0);
  AliUnicorHN *cyp = (AliUnicorHN*) fHistos.At(1);
  AliUnicorHN *epd = (AliUnicorHN*) fHistos.At(2);
  for (int i=0; i<ev->NParticles(); i++) {
    if (!ev->ParticleGood(i,fPid)) continue;
    zep->Fill(ev->Zver(),ev->ParticleEta(i),ev->ParticlePhi(i),1.0);
    double y = fMass>0? ev->ParticleY(i,fMass) : ev->ParticleEta(i);
    cyp->Fill(ev->Centrality(),y,ev->ParticlePt(i),1.0);
    epd->Fill(ev->ParticleEta(i),ev->ParticleP(i),sqrt(ev->ParticleDedx(i)),1.0);
  }
}
//=============================================================================
 AliUnicorAnalSingle.cxx:1
 AliUnicorAnalSingle.cxx:2
 AliUnicorAnalSingle.cxx:3
 AliUnicorAnalSingle.cxx:4
 AliUnicorAnalSingle.cxx:5
 AliUnicorAnalSingle.cxx:6
 AliUnicorAnalSingle.cxx:7
 AliUnicorAnalSingle.cxx:8
 AliUnicorAnalSingle.cxx:9
 AliUnicorAnalSingle.cxx:10
 AliUnicorAnalSingle.cxx:11
 AliUnicorAnalSingle.cxx:12
 AliUnicorAnalSingle.cxx:13
 AliUnicorAnalSingle.cxx:14
 AliUnicorAnalSingle.cxx:15
 AliUnicorAnalSingle.cxx:16
 AliUnicorAnalSingle.cxx:17
 AliUnicorAnalSingle.cxx:18
 AliUnicorAnalSingle.cxx:19
 AliUnicorAnalSingle.cxx:20
 AliUnicorAnalSingle.cxx:21
 AliUnicorAnalSingle.cxx:22
 AliUnicorAnalSingle.cxx:23
 AliUnicorAnalSingle.cxx:24
 AliUnicorAnalSingle.cxx:25
 AliUnicorAnalSingle.cxx:26
 AliUnicorAnalSingle.cxx:27
 AliUnicorAnalSingle.cxx:28
 AliUnicorAnalSingle.cxx:29
 AliUnicorAnalSingle.cxx:30
 AliUnicorAnalSingle.cxx:31
 AliUnicorAnalSingle.cxx:32
 AliUnicorAnalSingle.cxx:33
 AliUnicorAnalSingle.cxx:34
 AliUnicorAnalSingle.cxx:35
 AliUnicorAnalSingle.cxx:36
 AliUnicorAnalSingle.cxx:37
 AliUnicorAnalSingle.cxx:38
 AliUnicorAnalSingle.cxx:39
 AliUnicorAnalSingle.cxx:40
 AliUnicorAnalSingle.cxx:41
 AliUnicorAnalSingle.cxx:42
 AliUnicorAnalSingle.cxx:43
 AliUnicorAnalSingle.cxx:44
 AliUnicorAnalSingle.cxx:45
 AliUnicorAnalSingle.cxx:46
 AliUnicorAnalSingle.cxx:47
 AliUnicorAnalSingle.cxx:48
 AliUnicorAnalSingle.cxx:49
 AliUnicorAnalSingle.cxx:50
 AliUnicorAnalSingle.cxx:51
 AliUnicorAnalSingle.cxx:52
 AliUnicorAnalSingle.cxx:53
 AliUnicorAnalSingle.cxx:54
 AliUnicorAnalSingle.cxx:55
 AliUnicorAnalSingle.cxx:56
 AliUnicorAnalSingle.cxx:57
 AliUnicorAnalSingle.cxx:58
 AliUnicorAnalSingle.cxx:59
 AliUnicorAnalSingle.cxx:60
 AliUnicorAnalSingle.cxx:61
 AliUnicorAnalSingle.cxx:62
 AliUnicorAnalSingle.cxx:63
 AliUnicorAnalSingle.cxx:64
 AliUnicorAnalSingle.cxx:65
 AliUnicorAnalSingle.cxx:66
 AliUnicorAnalSingle.cxx:67
 AliUnicorAnalSingle.cxx:68
 AliUnicorAnalSingle.cxx:69
 AliUnicorAnalSingle.cxx:70
 AliUnicorAnalSingle.cxx:71
 AliUnicorAnalSingle.cxx:72
 AliUnicorAnalSingle.cxx:73
 AliUnicorAnalSingle.cxx:74
 AliUnicorAnalSingle.cxx:75
 AliUnicorAnalSingle.cxx:76
 AliUnicorAnalSingle.cxx:77
 AliUnicorAnalSingle.cxx:78
 AliUnicorAnalSingle.cxx:79
 AliUnicorAnalSingle.cxx:80
 AliUnicorAnalSingle.cxx:81
 AliUnicorAnalSingle.cxx:82
 AliUnicorAnalSingle.cxx:83
 AliUnicorAnalSingle.cxx:84
 AliUnicorAnalSingle.cxx:85
 AliUnicorAnalSingle.cxx:86
 AliUnicorAnalSingle.cxx:87