get tables from the aliroot directory if they are not in the current one
[u/mrichter/AliRoot.git] / MUON / AliMUONSDigitizerv1.cxx
1
2 #include <Riostream.h>
3 #include <TDirectory.h>
4 #include <TFile.h>
5 #include <TObjArray.h>
6 #include <TPDGCode.h>
7 #include <TTree.h> 
8 #include <TMath.h>
9
10 #include "AliRun.h"
11 #include "AliRunLoader.h"
12 #include "AliLoader.h"
13
14 #include "AliMUON.h"
15 #include "AliMUONChamber.h"
16 #include "AliMUONConstants.h"
17 #include "AliMUONDigit.h"
18 #include "AliMUONSDigitizerv1.h"
19 #include "AliMUONHit.h"
20 #include "AliMUONHitMapA1.h"
21 #include "AliMUONPadHit.h"
22 #include "AliMUONTransientDigit.h"
23
24 /////////////////////////////////////////////////////////////////////////////////
25 //
26 // AliMUONSDigitizerv1 digitizes hits from the input stream into s-digits. 
27 // The s-digits are written to the s-digit tree TreeS.
28 // The same algorithm is implemented as for AliMUONDigitizerv1 however the
29 // chamber response is not applied to the s-digits and we write to TreeS and 
30 // not TreeD.
31 //
32 /////////////////////////////////////////////////////////////////////////////////
33
34 ClassImp(AliMUONSDigitizerv1)
35
36 //___________________________________________
37 AliMUONSDigitizerv1::AliMUONSDigitizerv1() : AliMUONDigitizerv1()
38 {
39         // Default ctor - don't use it
40 }
41
42 //___________________________________________
43 AliMUONSDigitizerv1::AliMUONSDigitizerv1(AliRunDigitizer* manager) : AliMUONDigitizerv1(manager)
44 {
45         // ctor which should be used
46 }
47
48 //------------------------------------------------------------------------
49 void AliMUONSDigitizerv1::AddDigit(Int_t chamber, Int_t tracks[kMAXTRACKS], Int_t charges[kMAXTRACKS], Int_t digits[6])
50 {
51 // Derived to write to the s-digit tree TreeS.
52
53         muondata->AddSDigit(chamber, tracks, charges, digits);   
54 };
55
56 //------------------------------------------------------------------------
57 Int_t AliMUONSDigitizerv1::GetSignalFrom(AliMUONTransientDigit* td)
58 {
59 // Returns the transient digit signal as is without applying the chamber response.
60
61         if (GetDebug() > 3) Info("GetSignalFrom", "Returning TransientDigit signal.");
62         return td->Signal(); 
63 };
64
65 //------------------------------------------------------------------------
66 Bool_t AliMUONSDigitizerv1::InitOutputData(AliMUONLoader* muonloader)
67 {
68 // Overridden to initialise the output tree to be TreeS rather than TreeD.
69
70         if (GetDebug() > 2)
71                 Info("InitOutputData", "Creating s-digits branch and setting the tree address.");
72
73         muondata->SetLoader(muonloader);
74
75         // New branch per chamber for MUON digit in the tree of digits
76         if (muonloader->TreeS() == NULL)
77         {
78                 muonloader->MakeSDigitsContainer();
79                 if (muonloader->TreeS() == NULL)
80                 {
81                         Error("InitOutputData", "Could not create TreeS.");
82                         return kFALSE;
83                 };
84         };
85
86         muondata->MakeBranch("S");
87         muondata->SetTreeAddress("S");
88         
89         return kTRUE;
90 };
91
92 //------------------------------------------------------------------------
93 void AliMUONSDigitizerv1::FillOutputData()
94 {
95 // Overridden to fill TreeS rather than TreeD.
96
97         if (GetDebug() > 2) Info("FillOutputData", "Filling trees with s-digits.");
98         muondata->Fill("S");
99         muondata->ResetSDigits();
100 };
101
102 //------------------------------------------------------------------------
103 void AliMUONSDigitizerv1::CleanupOutputData(AliMUONLoader* muonloader)
104 {
105 // Overridden to write and then cleanup TreeS that was initialised in InitOutputData.
106
107         if (GetDebug() > 2) Info("CleanupOutputData", "Writing s-digits and releasing pointers.");
108         muonloader->WriteSDigits("OVERWRITE");
109         muondata->ResetSDigits();
110         muonloader->UnloadSDigits();
111 };