#include <TTree.h>
#include "AliLog.h"
#include "AliITSRecoParam.h"
#include "AliITSReconstructor.h"
#include "AliITSRecPointContainer.h"
#include "AliITSRecPoint.h"
#include "AliRunLoader.h"
ClassImp(AliITSRecPointContainer)
AliITSRecPointContainer* AliITSRecPointContainer::fgInstance = 0x0;
AliITSRecPointContainer::AliITSRecPointContainer(const AliITSRecoParam* krp):TObject(),
fSPDNModules(0),
fSDDNModules(0),
fSSDNModules(0),
fArray(),
fCurrentEve(-1000),
fNextEvent(-1000),
fActualSize(0),
fDet(""),
fStatusOK(kTRUE){
for(Int_t i=0;i<6;i++)fNClusters[i]=0;
if(fgkNModules != AliITSgeomTGeo::GetNModules())AliError(Form("The total number of modules is not %d, but %d",fgkNModules,AliITSgeomTGeo::GetNModules()));
Int_t modperlay[6];
for(Int_t i=0;i<6;i++)modperlay[i]=AliITSgeomTGeo::GetNDetectors(1+i)*AliITSgeomTGeo::GetNLadders(1+i);
fSPDNModules=modperlay[0]+modperlay[1];
fSDDNModules=modperlay[2]+modperlay[3];
fSSDNModules=modperlay[4]+modperlay[5];
const Int_t kLimits[12]={25,25,20,20,10,10,300,300,200,200,100,100};
Int_t offset=0;
if(!krp){
AliWarning("AliITSRecoParam is missing. Using defaults");
}
else {
if(krp->GetEventSpecie() == AliRecoParam::kHighMult)offset=6;
}
Int_t maxval[6];
TString values="";
for(Int_t i=0;i<6;i++){
maxval[i]=kLimits[i+offset];
values+=maxval[i];
values+=" ";
if(i>0)modperlay[i]+=modperlay[i-1];
}
AliInfo(Form("Container created with sizes/layer: %s",values.Data()));
Int_t layer=0;
for(Int_t i=0;i<fgkNModules;i++){
if(i>=modperlay[layer])++layer;
fArray[i]=new TClonesArray("AliITSRecPoint",maxval[layer]);
}
}
AliITSRecPointContainer::~AliITSRecPointContainer(){
for(Int_t i=0;i<fgkNModules;i++){
if(fArray[i]){
fArray[i]->Delete();
delete fArray[i];
}
}
}
void AliITSRecPointContainer::CookEntries(){
if(fActualSize == fgkNModules)fDet="ALL SPD SDD SSD ";
if(fActualSize == fSPDNModules) fDet = "SPD ";
if(fActualSize == fSDDNModules) fDet = "SDD ";
if(fActualSize == fSSDNModules)fDet = "SSD ";
if(fActualSize == (fSPDNModules+fSDDNModules)) fDet = "SPD SDD ";
if(fActualSize == (fSPDNModules+fSSDNModules))fDet = "SPD SSD ";
if(fActualSize == (fSDDNModules+fSSDNModules))fDet = "SDD SSD ";
if((!fDet.Contains("SPD")) && (!fDet.Contains("SDD")) &&
(!fDet.Contains("SSD"))){
AliError(Form("The number of active modules %d does not correspond to any standard configuration of the detector",fActualSize));
fStatusOK = kFALSE;
}
}
TClonesArray* AliITSRecPointContainer::FetchClusters(Int_t mod, TTree* tR){
AliRunLoader* rl = AliRunLoader::Instance();
Int_t cureve;
if(rl){
cureve = rl->GetEventNumber();
}
else if(fNextEvent>=0){
cureve = fNextEvent;
}
else {
AliError("The RunLoader is not defined, PrepareToRead was not invoked. Revise calling sequence. Nothing done");
return NULL;
}
return FetchClusters(mod,tR,cureve);
}
TClonesArray* AliITSRecPointContainer::FetchClusters(Int_t mod, TTree* tR,Int_t cureve){
if(cureve != fCurrentEve){
fCurrentEve = cureve;
Reset();
TBranch *branch = NULL;
branch = tR->GetBranch("ITSRecPoints");
if(!branch){
AliError("Branch ITSRecPoints not found on ITS recpoints TTree");
fStatusOK = kFALSE;
return NULL;
}
fActualSize = branch->GetEntries();
CookEntries();
if(fDet.IsNull())return NULL;
Int_t modL1=AliITSgeomTGeo::GetNDetectors(1)*AliITSgeomTGeo::GetNLadders(1);
if(IsSPDActive()){
for(Int_t i=0;i<fSPDNModules;i++){
branch->SetAddress(&fArray[i]);
branch->GetEvent(i);
if(i<modL1){
fNClusters[0]+=fArray[i]->GetEntries();
}
else {
fNClusters[1]+=fArray[i]->GetEntries();
}
}
}
if(IsSDDActive()){
Int_t start=0;
if(IsSPDActive())start+=fSPDNModules;
Int_t modL3=AliITSgeomTGeo::GetNDetectors(3)*AliITSgeomTGeo::GetNLadders(3);
Int_t counter = fSPDNModules;
for(Int_t i=start;i<start+fSDDNModules;i++){
branch->SetAddress(&fArray[counter]);
++counter;
branch->GetEvent(i);
if((i-start)<modL3){
fNClusters[2]+=fArray[i]->GetEntries();
}
else {
fNClusters[3]+=fArray[i]->GetEntries();
}
}
}
if(IsSSDActive()){
Int_t start=0;
if(IsSPDActive())start+=fSPDNModules;
if(IsSDDActive())start+=fSDDNModules;
Int_t modL5=AliITSgeomTGeo::GetNDetectors(5)*AliITSgeomTGeo::GetNLadders(5);
Int_t counter = fSPDNModules+fSDDNModules;
for(Int_t i=start;i<start+fSSDNModules;i++){
branch->SetAddress(&fArray[counter]);
++counter;
branch->GetEvent(i);
if((i-start)<modL5){
fNClusters[4]+=fArray[i]->GetEntries();
}
else {
fNClusters[5]+=fArray[i]->GetEntries();
}
}
}
}
if(CheckBoundaries(mod)){
return fArray[mod];
}
else {
AliError(Form("Module %d is out of boundaries",mod));
return NULL;
}
}
UInt_t AliITSRecPointContainer::GetNClustersInLayer(Int_t lay, TTree* tR, Int_t eventN){
if(lay<1 || lay >6){
AliError(Form("Layer %d is out of range",lay));
return 0;
}
if(eventN>=0){
FetchClusters(0,tR,eventN);
}
else {
FetchClusters(0,tR);
}
return fNClusters[lay-1];
}
UInt_t AliITSRecPointContainer::GetNClustersInLayerFast(Int_t lay) const {
if(lay<1 || lay >6){
AliError(Form("Layer %d is out of range",lay));
return 0;
}
return fNClusters[lay-1];
}
AliITSRecPointContainer* AliITSRecPointContainer::Instance(const AliITSRecoParam* kptr){
if(!fgInstance){
if(!kptr){
fgInstance = new AliITSRecPointContainer(AliITSReconstructor::GetRecoParam());
}
else {
fgInstance = new AliITSRecPointContainer(kptr);
}
}
return fgInstance;
}
void AliITSRecPointContainer::Destroy(){
if(fgInstance){
delete fgInstance;
fgInstance = NULL;
}
}
void AliITSRecPointContainer::Reset(){
ClearClus(0,fgkNModules);
fDet="";
for(Int_t i=0;i<6;i++)fNClusters[i]=0;
}
void AliITSRecPointContainer::ResetSPD(){
fCurrentEve = -1000;
ClearClus(0,fSPDNModules);
}
void AliITSRecPointContainer::ResetSDD(){
fCurrentEve = -1000;
Int_t first = fSPDNModules;
Int_t last = first + fSDDNModules;
ClearClus(first,last);
}
void AliITSRecPointContainer::ResetSSD(){
fCurrentEve = -1000;
Int_t first = fSPDNModules + fSDDNModules;
Int_t last = first + fSSDNModules;
ClearClus(first,last);
}
AliITSRecPointContainer.cxx:1 AliITSRecPointContainer.cxx:2 AliITSRecPointContainer.cxx:3 AliITSRecPointContainer.cxx:4 AliITSRecPointContainer.cxx:5 AliITSRecPointContainer.cxx:6 AliITSRecPointContainer.cxx:7 AliITSRecPointContainer.cxx:8 AliITSRecPointContainer.cxx:9 AliITSRecPointContainer.cxx:10 AliITSRecPointContainer.cxx:11 AliITSRecPointContainer.cxx:12 AliITSRecPointContainer.cxx:13 AliITSRecPointContainer.cxx:14 AliITSRecPointContainer.cxx:15 AliITSRecPointContainer.cxx:16 AliITSRecPointContainer.cxx:17 AliITSRecPointContainer.cxx:18 AliITSRecPointContainer.cxx:19 AliITSRecPointContainer.cxx:20 AliITSRecPointContainer.cxx:21 AliITSRecPointContainer.cxx:22 AliITSRecPointContainer.cxx:23 AliITSRecPointContainer.cxx:24 AliITSRecPointContainer.cxx:25 AliITSRecPointContainer.cxx:26 AliITSRecPointContainer.cxx:27 AliITSRecPointContainer.cxx:28 AliITSRecPointContainer.cxx:29 AliITSRecPointContainer.cxx:30 AliITSRecPointContainer.cxx:31 AliITSRecPointContainer.cxx:32 AliITSRecPointContainer.cxx:33 AliITSRecPointContainer.cxx:34 AliITSRecPointContainer.cxx:35 AliITSRecPointContainer.cxx:36 AliITSRecPointContainer.cxx:37 AliITSRecPointContainer.cxx:38 AliITSRecPointContainer.cxx:39 AliITSRecPointContainer.cxx:40 AliITSRecPointContainer.cxx:41 AliITSRecPointContainer.cxx:42 AliITSRecPointContainer.cxx:43 AliITSRecPointContainer.cxx:44 AliITSRecPointContainer.cxx:45 AliITSRecPointContainer.cxx:46 AliITSRecPointContainer.cxx:47 AliITSRecPointContainer.cxx:48 AliITSRecPointContainer.cxx:49 AliITSRecPointContainer.cxx:50 AliITSRecPointContainer.cxx:51 AliITSRecPointContainer.cxx:52 AliITSRecPointContainer.cxx:53 AliITSRecPointContainer.cxx:54 AliITSRecPointContainer.cxx:55 AliITSRecPointContainer.cxx:56 AliITSRecPointContainer.cxx:57 AliITSRecPointContainer.cxx:58 AliITSRecPointContainer.cxx:59 AliITSRecPointContainer.cxx:60 AliITSRecPointContainer.cxx:61 AliITSRecPointContainer.cxx:62 AliITSRecPointContainer.cxx:63 AliITSRecPointContainer.cxx:64 AliITSRecPointContainer.cxx:65 AliITSRecPointContainer.cxx:66 AliITSRecPointContainer.cxx:67 AliITSRecPointContainer.cxx:68 AliITSRecPointContainer.cxx:69 AliITSRecPointContainer.cxx:70 AliITSRecPointContainer.cxx:71 AliITSRecPointContainer.cxx:72 AliITSRecPointContainer.cxx:73 AliITSRecPointContainer.cxx:74 AliITSRecPointContainer.cxx:75 AliITSRecPointContainer.cxx:76 AliITSRecPointContainer.cxx:77 AliITSRecPointContainer.cxx:78 AliITSRecPointContainer.cxx:79 AliITSRecPointContainer.cxx:80 AliITSRecPointContainer.cxx:81 AliITSRecPointContainer.cxx:82 AliITSRecPointContainer.cxx:83 AliITSRecPointContainer.cxx:84 AliITSRecPointContainer.cxx:85 AliITSRecPointContainer.cxx:86 AliITSRecPointContainer.cxx:87 AliITSRecPointContainer.cxx:88 AliITSRecPointContainer.cxx:89 AliITSRecPointContainer.cxx:90 AliITSRecPointContainer.cxx:91 AliITSRecPointContainer.cxx:92 AliITSRecPointContainer.cxx:93 AliITSRecPointContainer.cxx:94 AliITSRecPointContainer.cxx:95 AliITSRecPointContainer.cxx:96 AliITSRecPointContainer.cxx:97 AliITSRecPointContainer.cxx:98 AliITSRecPointContainer.cxx:99 AliITSRecPointContainer.cxx:100 AliITSRecPointContainer.cxx:101 AliITSRecPointContainer.cxx:102 AliITSRecPointContainer.cxx:103 AliITSRecPointContainer.cxx:104 AliITSRecPointContainer.cxx:105 AliITSRecPointContainer.cxx:106 AliITSRecPointContainer.cxx:107 AliITSRecPointContainer.cxx:108 AliITSRecPointContainer.cxx:109 AliITSRecPointContainer.cxx:110 AliITSRecPointContainer.cxx:111 AliITSRecPointContainer.cxx:112 AliITSRecPointContainer.cxx:113 AliITSRecPointContainer.cxx:114 AliITSRecPointContainer.cxx:115 AliITSRecPointContainer.cxx:116 AliITSRecPointContainer.cxx:117 AliITSRecPointContainer.cxx:118 AliITSRecPointContainer.cxx:119 AliITSRecPointContainer.cxx:120 AliITSRecPointContainer.cxx:121 AliITSRecPointContainer.cxx:122 AliITSRecPointContainer.cxx:123 AliITSRecPointContainer.cxx:124 AliITSRecPointContainer.cxx:125 AliITSRecPointContainer.cxx:126 AliITSRecPointContainer.cxx:127 AliITSRecPointContainer.cxx:128 AliITSRecPointContainer.cxx:129 AliITSRecPointContainer.cxx:130 AliITSRecPointContainer.cxx:131 AliITSRecPointContainer.cxx:132 AliITSRecPointContainer.cxx:133 AliITSRecPointContainer.cxx:134 AliITSRecPointContainer.cxx:135 AliITSRecPointContainer.cxx:136 AliITSRecPointContainer.cxx:137 AliITSRecPointContainer.cxx:138 AliITSRecPointContainer.cxx:139 AliITSRecPointContainer.cxx:140 AliITSRecPointContainer.cxx:141 AliITSRecPointContainer.cxx:142 AliITSRecPointContainer.cxx:143 AliITSRecPointContainer.cxx:144 AliITSRecPointContainer.cxx:145 AliITSRecPointContainer.cxx:146 AliITSRecPointContainer.cxx:147 AliITSRecPointContainer.cxx:148 AliITSRecPointContainer.cxx:149 AliITSRecPointContainer.cxx:150 AliITSRecPointContainer.cxx:151 AliITSRecPointContainer.cxx:152 AliITSRecPointContainer.cxx:153 AliITSRecPointContainer.cxx:154 AliITSRecPointContainer.cxx:155 AliITSRecPointContainer.cxx:156 AliITSRecPointContainer.cxx:157 AliITSRecPointContainer.cxx:158 AliITSRecPointContainer.cxx:159 AliITSRecPointContainer.cxx:160 AliITSRecPointContainer.cxx:161 AliITSRecPointContainer.cxx:162 AliITSRecPointContainer.cxx:163 AliITSRecPointContainer.cxx:164 AliITSRecPointContainer.cxx:165 AliITSRecPointContainer.cxx:166 AliITSRecPointContainer.cxx:167 AliITSRecPointContainer.cxx:168 AliITSRecPointContainer.cxx:169 AliITSRecPointContainer.cxx:170 AliITSRecPointContainer.cxx:171 AliITSRecPointContainer.cxx:172 AliITSRecPointContainer.cxx:173 AliITSRecPointContainer.cxx:174 AliITSRecPointContainer.cxx:175 AliITSRecPointContainer.cxx:176 AliITSRecPointContainer.cxx:177 AliITSRecPointContainer.cxx:178 AliITSRecPointContainer.cxx:179 AliITSRecPointContainer.cxx:180 AliITSRecPointContainer.cxx:181 AliITSRecPointContainer.cxx:182 AliITSRecPointContainer.cxx:183 AliITSRecPointContainer.cxx:184 AliITSRecPointContainer.cxx:185 AliITSRecPointContainer.cxx:186 AliITSRecPointContainer.cxx:187 AliITSRecPointContainer.cxx:188 AliITSRecPointContainer.cxx:189 AliITSRecPointContainer.cxx:190 AliITSRecPointContainer.cxx:191 AliITSRecPointContainer.cxx:192 AliITSRecPointContainer.cxx:193 AliITSRecPointContainer.cxx:194 AliITSRecPointContainer.cxx:195 AliITSRecPointContainer.cxx:196 AliITSRecPointContainer.cxx:197 AliITSRecPointContainer.cxx:198 AliITSRecPointContainer.cxx:199 AliITSRecPointContainer.cxx:200 AliITSRecPointContainer.cxx:201 AliITSRecPointContainer.cxx:202 AliITSRecPointContainer.cxx:203 AliITSRecPointContainer.cxx:204 AliITSRecPointContainer.cxx:205 AliITSRecPointContainer.cxx:206 AliITSRecPointContainer.cxx:207 AliITSRecPointContainer.cxx:208 AliITSRecPointContainer.cxx:209 AliITSRecPointContainer.cxx:210 AliITSRecPointContainer.cxx:211 AliITSRecPointContainer.cxx:212 AliITSRecPointContainer.cxx:213 AliITSRecPointContainer.cxx:214 AliITSRecPointContainer.cxx:215 AliITSRecPointContainer.cxx:216 AliITSRecPointContainer.cxx:217 AliITSRecPointContainer.cxx:218 AliITSRecPointContainer.cxx:219 AliITSRecPointContainer.cxx:220 AliITSRecPointContainer.cxx:221 AliITSRecPointContainer.cxx:222 AliITSRecPointContainer.cxx:223 AliITSRecPointContainer.cxx:224 AliITSRecPointContainer.cxx:225 AliITSRecPointContainer.cxx:226 AliITSRecPointContainer.cxx:227 AliITSRecPointContainer.cxx:228 AliITSRecPointContainer.cxx:229 AliITSRecPointContainer.cxx:230 AliITSRecPointContainer.cxx:231 AliITSRecPointContainer.cxx:232 AliITSRecPointContainer.cxx:233 AliITSRecPointContainer.cxx:234 AliITSRecPointContainer.cxx:235 AliITSRecPointContainer.cxx:236 AliITSRecPointContainer.cxx:237 AliITSRecPointContainer.cxx:238 AliITSRecPointContainer.cxx:239 AliITSRecPointContainer.cxx:240 AliITSRecPointContainer.cxx:241 AliITSRecPointContainer.cxx:242 AliITSRecPointContainer.cxx:243 AliITSRecPointContainer.cxx:244 AliITSRecPointContainer.cxx:245 AliITSRecPointContainer.cxx:246 AliITSRecPointContainer.cxx:247 AliITSRecPointContainer.cxx:248 AliITSRecPointContainer.cxx:249 AliITSRecPointContainer.cxx:250 AliITSRecPointContainer.cxx:251 AliITSRecPointContainer.cxx:252 AliITSRecPointContainer.cxx:253 AliITSRecPointContainer.cxx:254 AliITSRecPointContainer.cxx:255 AliITSRecPointContainer.cxx:256 AliITSRecPointContainer.cxx:257 AliITSRecPointContainer.cxx:258 AliITSRecPointContainer.cxx:259 AliITSRecPointContainer.cxx:260 AliITSRecPointContainer.cxx:261 AliITSRecPointContainer.cxx:262 AliITSRecPointContainer.cxx:263 AliITSRecPointContainer.cxx:264 AliITSRecPointContainer.cxx:265 AliITSRecPointContainer.cxx:266 AliITSRecPointContainer.cxx:267 AliITSRecPointContainer.cxx:268 AliITSRecPointContainer.cxx:269 AliITSRecPointContainer.cxx:270 AliITSRecPointContainer.cxx:271 AliITSRecPointContainer.cxx:272 AliITSRecPointContainer.cxx:273 AliITSRecPointContainer.cxx:274 AliITSRecPointContainer.cxx:275 AliITSRecPointContainer.cxx:276 AliITSRecPointContainer.cxx:277 AliITSRecPointContainer.cxx:278 AliITSRecPointContainer.cxx:279 AliITSRecPointContainer.cxx:280 AliITSRecPointContainer.cxx:281 AliITSRecPointContainer.cxx:282 AliITSRecPointContainer.cxx:283 AliITSRecPointContainer.cxx:284 AliITSRecPointContainer.cxx:285 AliITSRecPointContainer.cxx:286 AliITSRecPointContainer.cxx:287 AliITSRecPointContainer.cxx:288 AliITSRecPointContainer.cxx:289 AliITSRecPointContainer.cxx:290 AliITSRecPointContainer.cxx:291 AliITSRecPointContainer.cxx:292 AliITSRecPointContainer.cxx:293 AliITSRecPointContainer.cxx:294 AliITSRecPointContainer.cxx:295 AliITSRecPointContainer.cxx:296 AliITSRecPointContainer.cxx:297 AliITSRecPointContainer.cxx:298 AliITSRecPointContainer.cxx:299