+ return;
+}
+
+inline void AliITStrackV2::SetModuleIndexInfo(Int_t ilayer,Int_t idet,Int_t status,
+ Float_t xloc,Float_t zloc) {
+ //----------------------------------------------------------------------
+ // This function encodes in the module number also the status of cluster association
+ // "status" can have the following values:
+ // 1 "found" (cluster is associated),
+ // 2 "dead" (module is dead from OCDB),
+ // 3 "skipped" (module or layer forced to be skipped),
+ // 4 "outinz" (track out of z acceptance),
+ // 5 "nocls" (no clusters in the road),
+ // 6 "norefit" (cluster rejected during refit)
+ // 7 "deadzspd" (holes in z in SPD)
+ // WARNING: THIS METHOD HAS TO BE SYNCHRONIZED WITH AliESDtrack::GetITSModuleIndexInfo()!
+ //----------------------------------------------------------------------
+
+ if(idet<0) {
+ idet=0;
+ } else {
+ // same detector numbering as in AliITSCalib classes
+ if(ilayer==1) idet+=AliITSgeomTGeo::GetNLadders(1)*AliITSgeomTGeo::GetNDetectors(1);
+ if(ilayer==3) idet+=AliITSgeomTGeo::GetNLadders(3)*AliITSgeomTGeo::GetNDetectors(3);
+ if(ilayer==5) idet+=AliITSgeomTGeo::GetNLadders(5)*AliITSgeomTGeo::GetNDetectors(5);
+ }
+
+ Int_t xInt = Int_t(xloc*10.);
+ Int_t zInt = Int_t(zloc*10.);
+
+ if(TMath::Abs(xloc*10.-(Float_t)xInt)>0.5){
+ if(zloc>0) {
+ xInt++;
+ }
+ else {
+ xInt--;
+ }
+ }
+ if(TMath::Abs(zloc*10.-(Float_t)zInt)>0.5){
+ if(zloc>0) {
+ zInt++;
+ }
+ else {
+ zInt--;
+ }
+ }
+ Int_t signs=0;
+ if(xInt>=0 && zInt>=0) signs=10000;
+ if(xInt>=0 && zInt<0) signs=20000;
+ if(xInt<0 && zInt>=0) signs=30000;
+ if(xInt<0 && zInt<0) signs=40000;
+
+ Int_t modindex = signs;
+
+ modindex += TMath::Abs(zInt);
+ modindex += TMath::Abs(xInt)*100;
+
+ modindex += status*100000;
+
+ modindex += idet*1000000;
+
+ SetModuleIndex(ilayer,modindex);
+ return;
+}
+
+inline Bool_t AliITStrackV2::GetModuleIndexInfo(Int_t ilayer,Int_t &idet,Int_t &status,
+ Float_t &xloc,Float_t &zloc) const {
+ //----------------------------------------------------------------------
+ // This function encodes in the module number also the status of cluster association
+ // "status" can have the following values:
+ // 1 "found" (cluster is associated),
+ // 2 "dead" (module is dead from OCDB),
+ // 3 "skipped" (module or layer forced to be skipped),
+ // 4 "outinz" (track out of z acceptance),
+ // 5 "nocls" (no clusters in the road),
+ // 6 "norefit" (cluster rejected during refit),
+ // 7 "deadzspd" (holes in z in SPD)
+ // Also given are the coordinates of the crossing point of track and module
+ // (in the local module ref. system)
+ // WARNING: THIS METHOD HAS TO BE SYNCHRONIZED WITH AliESDtrack::GetITSModuleIndexInfo()!
+ //----------------------------------------------------------------------
+
+
+ if(fModule[ilayer]==-1) {
+ AliError("fModule was not set !");
+ idet = -1;
+ status=0;
+ xloc=-99.; zloc=-99.;
+ return kFALSE;
+ }
+
+ Int_t module = fModule[ilayer];
+
+ idet = Int_t(module/1000000);
+
+ module -= idet*1000000;
+
+ status = Int_t(module/100000);
+
+ module -= status*100000;
+
+ Int_t signs = Int_t(module/10000);
+
+ module-=signs*10000;
+
+ Int_t xInt = Int_t(module/100);
+ module -= xInt*100;
+
+ Int_t zInt = module;
+
+ if(signs==1) { xInt*=1; zInt*=1; }
+ if(signs==2) { xInt*=1; zInt*=-1; }
+ if(signs==3) { xInt*=-1; zInt*=1; }
+ if(signs==4) { xInt*=-1; zInt*=-1; }
+
+ xloc = 0.1*(Float_t)xInt;
+ zloc = 0.1*(Float_t)zInt;
+
+ if(status==4) idet = -1;
+
+ return kTRUE;