]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliESDMuonTest.C
Adding RICH and updating PHOS part (Yu.Belikov)
[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 "AliESD.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   
53   // Creating Run Loader and openning file containing Hits
54   AliRunLoader * RunLoader = AliRunLoader::Open(filename,"MUONFolder","READ");
55   if (RunLoader ==0x0) {
56     printf(">>> Error : Error Opening %s file \n",filename);
57     return;
58   }
59   
60   // creating ESD file
61   TFile *ef=TFile::Open("AliESD.Muon.root","RECREATE");
62   if (!ef->IsOpen()) cerr<<"Can't open AliESD.root file!\n";
63
64   AliLoader * MUONLoader = RunLoader->GetLoader("MUONLoader");
65   MUONLoader->LoadTracks("READ");
66
67   // Creating MUON data container
68   AliMUONData muondata(MUONLoader,"MUON","MUON");
69
70   // declaration  
71   Int_t ievent, nevents;
72   Int_t ntrackhits;
73   Double_t fitfmin;
74   Int_t nrectracks;
75
76   Double_t bendingSlope, nonBendingSlope, fInverseBendingMomentum;
77   Double_t fXRec, fYRec, fZRec;
78
79   Float_t  x11, y11, thetaX,thetaY ;
80
81   nevents = RunLoader->GetNumberOfEvents();
82   
83   // setting pointer for tracks, triggertracks& trackparam at vertex
84   AliMUONTrack * rectrack;
85   AliMUONTriggerTrack * rectriggertrack;
86   AliMUONTrackParam *trackParam;
87
88   for (ievent = 0; ievent < nevents; ievent++) {
89     RunLoader->GetEvent(ievent);
90
91     //   cerr<<"\n\nProcessing event number : "<<ievent<<endl;
92
93     // setting ESD class pointer
94     AliESD *event = new AliESD(); 
95     event->SetRunNumber(run);
96     event->SetEventNumber(ievent);
97
98     // -------------------- tracks-------------
99
100     // setting ESD MUON class
101     AliESDMuonTrack* ESDTrack = new  AliESDMuonTrack() ;
102     muondata.SetTreeAddress("RT");
103     muondata.GetRecTracks();
104     recTracksArray = muondata.RecTracks();
105         
106     nrectracks = (Int_t) recTracksArray->GetEntriesFast(); //
107  
108     printf(">>> Event %d Number of Recconstructed tracks %d \n",ievent, nrectracks);
109    
110     // read track infos
111     for (Int_t irectracks = 0; irectracks <  nrectracks;  irectracks++) {
112
113       rectrack = (AliMUONTrack*) recTracksArray->At(irectracks);
114
115       trackParam = rectrack->GetTrackParamAtVertex();
116
117       bendingSlope            = trackParam->GetBendingSlope();
118       nonBendingSlope         = trackParam->GetNonBendingSlope();
119       fInverseBendingMomentum = trackParam->GetInverseBendingMomentum();
120       fXRec  = trackParam->GetNonBendingCoor();
121       fYRec  = trackParam->GetBendingCoor();
122       fZRec  = trackParam->GetZ();
123
124       ntrackhits = rectrack->GetNTrackHits();
125       fitfmin = rectrack->GetFitFMin();
126
127       // setting data member of ESD MUON
128       ESDTrack->SetInverseBendingMomentum(fInverseBendingMomentum);
129       ESDTrack->SetThetaX(TMath::ATan(nonBendingSlope));
130       ESDTrack->SetThetaY(TMath::ATan(bendingSlope));
131       ESDTrack->SetZ(fZRec);
132       ESDTrack->SetBendingCoor(fYRec);
133       ESDTrack->SetNonBendingCoor(fXRec);
134       ESDTrack->SetChi2(fitfmin);
135       ESDTrack->SetNHit(ntrackhits);
136     }
137
138     // -------------------- trigger tracks-------------
139     muondata.SetTreeAddress("RL");
140     muondata.GetRecTriggerTracks();
141     recTracksArray = muondata.RecTriggerTracks();
142         
143     nrectracks = (Int_t) recTracksArray->GetEntriesFast(); //
144  
145     printf(">>> Event %d Number of Recconstructed tracks %d \n",ievent, nrectracks);
146    
147     // read trigger track infos
148     for (Int_t irectracks = 0; irectracks <  nrectracks;  irectracks++) {
149
150       rectriggertrack = (AliMUONTriggerTrack*) recTracksArray->At(irectracks);
151     
152       x11 = rectriggertrack->GetY11();
153       y11 = rectriggertrack->GetY11();
154       thetaX = rectriggertrack->GetThetax();
155       thetaY = rectriggertrack->GetThetay();
156
157       // setting data member of ESD MUON trigger
158       ESDTrack->SetThetaX11(thetaX);
159       ESDTrack->SetThetaY11(thetaY);
160       ESDTrack->SetX11(x11);
161       ESDTrack->SetY11(y11);
162     }
163
164     // storing ESD MUON Track into ESD Event & reset muondata
165     event->AddMuonTrack(ESDTrack);
166     muondata.ResetRecTracks();
167     muondata.ResetRecTriggerTracks();
168
169     // writting ESD event
170     Char_t ename[100]; 
171     sprintf(ename,"%d",ievent);
172     ef->cd();
173     if (!event->Write(ename)) cerr<<"Something bad happened...\n";
174     delete event;
175
176   } // end loop on event  
177   ef->Close();
178   MUONLoader->UnloadTracks();
179   MUONLoader->UnloadTriggerTracks();
180
181 }
182
183
184
185
186
187
188
189
190
191