From 5ec1b3bc16398fea042d225105e374b938017123 Mon Sep 17 00:00:00 2001 From: hristov Date: Wed, 28 Jan 2004 10:55:55 +0000 Subject: [PATCH] Introducing MUON ESD --- STEER/AliESDMuonTest.C | 191 ++++++++++++++++++++++++++++++++++++++ STEER/AliESDMuonTrack.cxx | 39 ++++++++ STEER/AliESDMuonTrack.h | 56 +++++++++++ 3 files changed, 286 insertions(+) create mode 100644 STEER/AliESDMuonTest.C diff --git a/STEER/AliESDMuonTest.C b/STEER/AliESDMuonTest.C new file mode 100644 index 00000000000..93365a96af0 --- /dev/null +++ b/STEER/AliESDMuonTest.C @@ -0,0 +1,191 @@ +/************************************************************************** + * Copyright(c) 1998-1999, 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. * + **************************************************************************/ + +/* $Id$ */ + +// +// Macro for checking aliroot output and associated files contents +// Gines Martinez, Subatech June 2003 +// + +// ROOT includes +#include "TBranch.h" +#include "TClonesArray.h" +#include "TFile.h" +#include "TH1.h" +#include "TParticle.h" +#include "TTree.h" + +// STEER includes +#include "AliRun.h" +#include "AliRunLoader.h" +#include "AliHeader.h" +#include "AliLoader.h" +#include "AliStack.h" +#include "AliESD.h" + +// MUON includes +#include "AliMUON.h" +#include "AliMUONData.h" +#include "AliMUONConstants.h" +#include "AliMUONRawCluster.h" +#include "AliMUONTrack.h" +#include "AliMUONTriggerTrack.h" +#include "AliESDMuonTrack.h" + + +void AliESDMuonTest(char * filename="galice.root", Int_t run=0){ + + TClonesArray * recTracksArray; + + // Creating Run Loader and openning file containing Hits + AliRunLoader * RunLoader = AliRunLoader::Open(filename,"MUONFolder","READ"); + if (RunLoader ==0x0) { + printf(">>> Error : Error Opening %s file \n",filename); + return; + } + + // creating ESD file + TFile *ef=TFile::Open("AliESD.Muon.root","RECREATE"); + if (!ef->IsOpen()) cerr<<"Can't open AliESD.root file!\n"; + + AliLoader * MUONLoader = RunLoader->GetLoader("MUONLoader"); + MUONLoader->LoadTracks("READ"); + + // Creating MUON data container + AliMUONData muondata(MUONLoader,"MUON","MUON"); + + // declaration + Int_t ievent, nevents; + Int_t ntrackhits; + Double_t fitfmin; + Int_t nrectracks; + + Double_t bendingSlope, nonBendingSlope, fInverseBendingMomentum; + Double_t fXRec, fYRec, fZRec; + + Float_t x11, y11, thetaX,thetaY ; + + nevents = RunLoader->GetNumberOfEvents(); + + // setting pointer for tracks, triggertracks& trackparam at vertex + AliMUONTrack * rectrack; + AliMUONTriggerTrack * rectriggertrack; + AliMUONTrackParam *trackParam; + + for (ievent = 0; ievent < nevents; ievent++) { + RunLoader->GetEvent(ievent); + + // cerr<<"\n\nProcessing event number : "<SetRunNumber(run); + event->SetEventNumber(ievent); + + // -------------------- tracks------------- + + // setting ESD MUON class + AliESDMuonTrack* ESDTrack = new AliESDMuonTrack() ; + muondata.SetTreeAddress("RT"); + muondata.GetRecTracks(); + recTracksArray = muondata.RecTracks(); + + nrectracks = (Int_t) recTracksArray->GetEntriesFast(); // + + printf(">>> Event %d Number of Recconstructed tracks %d \n",ievent, nrectracks); + + // read track infos + for (Int_t irectracks = 0; irectracks < nrectracks; irectracks++) { + + rectrack = (AliMUONTrack*) recTracksArray->At(irectracks); + + trackParam = rectrack->GetTrackParamAtVertex(); + + bendingSlope = trackParam->GetBendingSlope(); + nonBendingSlope = trackParam->GetNonBendingSlope(); + fInverseBendingMomentum = trackParam->GetInverseBendingMomentum(); + fXRec = trackParam->GetNonBendingCoor(); + fYRec = trackParam->GetBendingCoor(); + fZRec = trackParam->GetZ(); + + ntrackhits = rectrack->GetNTrackHits(); + fitfmin = rectrack->GetFitFMin(); + + // setting data member of ESD MUON + ESDTrack->SetInverseBendingMomentum(fInverseBendingMomentum); + ESDTrack->SetThetaX(TMath::ATan(nonBendingSlope)); + ESDTrack->SetThetaY(TMath::ATan(bendingSlope)); + ESDTrack->SetZ(fZRec); + ESDTrack->SetBendingCoor(fYRec); + ESDTrack->SetNonBendingCoor(fXRec); + ESDTrack->SetChi2(fitfmin); + ESDTrack->SetNHit(ntrackhits); + } + + // -------------------- trigger tracks------------- + muondata.SetTreeAddress("RL"); + muondata.GetRecTriggerTracks(); + recTracksArray = muondata.RecTriggerTracks(); + + nrectracks = (Int_t) recTracksArray->GetEntriesFast(); // + + printf(">>> Event %d Number of Recconstructed tracks %d \n",ievent, nrectracks); + + // read trigger track infos + for (Int_t irectracks = 0; irectracks < nrectracks; irectracks++) { + + rectriggertrack = (AliMUONTriggerTrack*) recTracksArray->At(irectracks); + + x11 = rectriggertrack->GetY11(); + y11 = rectriggertrack->GetY11(); + thetaX = rectriggertrack->GetThetax(); + thetaY = rectriggertrack->GetThetay(); + + // setting data member of ESD MUON trigger + ESDTrack->SetThetaX11(thetaX); + ESDTrack->SetThetaY11(thetaY); + ESDTrack->SetX11(x11); + ESDTrack->SetY11(y11); + } + + // storing ESD MUON Track into ESD Event & reset muondata + event->AddMuonTrack(ESDTrack); + muondata.ResetRecTracks(); + muondata.ResetRecTriggerTracks(); + + // writting ESD event + Char_t ename[100]; + sprintf(ename,"%d",ievent); + ef->cd(); + if (!event->Write(ename)) cerr<<"Something bad happened...\n"; + delete event; + + } // end loop on event + ef->Close(); + MUONLoader->UnloadTracks(); + MUONLoader->UnloadTriggerTracks(); + +} + + + + + + + + + + diff --git a/STEER/AliESDMuonTrack.cxx b/STEER/AliESDMuonTrack.cxx index e9b970b2e17..f41d4395b3d 100644 --- a/STEER/AliESDMuonTrack.cxx +++ b/STEER/AliESDMuonTrack.cxx @@ -1,4 +1,43 @@ #include "AliESDMuonTrack.h" +AliESDMuonTrack::AliESDMuonTrack (const AliESDMuonTrack& MUONTrack):TObject(MUONTrack) +{ + fInverseBendingMomentum = MUONTrack.fInverseBendingMomentum; + fThetaX = MUONTrack.fThetaX; + fThetaY = MUONTrack.fThetaY ; + fZ = MUONTrack.fZ; + fBendingCoor = MUONTrack.fBendingCoor; + fNonBendingCoor = MUONTrack.fNonBendingCoor; + fChi2 = MUONTrack.fChi2; + fNHit= MUONTrack.fNHit ; + + fX11 = MUONTrack.fX11; + fY11 = MUONTrack.fY11; + fThetaX11 = MUONTrack.fThetaX11; + fThetaY11 = MUONTrack.fThetaY11; +} + +AliESDMuonTrack& AliESDMuonTrack::operator=(const AliESDMuonTrack& MUONTrack) +{ + if (this == &MUONTrack) + return *this; + + fInverseBendingMomentum = MUONTrack.fInverseBendingMomentum; + fThetaX = MUONTrack.fThetaX; + fThetaY = MUONTrack.fThetaY ; + fZ = MUONTrack.fZ; + fBendingCoor = MUONTrack.fBendingCoor; + fNonBendingCoor = MUONTrack.fNonBendingCoor; + fChi2 = MUONTrack.fChi2; + fNHit= MUONTrack.fNHit ; + + fX11 = MUONTrack.fX11; + fY11 = MUONTrack.fY11; + fThetaX11 = MUONTrack.fThetaX11; + fThetaY11 = MUONTrack.fThetaY11; + + return *this; +} + ClassImp(AliESDMuonTrack) diff --git a/STEER/AliESDMuonTrack.h b/STEER/AliESDMuonTrack.h index 18d872af666..48e956a6537 100644 --- a/STEER/AliESDMuonTrack.h +++ b/STEER/AliESDMuonTrack.h @@ -4,6 +4,62 @@ #include "TObject.h" class AliESDMuonTrack : public TObject { +public: + AliESDMuonTrack(){ + // Constructor; + } // Constructor + virtual ~AliESDMuonTrack(){ + // Destructor; + } // Destructor + AliESDMuonTrack(const AliESDMuonTrack& ); + AliESDMuonTrack& operator=(const AliESDMuonTrack& ); + + + // Get and Set methods for data + Double_t GetInverseBendingMomentum(void) const {return fInverseBendingMomentum;} + void SetInverseBendingMomentum(Double_t InverseBendingMomentum) + {fInverseBendingMomentum = InverseBendingMomentum;} + Double_t GetThetaX(void) const {return fThetaX;} + void SetThetaX(Double_t ThetaX) {fThetaX = ThetaX;} + Double_t GetThetaY(void) const {return fThetaY;} + void SetThetaY(Double_t ThetaY) {fThetaY = ThetaY;} + Double_t GetZ(void) const {return fZ;} + void SetZ(Double_t Z) {fZ = Z;} + Double_t GetBendingCoor(void) const {return fBendingCoor;} + void SetBendingCoor(Double_t BendingCoor) {fBendingCoor = BendingCoor;} + Double_t GetNonBendingCoor(void) const {return fNonBendingCoor;} + void SetNonBendingCoor(Double_t NonBendingCoor) {fNonBendingCoor = NonBendingCoor;} + Double_t GetChi2(void) const {return fChi2;} + void SetChi2(Double_t Chi2) {fChi2 = Chi2;} + UInt_t GetNHit(void) const {return fNHit;} + void SetNHit(UInt_t NHit) {fNHit = NHit;} + + Float_t GetX11() const {return fX11;} + void SetX11(Float_t X11) {fX11 = X11;} + Float_t GetY11() const {return fY11;} + void SetY11(Float_t Y11) {fY11 = Y11;} + Float_t GetThetaX11() const {return fThetaX11;} + void SetThetaX11(Float_t ThetaX) {fThetaX11 = ThetaX;} + Float_t GetThetaY11() const {return fThetaY11;} + void SetThetaY11(Float_t ThetaY) {fThetaY11 = ThetaY;} + +protected: + // tracking chamber + Double_t fInverseBendingMomentum; // Inverse bending momentum (GeV/c ** -1) times the charge + Double_t fThetaX; // Angle of track at vertex in X direction (rad) + Double_t fThetaY; // Angle of track at vertex in Y direction (rad) + Double_t fZ; // Z coordinate (cm) + Double_t fBendingCoor; // bending coordinate (cm) + Double_t fNonBendingCoor; // non bending coordinate (cm) + Double_t fChi2; // chi2 in the MUON track fit + UInt_t fNHit; // number of hit in the track + + // trigger chamber + Float_t fX11; // x position of fired Y strip in MC11 + Float_t fY11; // y position of fired X strip in MC11 + Float_t fThetaX11; // track theta angle in X + Float_t fThetaY11; // track theta angle in Y + ClassDef(AliESDMuonTrack,1) //MUON ESD track class }; -- 2.43.0