LCOV - code coverage report
Current view: top level - ITS/ITSbase - AliITSDDLModuleMapSDD.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 20 65 30.8 %
Date: 2016-06-14 17:26:59 Functions: 6 15 40.0 %

          Line data    Source code
       1             : /**************************************************************************
       2             :  * Copyright(c) 2007-2009, 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             : ///////////////////////////////////////////////////////////////////
      19             : //                                                               //
      20             : // Implementation of the class for SDD DDL mapping in the OCDB   //
      21             : // Origin: F.Prino, Torino, prino@to.infn.it                     //
      22             : //                                                               //
      23             : ///////////////////////////////////////////////////////////////////
      24             : 
      25             : #include "AliITSDDLModuleMapSDD.h"
      26             : #include "AliLog.h"
      27             : 
      28         118 : ClassImp(AliITSDDLModuleMapSDD)
      29             : 
      30             : 
      31             : //______________________________________________________________________
      32          80 : AliITSDDLModuleMapSDD::AliITSDDLModuleMapSDD():TObject(){
      33             :   // default constructor
      34          20 :   SetDefaultMap();
      35          40 : }
      36             : //______________________________________________________________________
      37           0 : AliITSDDLModuleMapSDD::AliITSDDLModuleMapSDD(Char_t *ddlmapfile):TObject(){
      38             :   // constructor used to read DDL map  from text file
      39           0 :   ReadDDLModuleMap(ddlmapfile);
      40           0 : }
      41             : //______________________________________________________________________
      42             : void AliITSDDLModuleMapSDD::SetDefaultMap(){
      43             :   // Fill DDL map according to the default connection scheme
      44          40 :   Int_t defaultmap[kDDLsNumber][kModulesPerDDL] = 
      45             :     {
      46             :  
      47             :       {240,241,242,246,247,248,252,253,254,258,259,260},
      48             :       {264,265,266,270,271,272,276,277,278,282,283,284},
      49             :       {288,289,290,294,295,296,300,301,302,306,307,308},
      50             :       {312,313,314,318,319,320,-1,-1,-1,-1,-1,-1},
      51             :       {243,244,245,249,250,251,255,256,257,261,262,263},
      52             :       {267,268,269,273,274,275,279,280,281,285,286,287},
      53             :       {291,292,293,297,298,299,303,304,305,309,310,311},
      54             :       {315,316,317,321,322,323,-1,-1,-1,-1,-1,-1},
      55             :       {324,325,326,327,332,333,334,335,340,341,342,343},
      56             :       {348,349,350,351,356,357,358,359,364,365,366,367},
      57             :       {372,373,374,375,380,381,382,383,388,389,390,391},
      58             :       {396,397,398,399,404,405,406,407,412,413,414,415},
      59             :       {420,421,422,423,428,429,430,431,436,437,438,439},
      60             :       {444,445,446,447,452,453,454,455,460,461,462,463},
      61             :       {468,469,470,471,476,477,478,479,484,485,486,487},
      62             :       {492,493,494,495,-1,-1,-1,-1,-1,-1,-1,-1},
      63             :       {328,329,330,331,336,337,338,339,344,345,346,347},
      64             :       {352,353,354,355,360,361,362,363,368,369,370,371},
      65             :       {376,377,378,379,384,385,386,387,392,393,394,395},
      66             :       {400,401,402,403,408,409,410,411,416,417,418,419},
      67             :       {424,425,426,427,432,433,434,435,440,441,442,443},
      68             :       {448,449,450,451,456,457,458,459,464,465,466,467},
      69             :       {472,473,474,475,480,481,482,483,488,489,490,491},
      70             :       {496,497,498,499,-1,-1,-1,-1,-1,-1,-1,-1}
      71             :     };
      72             : 
      73        1000 :   for(Int_t iddl=0;iddl<kDDLsNumber;iddl++){
      74       12480 :     for(Int_t ichan=0; ichan<kModulesPerDDL; ichan++){
      75        5760 :       fDDLModuleMap[iddl][ichan]=defaultmap[iddl][ichan];
      76             :     }
      77             :   }
      78          20 : }
      79             : 
      80             : //______________________________________________________________________
      81             : void AliITSDDLModuleMapSDD::SetDec07part1Map(){
      82             :   // Fill DDL map according to dec07 cosmic run connections (run<14435)
      83           0 :   Int_t dec07part1map[kDDLsNumber][kModulesPerDDL] = 
      84             :     {
      85             :       {328,329,330,331,336,337,338,339,344,345,346,347}, //Crate TOP
      86             :       {352,353,354,355,-1,-1,-1,-1,-1,-1,-1,-1},
      87             :       {376,377,378,379,384,385,386,387,408,409,410,411},
      88             :       {400,401,402,403,392,393,394,395,416,417,418,419},
      89             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
      90             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
      91             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
      92             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
      93             :     
      94             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},   //Crate MED
      95             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
      96             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
      97             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
      98             :       {368,369,370,371,360,361,362,363,-1,-1,-1,-1},
      99             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     100             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     101             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     102             :     
     103             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},   //Crate BOT
     104             :       {240,241,242,246,247,248,-1,-1,-1,-1,-1,-1},
     105             :       {-1,-1,-1,-1,-1,-1,264,265,266,270,271,272},
     106             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     107             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     108             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     109             :       {267,268,269,273,274,275,-1,-1,-1,-1,-1,-1},
     110             :       {243,244,245,249,250,251,255,256,257,261,262,263}
     111             :     };
     112           0 :   for(Int_t iddl=0;iddl<kDDLsNumber;iddl++){
     113           0 :     for(Int_t ichan=0; ichan<kModulesPerDDL; ichan++){
     114           0 :       fDDLModuleMap[iddl][ichan]=dec07part1map[iddl][ichan];
     115             :     }
     116             :   }
     117           0 : }
     118             : 
     119             : 
     120             : //______________________________________________________________________
     121             : void AliITSDDLModuleMapSDD::SetDec07part2Map(){
     122             :   // Fill DDL map according to dec07 cosmic run connection (run>14435)
     123           0 :   Int_t dec07part2map[kDDLsNumber][kModulesPerDDL] = 
     124             :     {
     125             :       {328,329,330,331,336,337,338,339,344,345,346,347}, //Crate TOP
     126             :       {352,353,354,355,360,361,362,363,368,369,370,371},
     127             :       {376,377,378,379,384,385,386,387,408,409,410,411},
     128             :       {400,401,402,403,392,393,394,395,416,417,418,419},
     129             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     130             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     131             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     132             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     133             :       
     134             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},   //Crate MED
     135             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     136             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     137             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     138             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     139             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     140             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     141             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     142             :       
     143             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},   //Crate BOT
     144             :       {240,241,242,246,247,248,-1,-1,-1,-1,-1,-1},
     145             :       {-1,-1,-1,-1,-1,-1,264,265,266,270,271,272},
     146             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     147             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     148             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     149             :       {267,268,269,273,274,275,-1,-1,-1,-1,-1,-1},
     150             :       {243,244,245,249,250,251,255,256,257,261,262,263}
     151             :     };
     152           0 :   for(Int_t iddl=0;iddl<kDDLsNumber;iddl++){
     153           0 :     for(Int_t ichan=0; ichan<kModulesPerDDL; ichan++){
     154           0 :       fDDLModuleMap[iddl][ichan]=dec07part2map[iddl][ichan];
     155             :     }
     156             :   }
     157           0 : }
     158             : 
     159             : //______________________________________________________________________
     160             : void AliITSDDLModuleMapSDD::SetFeb08Map(){
     161             :   // Fill DDL map according to feb08 cosmic run connection 
     162           0 :   Int_t feb08map[kDDLsNumber][kModulesPerDDL] = 
     163             :     {
     164             :       {328,329,330,331,336,337,338,339,344,345,346,347}, //Crate TOP
     165             :       {352,353,354,355,360,361,362,363,368,369,370,371},
     166             :       {376,377,378,379,384,385,386,387,392,393,394,395},
     167             :       {400,401,402,403,408,409,410,411,416,417,418,419},
     168             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     169             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     170             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     171             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     172             :       
     173             :       {324,325,326,327,332,333,334,335,340,341,342,343},   //Crate MED
     174             :       {348,349,350,351,356,357,358,359,364,365,366,367},
     175             :       {372,373,374,375,380,381,382,383,388,389,390,391},
     176             :       {396,397,398,399,404,405,406,407,412,413,414,415},
     177             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     178             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     179             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     180             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     181             :       
     182             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},   //Crate BOT
     183             :       {240,241,242,246,247,248,-1,-1,-1,-1,-1,-1},
     184             :       {252,253,254,-1,-1,-1,264,265,266,270,271,272},
     185             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     186             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     187             :       {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     188             :       {273,274,275,267,268,269,-1,-1,-1,-1,-1,-1},
     189             :       {243,244,245,249,250,251,255,256,257,261,262,263}
     190             :     };
     191           0 :   for(Int_t iddl=0;iddl<kDDLsNumber;iddl++){
     192           0 :     for(Int_t ichan=0; ichan<kModulesPerDDL; ichan++){
     193           0 :       fDDLModuleMap[iddl][ichan]=feb08map[iddl][ichan];
     194             :     }
     195             :   }
     196           0 : }
     197             : 
     198             : //______________________________________________________________________
     199             : void AliITSDDLModuleMapSDD::SetJun08Map(){
     200             :   // Fill DDL map according to jun08 cosmic run connection 
     201           0 :   Int_t jun08map[kDDLsNumber][kModulesPerDDL] = 
     202             :     {
     203             :       {328,329,330,331,336,337,338,339,344,345,346,347}, //Crate TOP
     204             :       {352,353,354,355,360,361,362,363,368,369,370,371},
     205             :       {376,377,378,379,384,385,386,387,392,393,394,395},
     206             :       {400,401,402,403,408,409,410,411,416,417,418,419},
     207             :       {424,425,426,427,432,433,434,435,440,441,442,443},
     208             :       {448,449,450,451,456,457,458,459,464,465,466,467},
     209             :       {472,473,474,475,480,481,482,483,488,489,490,491},
     210             :       {496,497,498,499,-1,-1,-1,-1,-1,-1,-1,-1},
     211             :       {324,325,326,327,332,333,334,335,340,341,342,343},//Crate MED
     212             :       {348,349,350,351,356,357,358,359,364,365,366,367},
     213             :       {372,373,374,375,380,381,382,383,388,389,390,391},
     214             :       {396,397,398,399,404,405,406,407,412,413,414,415},
     215             :       {420,421,422,423,428,429,430,431,436,437,438,439},
     216             :       {444,445,446,447,452,453,454,455,460,461,462,463},
     217             :       {468,469,470,471,476,477,478,479,484,485,486,487},
     218             :       {492,493,494,495,-1,-1,-1,-1,-1,-1,-1,-1},
     219             :       {240,241,242,246,247,248,252,253,254,276,277,278},//Crate BOT
     220             :       {264,265,266,270,271,272,258,259,260,282,283,284},
     221             :       {288,289,290,294,295,296,300,301,302,306,307,308},
     222             :       {312,313,314,318,319,320,-1,-1,-1,-1,-1,-1},
     223             :       {315,316,317,321,322,323,-1,-1,-1,-1,-1,263},
     224             :       {291,292,293,297,298,299,303,304,305,309,310,311},
     225             :       {267,268,269,273,274,275,279,280,281,285,286,287},
     226             :       {243,244,245,249,250,251,255,256,257,261,262,-1},
     227             :     };
     228           0 :   for(Int_t iddl=0;iddl<kDDLsNumber;iddl++){
     229           0 :     for(Int_t ichan=0; ichan<kModulesPerDDL; ichan++){
     230           0 :       fDDLModuleMap[iddl][ichan]=jun08map[iddl][ichan];
     231             :     }
     232             :   }
     233           0 : }
     234             : //______________________________________________________________________
     235             : void AliITSDDLModuleMapSDD::SetJun09Map(){
     236             :   // Fill DDL map according to 2009 cosmic run connection 
     237           0 :   Int_t jun09map[kDDLsNumber][kModulesPerDDL] = 
     238             :     {
     239             :       {336,337,338,339,328,329,330,331,344,345,346,347}, //Crate TOP
     240             :       {352,353,354,355,360,361,362,363,368,369,370,371},
     241             :       {376,377,378,379,384,385,386,387,392,393,394,395},
     242             :       {400,401,402,403,408,409,410,411,416,417,418,419},
     243             :       {424,425,426,427,432,433,434,435,440,441,442,443},
     244             :       {448,449,450,451,456,457,458,459,464,465,466,467},
     245             :       {472,474,473,475,480,481,482,483,488,489,490,491},
     246             :       {496,497,498,499,-1,-1,-1,-1,-1,-1,-1,-1},
     247             :       {324,325,326,327,332,333,334,335,340,341,342,343},//Crate MED
     248             :       {348,349,350,351,356,357,358,359,364,365,366,367},
     249             :       {372,373,374,375,380,381,382,383,388,389,390,391},
     250             :       {396,397,398,399,404,405,406,407,412,413,414,415},
     251             :       {420,421,422,423,428,429,430,431,436,437,438,439},
     252             :       {444,445,446,447,452,453,454,455,460,461,462,463},
     253             :       {468,469,470,471,476,477,478,479,484,485,486,487},
     254             :       {492,493,494,495,-1,-1,-1,-1,-1,-1,-1,-1},
     255             :       {240,241,242,246,247,248,252,253,254,276,277,278},//Crate BOT
     256             :       {264,265,266,270,271,272,258,259,260,282,283,284},
     257             :       {288,289,290,294,295,296,300,301,302,306,307,308},
     258             :       {312,313,314,318,319,320,-1,-1,-1,-1,-1,-1},
     259             :       {315,316,317,323,322,321,-1,-1,-1,-1,-1,263},
     260             :       {291,292,293,297,298,299,303,304,305,309,310,311},
     261             :       {273,274,275,267,268,269,279,280,281,285,286,287},
     262             :       {243,244,245,249,250,251,255,256,257,261,262,-1},
     263             :     };
     264           0 :   for(Int_t iddl=0;iddl<kDDLsNumber;iddl++){
     265           0 :     for(Int_t ichan=0; ichan<kModulesPerDDL; ichan++){
     266           0 :       fDDLModuleMap[iddl][ichan]=jun09map[iddl][ichan];
     267             :     }
     268             :   }
     269           0 : }
     270             : 
     271             : //______________________________________________________________________
     272             : void AliITSDDLModuleMapSDD::SetDDLMap(AliITSDDLModuleMapSDD* ddlmap){
     273             : // Fill DDL map
     274         306 :   for(Int_t iddl=0;iddl<kDDLsNumber;iddl++){
     275        3744 :     for(Int_t ichan=0; ichan<kModulesPerDDL; ichan++){
     276        1728 :       fDDLModuleMap[iddl][ichan]=ddlmap->GetModuleNumber(iddl,ichan);
     277             :     }
     278             :   }
     279           6 : }
     280             : //______________________________________________________________________
     281             : void AliITSDDLModuleMapSDD::FindInDDLMap(Int_t modIndex, Int_t &iDDL, Int_t &iCarlos) const {
     282             :   // finds DDL and carlos number for a given module
     283       13156 :   for(Int_t iddl=0;iddl<kDDLsNumber;iddl++){
     284      163034 :     for(Int_t ichan=0; ichan<kModulesPerDDL; ichan++){
     285       72820 :       if(fDDLModuleMap[iddl][ichan]==modIndex){
     286         520 :         iDDL=iddl;
     287         520 :         iCarlos=ichan;
     288         520 :         return;
     289             :       }
     290             :     }
     291             :   }
     292           0 :   AliWarning("Module not found in DDL map");
     293           0 :   iDDL=-1;
     294           0 :   iCarlos=-1;
     295           0 :   return;
     296         520 : }
     297             : //______________________________________________________________________
     298             : void AliITSDDLModuleMapSDD::ReadDDLModuleMap(Char_t *ddlmapfile){
     299             :   // Fill DDL map from ASCCI data file
     300             :   FILE *fil;
     301           0 :   fil=fopen(ddlmapfile,"r");  
     302           0 :   Int_t mod;
     303           0 :   for(Int_t iddl=0;iddl<kDDLsNumber;iddl++){
     304           0 :     for(Int_t ichan=0; ichan<kModulesPerDDL; ichan++){
     305           0 :       if(fscanf(fil,"%d",&mod)<1)AliError(Form("Not able to read file %s ",ddlmapfile));
     306           0 :       fDDLModuleMap[iddl][ichan]=mod;
     307             :     }
     308             :   }
     309           0 :   fclose(fil);
     310           0 : }
     311             : 
     312             : //______________________________________________________________________
     313             : void AliITSDDLModuleMapSDD::PrintDDLMap() const {
     314             :   // printout DDL map
     315           0 :   for(Int_t iddl=0;iddl<kDDLsNumber;iddl++){
     316           0 :     for(Int_t ichan=0; ichan<kModulesPerDDL; ichan++){
     317           0 :       printf("%d  ",fDDLModuleMap[iddl][ichan]);
     318             :     }
     319           0 :     printf("\n");
     320             :   }
     321           0 : }

Generated by: LCOV version 1.11