debug message removed
[u/mrichter/AliRoot.git] / STEER / AliESDMuonTest.C
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /* $Id$ */
17
18 //
19 // Macro for checking aliroot output and associated files contents
20 // Gines Martinez, Subatech June 2003
21 //
22
23 // ROOT includes
24 #include "TBranch.h"
25 #include "TClonesArray.h"
26 #include "TFile.h"
27 #include "TH1.h"
28 #include "TParticle.h"
29 #include "TTree.h"
30
31 // STEER includes
32 #include "AliRun.h"
33 #include "AliRunLoader.h"
34 #include "AliHeader.h"
35 #include "AliLoader.h"
36 #include "AliStack.h"
37 #include "AliESDEvent.h"
38
39 // MUON includes
40 #include "AliMUON.h"
41 #include "AliMUONData.h"
42 #include "AliMUONConstants.h"
43 #include "AliMUONRawCluster.h"
44 #include "AliMUONTrack.h"
45 #include "AliMUONTriggerTrack.h"
46 #include "AliESDMuonTrack.h"
47
48
49 void AliESDMuonTest(char * filename="galice.root", Int_t run=0){
50
51   TClonesArray* recTracksArray;
52   TClonesArray* recTrigTracksArray;
53   TTree* treeE;
54   // Creating Run Loader and openning file containing Hits
55   AliRunLoader * RunLoader = AliRunLoader::Open(filename,"MUONFolder","READ");
56   if (RunLoader ==0x0) {
57     printf(">>> Error : Error Opening %s file \n",filename);
58     return;
59   }
60   
61   // creating ESD file
62   TFile *ef=TFile::Open("AliESD.Muon.root","RECREATE");
63   if (!ef->IsOpen()) cerr<<"Can't open AliESD.root file!\n";
64
65   treeE = new TTree("ESD", "ESD");
66
67   AliLoader* MUONLoader = RunLoader->GetLoader("MUONLoader");
68   MUONLoader->LoadTracks("READ");
69
70   // Creating MUON data container
71   AliMUONData muondata(MUONLoader,"MUON","MUON");
72
73   // declaration  
74   Int_t ievent, nevents;
75   Int_t ntrackhits;
76   Double_t fitfmin;
77   Int_t nrectracks;
78
79   Double_t bendingSlope, nonBendingSlope, fInverseBendingMomentum;
80   Double_t fXRec, fYRec, fZRec, chi2MatchTrigger;
81   Bool_t matchTrigger;
82
83   nevents = RunLoader->GetNumberOfEvents();
84
85   // setting pointer for tracks, triggertracks& trackparam at vertex
86   AliMUONTrack* rectrack;
87   AliMUONTriggerTrack* rectriggertrack;
88   AliMUONTrackParam* trackParam;
89
90   for (ievent = 0; ievent < nevents; ievent++) {
91
92     RunLoader->GetEvent(ievent);
93
94     // setting ESD class pointer
95     AliESDEvent* event = new AliESDEvent();
96     event->CreateStdContent();
97     char name[255];
98     event->WriteToTree(treeE);
99
100     event->SetRunNumber(run);
101     event->SetEventNumber(ievent);
102
103     // setting ESD MUON class
104     AliESDMuonTrack* ESDTrack = new  AliESDMuonTrack() ;
105
106  // ---------------- tracks ----------------
107     muondata.SetTreeAddress("RT");
108     muondata.GetRecTracks();
109     recTracksArray = muondata.RecTracks();
110     nrectracks = (Int_t) recTracksArray->GetEntriesFast();
111
112 // --------------- trigger tracks ----------
113     Long_t trigPat = 0;
114
115     muondata.SetTreeAddress("RL");
116     muondata.GetRecTriggerTracks();
117     recTrigTracksArray = muondata.RecTriggerTracks();
118     rectriggertrack = (AliMUONTriggerTrack*) recTrigTracksArray->First();
119     trigPat = rectriggertrack->GetGTPattern();
120
121     printf(">>> Event %d Number of Recconstructed tracks %d \n",ievent, nrectracks);
122  
123     for (Int_t irectracks = 0; irectracks <  nrectracks;  irectracks++) {
124
125       // ---------------- tracks ----------------
126         rectrack = (AliMUONTrack*) recTracksArray->At(irectracks);    
127         trackParam = rectrack->GetTrackParamAtVertex();
128
129         bendingSlope            = trackParam->GetBendingSlope();
130         nonBendingSlope         = trackParam->GetNonBendingSlope();
131         //      printf(" SlopeX %f SlopeY %f\n",bendingSlope ,nonBendingSlope);
132
133         fInverseBendingMomentum = trackParam->GetInverseBendingMomentum();
134         fXRec  = trackParam->GetNonBendingCoor();
135         fYRec  = trackParam->GetBendingCoor();
136         //      printf(" X %f Y %f\n", fXRec, fYRec);
137
138         fZRec  = trackParam->GetZ();
139         //      printf(" Z %f\n", fZRec);
140
141         ntrackhits = rectrack->GetNTrackHits();
142         fitfmin = rectrack->GetFitFMin();
143         matchTrigger     = rectrack->GetMatchTrigger();
144         chi2MatchTrigger = rectrack->GetChi2MatchTrigger();
145
146         // setting data member of ESD MUON
147         ESDTrack->SetInverseBendingMomentum(fInverseBendingMomentum);
148         ESDTrack->SetThetaX(TMath::ATan(nonBendingSlope));
149         ESDTrack->SetThetaY(TMath::ATan(bendingSlope));
150         ESDTrack->SetZ(fZRec);
151         ESDTrack->SetBendingCoor(fYRec);
152         ESDTrack->SetNonBendingCoor(fXRec);
153         ESDTrack->SetChi2(fitfmin);
154         ESDTrack->SetNHit(ntrackhits);
155         ESDTrack->SetMatchTrigger(matchTrigger);
156         ESDTrack->SetChi2MatchTrigger(chi2MatchTrigger);
157
158       // storing ESD MUON Track into ESD Event & reset muondata
159       event->AddMuonTrack(ESDTrack);
160     }// track loop
161  
162     event->SetTrigger(trigPat);
163
164     for (Int_t iTrack = 0; iTrack < event->GetNumberOfMuonTracks(); iTrack++) {
165       AliESDMuonTrack* muonTrack = event->GetMuonTrack(iTrack);
166       Double_t ptInv = TMath::Abs(muonTrack->GetInverseBendingMomentum());
167       cout << "  ptInv: "<<ptInv <<"  nb track: "<< event->GetNumberOfMuonTracks() << endl;
168     }
169     treeE->Fill();
170     event->Reset();
171         
172     muondata.ResetRecTracks();
173     muondata.ResetRecTriggerTracks();
174
175   } // end loop on event
176   treeE->GetUserInfo()->Add(event);
177   ef->Write();
178   ef->Close();
179   MUONLoader->UnloadTracks();
180   delete event;
181
182 }
183
184
185
186
187
188
189
190
191
192