X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FMUONacc.C;h=439f6659feab184784bf5b1fdf1875bb500d5b78;hb=7816887f6fb5b97025ef03e8ed180ceff3751ddf;hp=fb6e590ede9089a3a58b0ff659c5aa3feb3e0854;hpb=9efe4ffa3a4de4311e53f00976af7d9b3791b68d;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/MUONacc.C b/MUON/MUONacc.C index fb6e590ede9..439f6659fea 100644 --- a/MUON/MUONacc.C +++ b/MUON/MUONacc.C @@ -2,8 +2,8 @@ Bool_t SelectThis(AliMUONHit* mHit); Bool_t SelectThis(Float_t x, Float_t y, Float_t d) { -// Float_t x = mHit->fX; // x-pos -// Float_t y = mHit->fY; // y-pos +// Float_t x = mHit->X(); // x-pos +// Float_t y = mHit->Y(); // y-pos if (TMath::Abs(x) > d/2. && TMath::Abs(y) > d/2.) { return 1; } else { @@ -11,6 +11,21 @@ Bool_t SelectThis(Float_t x, Float_t y, Float_t d) } } +Bool_t SelectThat(Float_t x, Float_t y, Float_t d) +{ + const Float_t phi0=60.*TMath::Pi()/180.; + + if (y<0.) return 1; + if (x<0.) x=-x; + + Float_t phi = TMath::ATan2(y,x); + Float_t dist = TMath::Sin(phi0-phi)*TMath::Sqrt(x*x+y*y); + if (TMath::Abs(dist) > d) { + return 1; + } else { + return 0 ; + } +} void MUONacc (Float_t d=3., Int_t evNumber1=0, Int_t evNumber2=0) { @@ -54,6 +69,7 @@ void MUONacc (Float_t d=3., Int_t evNumber1=0, Int_t evNumber2=0) TH1F *theta = new TH1F("theta","Theta distribution",180,0,180); TH1F *emult = new TH1F("emult","Event Multiplicity",100,0,1000); + TH2F *supp = new TH2F("supp", "Diselected",100, -200., 200, 100, -200., 200.); AliMUONChamber* iChamber; AliSegmentation* seg; @@ -82,9 +98,9 @@ void MUONacc (Float_t d=3., Int_t evNumber1=0, Int_t evNumber2=0) // Int_t prim=0; - for (Int_t part=0; part<3000; part+=3) { - TParticle *MPart = (TParticle*) fPartArray->UncheckedAt(part); - Int_t mpart = MPart->GetPdgCode(); + for (Int_t part=0; part<30000; part+=3) { + TParticle *MPart = gAlice->Particle(part); + Int_t mpart = MPart->GetPdgCode(); Int_t child1 = MPart->GetFirstDaughter(); Int_t child2 = MPart->GetLastDaughter(); Int_t mother = MPart->GetFirstMother(); @@ -112,23 +128,21 @@ void MUONacc (Float_t d=3., Int_t evNumber1=0, Int_t evNumber2=0) mHit; mHit=(AliMUONHit*)MUON->NextHit()) { - Int_t nch = mHit->fChamber; // chamber number - Float_t x = mHit->fX; // x-pos of hit - Float_t y = mHit->fY; // y-pos - Float_t z = mHit->fZ; // z-pos - Float_t Eloss = mHit->fEloss; // energy loss - Float_t Theta = mHit->fTheta; // theta - Float_t Particle = mHit->fParticle; // Particle type - Int_t itrack = Int_t(mHit->fTrack); - TParticle *thePart = (TParticle*) fPartArray->UncheckedAt(itrack); + Int_t nch = mHit->Chamber(); // chamber number + Float_t x = mHit->X(); // x-pos of hit + Float_t y = mHit->Y(); // y-pos + Float_t z = mHit->Z(); // z-pos + Float_t Eloss = mHit->Eloss(); // energy loss + Float_t Theta = mHit->Theta(); // theta + Float_t Particle = mHit->Particle(); // Particle type + Int_t itrack = Int_t(mHit->Track()); + + TParticle *thePart = gAlice->Particle(itrack); Float_t pTheta=thePart->Theta(); if (Particle != kMuonPlus && Particle != kMuonMinus) continue; - Float_t P = - TMath::Sqrt(mHit->fCxHit*mHit->fCxHit+ - mHit->fCyHit*mHit->fCyHit+ - mHit->fCzHit*mHit->fCzHit); + Float_t P = mhit->Momentum(); Float_t R = TMath::Sqrt(x*x+y*y); TParticlePDG* Part = DataBase->GetParticle(Particle); Double_t mass = Part->Mass(); @@ -149,12 +163,22 @@ void MUONacc (Float_t d=3., Int_t evNumber1=0, Int_t evNumber2=0) // (z>970 && ( R > 970 * TMath::Tan(2.0*TMath::Pi()/180.) // +(z-970)* TMath::Tan(1.6*TMath::Pi()/180.))); // - Bool_t ok = (z<970 && ( R < z*TMath::Tan(9.0*TMath::Pi()/180.))) || - (z>970 && ( R < 970 * TMath::Tan(9.0*TMath::Pi()/180.) - +(z-970)* TMath::Tan(12.0*TMath::Pi()/180.))); - +// Bool_t ok = (z<970 && ( R < z*TMath::Tan(9.0*TMath::Pi()/180.))) || +// (z>970 && ( R < 970 * TMath::Tan(9.0*TMath::Pi()/180.) +// +(z-970)* TMath::Tan(12.0*TMath::Pi()/180.))); + if (nch == 4 || nch == 7) { + Bool_t ok = SelectThat(x,y,d); + } else { + Bool_t ok = kTRUE; + } + + + selected[muons] = selected[muons] && ok; + if (!ok) { + supp->Fill(x,y,1.); + + } - selected[muons] = selected[muons] && ok; } // hit loop } // if MUON @@ -169,9 +193,11 @@ void MUONacc (Float_t d=3., Int_t evNumber1=0, Int_t evNumber2=0) //Create a canvas, set the view range, show histograms Int_t k; TCanvas *c1 = new TCanvas("c1","Canvas 1",400,10,600,700); - c1->Divide(2,4); + c1->Divide(2,2); c1->cd(1); theta->Draw(); + c1->cd(2); + supp->Draw(); }