]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSFDigitizer.cxx
Log replaced by Id
[u/mrichter/AliRoot.git] / ITS / AliITSFDigitizer.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 /* $Id$ */
17
18 #include <stdlib.h>
19 #include <Riostream.h>
20 #include <TObjArray.h>
21 #include <TClonesArray.h>
22 #include <TTree.h>
23 #include <TBranch.h>
24 #include <TFile.h>
25
26 #include <AliRun.h>
27 #include <AliRunLoader.h>
28 #include <AliLoader.h>
29 #include <AliRunDigitizer.h>
30
31 #include "AliITSFDigitizer.h"
32 // #include "AliITSpList.h"
33 #include "AliITSmodule.h"
34 #include "AliITSgeom.h"
35 #include "AliITSsimulationFastPoints.h"
36
37 ClassImp(AliITSFDigitizer)
38
39 //______________________________________________________________________
40 AliITSFDigitizer::AliITSFDigitizer() : AliDigitizer(){
41 //
42 // Default constructor.
43 //
44     fITS      = 0;
45     fInit     = kFALSE;
46 }
47 //______________________________________________________________________
48 AliITSFDigitizer::AliITSFDigitizer(AliRunDigitizer *mngr) : AliDigitizer(mngr){
49 //
50 // Standard constructor.
51 //
52     fITS      = 0;
53     fInit     = kFALSE;
54 }
55 //______________________________________________________________________
56 AliITSFDigitizer::~AliITSFDigitizer(){
57 //
58 // Default destructor. 
59 //
60     fITS = 0; // don't delete fITS. Done else where.
61 }
62 //______________________________________________________________________
63 Bool_t AliITSFDigitizer::Init(){
64 //
65 // Initialization. 
66 // loads ITS and ITSgeom.
67 // Inputs:
68 //      none.
69 // Outputs:
70 //      none.
71
72   
73   fInit = kFALSE;
74   if(!gAlice) {
75     fITS      = 0;
76     Warning("Init","gAlice not found");
77     return fInit;
78   }
79   fITS = (AliITS *)(gAlice->GetDetector("ITS"));
80   if(!fITS){
81     Warning("Init","ITS not found");
82     return fInit;
83   } 
84   if(!fITS->GetITSgeom()){
85     Warning("Init","ITS geometry not found");
86     return fInit;
87   }
88   return fInit = kTRUE;
89 }
90 ////////////////////////////////////////////////////////////////////////
91 void AliITSFDigitizer::Exec(Option_t* opt){
92 //
93 // Main digitization function. 
94 // Inputs:
95 //      Option_t * opt  "deb" ... more verbose output 
96 //
97
98   AliITSsimulationFastPoints *sim = new AliITSsimulationFastPoints();
99   AliRunLoader* outrl = AliRunLoader::GetRunLoader(fManager->GetOutputFolderName());
100   if (outrl == 0x0)
101    {
102      Error("Exec","Can not find Run Loader in output folder.");
103      return;
104    }
105
106   AliLoader* outgime = outrl->GetLoader("ITSLoader");
107   if (outgime == 0x0)
108    {
109      Error("Exec","Can not get TOF Loader from Output Run Loader.");
110      return;
111    }
112
113   TTree* outputTreeR = outgime->TreeR();
114   if (outputTreeR == 0x0)
115    {
116      outgime->MakeTree("R");
117      outputTreeR = outgime->TreeR();
118    }
119
120   TClonesArray *recPoints = fITS->RecPoints();
121 //  TBranch *branch =
122   fITS->MakeBranchInTree(outputTreeR,"ITSRecPointsF",&recPoints,4000,0);
123   
124   Int_t nModules;
125   fITS->InitModules(-1,nModules);
126
127 // load hits into modules
128   for (Int_t iFile = 0; iFile < fManager->GetNinputs(); iFile++) 
129    {
130      AliRunLoader* rl = AliRunLoader::GetRunLoader(fManager->GetInputFolderName(iFile));
131      if (rl == 0x0)
132       {
133         Error("Exec","Can not find Run Loader in input %d folder.",iFile);
134         return;
135       }
136
137      AliLoader* gime = rl->GetLoader("ITSLoader");
138      if (gime == 0x0)
139       {
140         Error("Exec","Can not get TOF Loader from Input %d Run Loader.",iFile);
141         return;
142       }
143
144      gime->LoadHits();
145      fITS->FillModules(gime->TreeH(),fManager->GetMask(iFile));
146      gime->UnloadHits();
147    }
148   
149 // transform hits to fast rec points
150
151   AliITSgeom *geom = fITS->GetITSgeom();
152   for(Int_t moduleIndex = 0; moduleIndex < geom->GetIndexMax(); moduleIndex++){
153     sim->CreateFastRecPoints(moduleIndex);
154 //    branch->Fill();
155     outputTreeR->Fill();
156     fITS->ResetRecPoints();
157   }
158   outrl->WriteRecPoints("OVERWRITE");
159 //  outputTreeR->AutoSave();
160 }
161 ////////////////////////////////////////////////////////////////////////