]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TPC/AliTPCcalibBase.cxx
Corrected printout
[u/mrichter/AliRoot.git] / TPC / AliTPCcalibBase.cxx
CommitLineData
3ab35fc5 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
17///////////////////////////////////////////////////////////////////////////////
18// //
19// Base class for the calibration components using
20// as input TPCseeds and ESDs
21// Event loop outside of the component
22//
23//
ae28e92e 24// Base functionality to be implemeneted by component
25/*
26 //In some cases only one of this function to be implemented
27 virtual void Process(AliESDEvent *event)
28 virtual void Process(AliTPCseed *track)
29 //
30 virtual Long64_t Merge(TCollection *li);
31 virtual void Analyze()
32 void Terminate();
33*/
34// Functionality provided by base class for Algorith debuging:
35// TTreeSRedirector * cstream = GetDebugStreamer() - get debug streamer which can be use for numerical debugging
36//
37
38
39
40// marian.ivanov@cern.ch
3ab35fc5 41//
42#include "AliTPCcalibBase.h"
f7f33dec 43#include "TSystem.h"
44#include "TFile.h"
ae28e92e 45#include "TTreeStream.h"
f7f33dec 46#include "AliLog.h"
47328338 47#include "TTimeStamp.h"
108953e9 48#include "AliESDEvent.h"
f7f33dec 49
3ab35fc5 50
51ClassImp(AliTPCcalibBase)
52
ae28e92e 53AliTPCcalibBase::AliTPCcalibBase():
54 TNamed(),
55 fDebugStreamer(0),
108953e9 56 fStreamLevel(0),
57 fRun(0), //! current Run number
58 fEvent(0), //! current Event number
59 fTime(0), //! current Time
60 fTrigger(0), //! current trigger type
61 fMagF(0), //! current magnetic field
c51653e8 62 fTriggerMaskReject(-1), //trigger mask - reject trigger
63 fTriggerMaskAccept(-1), //trigger mask - accept trigger
2d22fa36 64 fHasLaser(kFALSE), //flag the laser is overlayed with given event
65 fRejectLaser(kTRUE), //flag- reject laser
15e48021 66 fTriggerClass(),
ae28e92e 67 fDebugLevel(0)
3ab35fc5 68{
69 //
70 // Constructor
71 //
72}
73
8cf12c96 74AliTPCcalibBase::AliTPCcalibBase(const char * name, const char * title):
75 TNamed(name,title),
76 fDebugStreamer(0),
77 fStreamLevel(0),
78 fRun(0), //! current Run number
79 fEvent(0), //! current Event number
80 fTime(0), //! current Time
81 fTrigger(0), //! current trigger type
82 fMagF(0), //! current magnetic field
83 fTriggerMaskReject(-1), //trigger mask - reject trigger
84 fTriggerMaskAccept(-1), //trigger mask - accept trigger
85 fHasLaser(kFALSE), //flag the laser is overlayed with given event
86 fRejectLaser(kTRUE), //flag- reject laser
15e48021 87 fTriggerClass(),
8cf12c96 88 fDebugLevel(0)
89{
90 //
91 // Constructor
92 //
93}
94
ae28e92e 95AliTPCcalibBase::AliTPCcalibBase(const AliTPCcalibBase&calib):
96 TNamed(calib),
97 fDebugStreamer(0),
98 fStreamLevel(calib.fStreamLevel),
e5cbd73f 99 fRun(0), //! current Run number
100 fEvent(0), //! current Event number
101 fTime(0), //! current Time
102 fTrigger(0), //! current trigger type
103 fMagF(0), //! current magnetic field
c51653e8 104 fTriggerMaskReject(calib.fTriggerMaskReject), //trigger mask - reject trigger
105 fTriggerMaskAccept(calib.fTriggerMaskAccept), //trigger mask - accept trigger
2d22fa36 106 fHasLaser(calib.fHasLaser), //flag the laser is overlayed with given event
107 fRejectLaser(calib.fRejectLaser), //flag- reject laser
ae28e92e 108 fDebugLevel(calib.fDebugLevel)
109{
110 //
111 // copy constructor
112 //
113}
114
115AliTPCcalibBase &AliTPCcalibBase::operator=(const AliTPCcalibBase&calib){
116 //
117 //
118 //
119 ((TNamed *)this)->operator=(calib);
120 fDebugStreamer=0;
121 fStreamLevel=calib.fStreamLevel;
122 fDebugLevel=calib.fDebugLevel;
525062ee 123 return *this;
ae28e92e 124}
125
126
3ab35fc5 127AliTPCcalibBase::~AliTPCcalibBase() {
128 //
129 // destructor
130 //
f7f33dec 131 if (fDebugLevel>0) printf("AliTPCcalibBase::~AliTPCcalibBase\n");
ae28e92e 132 if (fDebugStreamer) delete fDebugStreamer;
133 fDebugStreamer=0;
134}
135
136void AliTPCcalibBase::Terminate(){
137 //
138 //
139 //
f7f33dec 140 if (fDebugLevel>0) printf("AliTPCcalibBase::Terminate\n");
ae28e92e 141 if (fDebugStreamer) delete fDebugStreamer;
142 fDebugStreamer = 0;
143 return;
144}
145
146TTreeSRedirector *AliTPCcalibBase::GetDebugStreamer(){
147 //
148 // Get Debug streamer
149 // In case debug streamer not yet initialized and StreamLevel>0 create new one
150 //
151 if (fStreamLevel==0) return 0;
152 if (fDebugStreamer) return fDebugStreamer;
153 TString dsName;
154 dsName=GetName();
155 dsName+="Debug.root";
156 dsName.ReplaceAll(" ","");
157 fDebugStreamer = new TTreeSRedirector(dsName.Data());
158 return fDebugStreamer;
3ab35fc5 159}
f7f33dec 160
161
108953e9 162void AliTPCcalibBase::UpdateEventInfo(AliESDEvent * event){
163 //
164 //
165 //
166 fRun = event->GetRunNumber();
167 fEvent = event->GetEventNumberInFile();
168 fTime = event->GetTimeStamp();
169 fTrigger = event->GetTriggerMask();
170 fMagF = event->GetMagneticField();
15e48021 171 fTriggerClass = event->GetFiredTriggerClasses().Data();
2d22fa36 172 fHasLaser = HasLaser(event);
15e48021 173
108953e9 174}
175
2d22fa36 176
177Bool_t AliTPCcalibBase::HasLaser(AliESDEvent *event){
178 //
179 //
180 //
181 // Thresholds more than 8 tracks with small dip angle
182
183 const Int_t kMinLaserTracks = 8;
184 const Float_t kThrLaser = 0.3;
185 const Float_t kLaserTgl = 0.01;
186
187 Int_t ntracks = event->GetNumberOfTracks();
188 if (ntracks<kMinLaserTracks) return kFALSE;
189 Float_t nlaser=0;
190 Float_t nall=0;
191 for (Int_t i=0;i<ntracks;++i) {
192 AliESDtrack *track=event->GetTrack(i);
193 if (!track) continue;
194 if (track->GetTPCNcls()<=0) continue;
195 nall++;
196 if (TMath::Abs(track->GetTgl())<kLaserTgl) nlaser++;
197 }
198 if (nlaser>kMinLaserTracks) return kTRUE;
199 if (nall>0 && nlaser/nall>kThrLaser) return kTRUE;
200 return kFALSE;
201}
202
203
204
c51653e8 205Bool_t AliTPCcalibBase::AcceptTrigger(){
206 //
207 // Apply trigger mask - Don't do calibration for non proper triggers
208 //
2d22fa36 209 if (fTriggerMaskReject==(Int_t)fTrigger) return kFALSE;
210 if (fTriggerMaskAccept>0 && fTriggerMaskAccept!=(Int_t)fTrigger) return kFALSE;
211 if (fHasLaser && fRejectLaser) return kFALSE;
c51653e8 212 return kTRUE;
213}
214
215
f7f33dec 216void AliTPCcalibBase::RegisterDebugOutput(const char *path){
217 //
218 // store - copy debug output to the destination position
219 // currently ONLY for local copy
220 if (fDebugLevel>0) printf("AliTPCcalibBase::RegisterDebugOutput(%s)\n",path);
221 if (fStreamLevel==0) return;
222 TString dsName;
223 dsName=GetName();
224 dsName+="Debug.root";
225 dsName.ReplaceAll(" ","");
226 TString dsName2=path;
227 gSystem->MakeDirectory(dsName2.Data());
228 dsName2+=gSystem->HostName();
229 gSystem->MakeDirectory(dsName2.Data());
230 dsName2+="/";
47328338 231 TTimeStamp s;
232 dsName2+=Int_t(s.GetNanoSec());
233 dsName2+="/";
234 gSystem->MakeDirectory(dsName2.Data());
f7f33dec 235 dsName2+=dsName;
236 AliInfo(Form("copy %s\t%s\n",dsName.Data(),dsName2.Data()));
237 printf("copy %s\t%s\n",dsName.Data(),dsName2.Data());
238 TFile::Cp(dsName.Data(),dsName2.Data());
239}