AddTaskFemto for train update
[u/mrichter/AliRoot.git] / ITS / AliITSsimulation.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 // This is the base class for ITS detector signal simulations. Data members //
17 // include are a pointer to the AliITSDetTypeSim clas in order to access    //
18 // segmentation and response objects                                        // 
19 // classes. See the detector specific implementations for the propper code. //
20 //////////////////////////////////////////////////////////////////////////////
21 #include "TClonesArray.h"
22
23 #include "AliITSsimulation.h"
24 #include "AliITSpList.h"
25
26 ClassImp(AliITSsimulation)
27
28 //______________________________________________________________________
29 AliITSsimulation::AliITSsimulation(): TObject(),
30 fDetType(0),
31 fpList(0),
32 fModule(0),
33 fEvent(0),
34 fDebug(0){
35     // Default constructor
36     // Inputs:
37     //    none.
38     // Outputs:
39     //    none.
40     // Return:
41     //    a default constructed AliITSsimulation class
42 }
43 //______________________________________________________________________
44 AliITSsimulation::AliITSsimulation(AliITSDetTypeSim *dettyp): TObject(),
45 fDetType(dettyp),
46 fpList(0),
47 fModule(0),
48 fEvent(0),
49 fDebug(0){
50     // Default constructor
51     // Inputs:
52     //    AliITSDetTypeSim * : object used to access segmentation and response
53     // Outputs:
54     //    none.
55     // Return:
56     //    a default constructed AliITSsimulation class
57 }
58 //__________________________________________________________________________
59 AliITSsimulation::~AliITSsimulation(){
60     // destructor
61     // Inputs:
62     //    none.
63     // Outputs:
64     //    none.
65     // Return:
66     //    none.
67
68     if(fpList){
69       delete fpList;
70       fpList = 0;
71     }
72    }
73 //__________________________________________________________________________
74 AliITSsimulation::AliITSsimulation(const AliITSsimulation &s) : TObject(s),
75 fDetType(s.fDetType),
76 fpList(s.fpList),
77 fModule(s.fModule),
78 fEvent(s.fEvent),
79 fDebug(s.fDebug){
80     //     Copy Constructor
81     // Inputs:
82     //    const AliITSsimulation &s  simulation class to copy from
83     // Outputs:
84     //    none.
85     // Return:
86     //    a standard constructed AliITSsimulation class with values the same
87     //    as that of s.
88  
89 }
90
91 //_________________________________________________________________________
92 AliITSsimulation&  AliITSsimulation::operator=(const AliITSsimulation &s){
93     //    Assignment operator
94     // Inputs:
95     //    const AliITSsimulation &s  simulation class to copy from
96     // Outputs:
97     //    none.
98     // Return:
99     //    a standard constructed AliITSsimulation class with values the same
100     //    as that of s.
101
102     if(&s == this) return *this;
103     this->fModule       = s.fModule;
104     this->fEvent        = s.fEvent;
105     this->fpList        = s.fpList;
106     return *this;
107 }
108 //______________________________________________________________________
109 Bool_t AliITSsimulation::AddSDigitsToModule(TClonesArray *pItemA,Int_t mask ){
110     // Add Summable digits to module maps.
111     // Inputs:
112     //    TClonesArray *pItemA  Array of AliITSpListItems (SDigits).
113     //    Int_t         mask    Track number off set value (see 
114     //                          AliITSpList::AddItemTo).
115     // Outputs:
116     //    none.
117     // Return:
118     //    kTRUE if there is a signal >0 else kFALSE
119     Int_t nItems = pItemA->GetEntries();
120     Bool_t sig = kFALSE;
121  
122     // cout << "Adding "<< nItems <<" SDigits to module " << fModule << endl;
123     for( Int_t i=0; i<nItems; i++ ) {
124         AliITSpListItem * pItem = (AliITSpListItem *)(pItemA->At( i ));
125         if( pItem->GetModule() != fModule ) {
126             Error( "AddSDigitsToModule","Error reading, SDigits module %d "
127                    "!= current module %d: exit",
128                    pItem->GetModule(), fModule );
129             return sig;
130         } // end if
131         if(pItem->GetSignal()>0.0 ) sig = kTRUE;
132         fpList->AddItemTo( mask, pItem );
133     } // end for i
134     return sig;
135 }