]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/AliTPCcalibBase.cxx
Setter method added
[u/mrichter/AliRoot.git] / TPC / AliTPCcalibBase.cxx
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 //
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
41 // 
42 #include "AliTPCcalibBase.h"
43 #include "TSystem.h"
44 #include "TFile.h"
45 #include "TTreeStream.h"
46 #include "AliLog.h"
47 #include "TTimeStamp.h"
48 #include "AliESDEvent.h"
49
50
51 ClassImp(AliTPCcalibBase)
52
53 AliTPCcalibBase::AliTPCcalibBase():
54     TNamed(),
55     fDebugStreamer(0),
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
62     fTriggerMaskReject(-1),   //trigger mask - reject trigger
63     fTriggerMaskAccept(-1),   //trigger mask - accept trigger
64     fDebugLevel(0)
65 {
66   //
67   // Constructor
68   //
69 }
70
71 AliTPCcalibBase::AliTPCcalibBase(const AliTPCcalibBase&calib):
72   TNamed(calib),
73   fDebugStreamer(0),
74   fStreamLevel(calib.fStreamLevel),
75   fRun(0),                  //!  current Run number
76   fEvent(0),                //!  current Event number
77   fTime(0),                 //!  current Time
78   fTrigger(0),              //! current trigger type
79   fMagF(0),                 //! current magnetic field
80   fTriggerMaskReject(calib.fTriggerMaskReject),   //trigger mask - reject trigger
81   fTriggerMaskAccept(calib.fTriggerMaskAccept),   //trigger mask - accept trigger
82   fDebugLevel(calib.fDebugLevel)
83 {
84   //
85   // copy constructor
86   //
87 }
88
89 AliTPCcalibBase &AliTPCcalibBase::operator=(const AliTPCcalibBase&calib){
90   //
91   //
92   //
93   ((TNamed *)this)->operator=(calib);
94   fDebugStreamer=0;
95   fStreamLevel=calib.fStreamLevel;
96   fDebugLevel=calib.fDebugLevel;
97   return *this;
98 }
99
100
101 AliTPCcalibBase::~AliTPCcalibBase() {
102   //
103   // destructor
104   //
105   if (fDebugLevel>0) printf("AliTPCcalibBase::~AliTPCcalibBase\n");
106   if (fDebugStreamer) delete fDebugStreamer;
107   fDebugStreamer=0;
108 }
109
110 void  AliTPCcalibBase::Terminate(){
111   //
112   //
113   //
114   if (fDebugLevel>0) printf("AliTPCcalibBase::Terminate\n");
115   if (fDebugStreamer) delete fDebugStreamer;
116   fDebugStreamer = 0;
117   return;
118 }
119
120 TTreeSRedirector *AliTPCcalibBase::GetDebugStreamer(){
121   //
122   // Get Debug streamer
123   // In case debug streamer not yet initialized and StreamLevel>0 create new one
124   //
125   if (fStreamLevel==0) return 0;
126   if (fDebugStreamer) return fDebugStreamer;
127   TString dsName;
128   dsName=GetName();
129   dsName+="Debug.root";
130   dsName.ReplaceAll(" ",""); 
131   fDebugStreamer = new TTreeSRedirector(dsName.Data());
132   return fDebugStreamer;
133 }
134
135
136 void    AliTPCcalibBase::UpdateEventInfo(AliESDEvent * event){
137   //
138   //
139   //
140   fRun     = event->GetRunNumber();
141   fEvent   = event->GetEventNumberInFile();
142   fTime    = event->GetTimeStamp();
143   fTrigger = event->GetTriggerMask();
144   fMagF    = event->GetMagneticField();
145 }
146
147 Bool_t AliTPCcalibBase::AcceptTrigger(){
148   //
149   // Apply trigger mask - Don't do calibration for non proper triggers
150   // 
151   if (fTriggerMaskReject==fTrigger) return kFALSE;
152   if (fTriggerMaskAccept>0 && fTriggerMaskAccept!=fTrigger) return kFALSE;
153   return kTRUE;
154 }
155
156
157 void AliTPCcalibBase::RegisterDebugOutput(const char *path){
158   //
159   // store  - copy debug output to the destination position
160   // currently ONLY for local copy
161   if (fDebugLevel>0) printf("AliTPCcalibBase::RegisterDebugOutput(%s)\n",path);
162   if (fStreamLevel==0) return;
163   TString dsName;
164   dsName=GetName();
165   dsName+="Debug.root";
166   dsName.ReplaceAll(" ",""); 
167   TString dsName2=path;
168   gSystem->MakeDirectory(dsName2.Data());
169   dsName2+=gSystem->HostName();
170   gSystem->MakeDirectory(dsName2.Data());
171   dsName2+="/";
172   TTimeStamp s;
173   dsName2+=Int_t(s.GetNanoSec());
174   dsName2+="/";
175   gSystem->MakeDirectory(dsName2.Data());
176   dsName2+=dsName;
177   AliInfo(Form("copy %s\t%s\n",dsName.Data(),dsName2.Data()));
178   printf("copy %s\t%s\n",dsName.Data(),dsName2.Data());
179   TFile::Cp(dsName.Data(),dsName2.Data());
180 }