-void SimulateEsd(AliESDEvent *pEsd)
-{
- TParticle part; TLorentzVector mom;
- for(Int_t iTrk=0;iTrk<100;iTrk++){//stack loop
- Printf("SimulateEsd: kProton %i",kProton);
- part.SetPdgCode(kProton);
- part.SetProductionVertex(0,0,0,0);
- Double_t eta= -0.2+gRandom->Rndm()*0.4; //rapidity is random [-0.2,+0.2]
- Double_t phi= gRandom->Rndm()*60.*TMath::DegToRad(); //phi is random [ 0 , 60 ] degrees
- mom.SetPtEtaPhiM(5,eta,phi,part.GetMass());
- part.SetMomentum(mom);
- AliESDtrack trk(&part);
- pEsd->AddTrack(&trk);
- }//stack loop
-}//EsdFromStack()
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-void SimulateHits(AliESDEvent *pEsd, TClonesArray *pHits)
-{//used by SimulateEvent to simulate hits out from provided ESD
- const Int_t kCerenkov=50000050;
- const Int_t kFeedback=50000051;
-
- AliHMPIDRecon rec;
- Float_t eMip=200e-9,ePho=7.5e-9;
- Int_t hc=0;
- for(Int_t iTrk=0;iTrk<pEsd->GetNumberOfTracks();iTrk++){//tracks loop
- AliESDtrack *pTrk=pEsd->GetTrack(iTrk);
- Float_t xRa,yRa;
- Int_t ch=AliHMPIDTracker::IntTrkCha(pTrk,xRa,yRa);
- if(ch<0) continue; //this track does not hit HMPID
- Float_t beta = pTrk->GetP()/(TMath::Sqrt(pTrk->GetP()*pTrk->GetP()+0.938*0.938));
- Float_t ckov=TMath::ACos(1./(beta*1.292));
-
- Float_t theta,phi,xPc,yPc,; pTrk->GetHMPIDtrk(xPc,yPc,theta,phi); rec.SetTrack(xRa,yRa,theta,phi);
-
- if(!AliHMPIDParam::IsInDead(xPc,yPc)) new((*pHits)[hc++]) AliHMPIDHit(ch,eMip,kProton ,iTrk,xPc,yPc); //mip hit
- Int_t nPhots = (Int_t)(20.*TMath::Power(TMath::Sin(ckov),2)/TMath::Power(TMath::Sin(TMath::ACos(1./1.292)),2));
- for(int i=0;i<nPhots;i++){
- TVector2 pos;
- pos=rec.TracePhot(ckov,gRandom->Rndm()*TMath::TwoPi());
- if(!AliHMPIDParam::IsInDead(pos.X(),pos.Y())) new((*pHits)[hc++]) AliHMPIDHit(ch,ePho,kCerenkov,iTrk,pos.X(),pos.Y());
- } //photon hits
- for(int i=0;i<3;i++){//feedback photons
- Float_t x=gRandom->Rndm()*160; Float_t y=gRandom->Rndm()*150;
- if(!AliHMPIDParam::IsInDead(x,y)) new((*pHits)[hc++]) AliHMPIDHit(ch,ePho,kFeedback,iTrk,x,y); //feedback hits
- }//photon hits loop
- }//tracks loop
-}//SimulateHits()
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++