/************************************************************************* * 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 2008 //============================================================================= // pt-fluctuations analyzer // Loop over pairs and fill pair histograms. The first particle is always // taken from ev0 and the second from ev1 so for ev0=ev1 one is getting true // pairs, otherwise mixed ones. //============================================================================= #include #include #include #include #include "AliUnicorEvent.h" #include "AliUnicorHN.h" #include "AliUnicorAnalPtfluc.h" ClassImp(AliUnicorAnalPtfluc) //============================================================================= AliUnicorAnalPtfluc::AliUnicorAnalPtfluc(Char_t *nam, Int_t pid0, Int_t pid1) : AliUnicorAnal(nam), fPid0(pid0), fPid1(pid1) { // constructor TAxis *ax[5]; ax[0] = new TAxis(2,-0.5,1.5); ax[0]->SetTitle("trumix"); ax[1] = new TAxis(9,0,0.9); ax[1]->SetTitle("centrality"); ax[2] = new TAxis(6,-0.5,5.5); ax[2]->SetTitle("n-pt0-pt1-pt00-pt11-pt01"); ax[3] = new TAxis(48,-180,180); ax[3]->SetTitle("dphi (deg)"); ax[4] = new TAxis(40,-2,2); ax[4]->SetTitle("deta"); AliUnicorHN *pair = new AliUnicorHN("pair",5,ax); for (int i=0; i<5; i++) delete ax[i]; fHistos.Add(pair); gROOT->cd(); printf("%s object named %s created\n",ClassName(),GetName()); } //============================================================================= void AliUnicorAnalPtfluc::Process(Int_t tmr, AliUnicorEvent *ev0, AliUnicorEvent *ev1) { // process pairs from one or two (if mixing) events double ptmin=0.1; // GeV double ptmax=1.5; // GeV double etamin=-9; double etamax=9; // mixing-and-rotating-proof centrality double cent = (ev0->Centrality()+ev1->Centrality())/2.0; // loop over pairs AliUnicorHN *pair = (AliUnicorHN*) fHistos.At(0); static TRandom2 ran; for (int i=0; iNParticles(); i++) { if (!ev0->ParticleGood(i,fPid0)) continue; double eta0 = ev0->ParticleEta(i); double phi0 = ev0->ParticlePhi(i); double pt0 = ev0->ParticlePt(i); if (eta0 < etamin) continue; if (eta0 > etamax) continue; if (pt0 < ptmin) continue; if (pt0 > ptmax) continue; for (int j=0; jNParticles(); j++) { if (ev0==ev1 && j==i) continue; if (ev0==ev1 && jParticleGood(j,fPid1)) continue; double eta1 = ev1->ParticleEta(j); double phi1 = ev1->ParticlePhi(j); double pt1 = ev1->ParticlePt(j); if (eta1 < etamin) continue; if (eta1 > etamax) continue; if (pt1 < ptmin) continue; if (pt1 > ptmax) continue; double deta = eta1-eta0; double dphi = phi1-phi0; // randomize order if (ran.Rndm()<0.5) { double buf = pt0; pt0 = pt1; pt1 = buf; deta = -deta; dphi = -dphi; } dphi = TVector2::Phi_mpi_pi(dphi); dphi*=TMath::RadToDeg(); pair->Fill(tmr, cent, 0, dphi, deta, 1); // number of pairs pair->Fill(tmr, cent, 1, dphi, deta, pt0); pair->Fill(tmr, cent, 2, dphi, deta, pt1); pair->Fill(tmr, cent, 3, dphi, deta, pt0*pt0); pair->Fill(tmr, cent, 4, dphi, deta, pt1*pt1); pair->Fill(tmr, cent, 5, dphi, deta, pt0*pt1); } } } //=============================================================================