LCOV - code coverage report
Current view: top level - VZERO/VZERObase - AliVZEROTriggerData.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 49 311 15.8 %
Date: 2016-06-14 17:26:59 Functions: 7 50 14.0 %

          Line data    Source code
       1             : 
       2             : /**************************************************************************
       3             :  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       4             :  *                                                                        *
       5             :  * Author: The ALICE Off-line Project.                                    *
       6             :  * Contributors are mentioned in the code where appropriate.              *
       7             :  *                                                                        *
       8             :  * Permission to use, copy, modify and distribute this software and its   *
       9             :  * documentation strictly for non-commercial purposes is hereby granted   *
      10             :  * without fee, provided that the above copyright notice appears in all   *
      11             :  * copies and that both the copyright notice and this permission notice   *
      12             :  * appear in the supporting documentation. The authors make no claims     *
      13             :  * about the suitability of this software for any purpose. It is          *
      14             :  * provided "as is" without express or implied warranty.                  *
      15             :  **************************************************************************/
      16             : 
      17             : // Class AliVZEROTriggerData
      18             : // -------------------------
      19             : // Retrieves and hold the FEE parameters
      20             : // The parameters are recieved from the shuttle 
      21             : // AliVZEROTriggerData is then used in the AliVZEROTriggerSimulator
      22             : //
      23             : 
      24             : #include <TObjString.h>
      25             : #include <TMap.h>
      26             : 
      27             : #include "AliLog.h"
      28             : #include "AliDCSValue.h"
      29             : #include "AliVZEROTriggerData.h"
      30             : 
      31          44 : ClassImp(AliVZEROTriggerData)
      32             : //________________________________________________________________
      33             : 
      34        3813 : AliVZEROTriggerData::AliVZEROTriggerData() :
      35           3 :         TNamed(),
      36           3 :         fBBAThreshold(0),
      37           3 :         fBBCThreshold(0) ,  
      38           3 :         fBGAThreshold(0) ,  
      39           3 :         fBGCThreshold(0) ,  
      40           3 :         fBBAForBGThreshold(0) ,  
      41           3 :         fBBCForBGThreshold(0) ,  
      42           3 :         fCentralityVOAThrLow(0) ,  
      43           3 :         fCentralityVOAThrHigh(0) , 
      44           3 :         fCentralityVOCThrLow(0) ,  
      45           3 :         fCentralityVOCThrHigh(0) , 
      46           3 :         fMultV0AThrLow(0) ,  
      47           3 :         fMultV0AThrHigh(0) , 
      48           3 :         fMultV0CThrLow(0) ,  
      49           3 :         fMultV0CThrHigh(0),
      50           3 :         fRun(0),
      51           3 :         fStartTime(0),
      52           3 :         fEndTime(0),
      53           3 :         fIsProcessed(kFALSE)    
      54             : 
      55          15 : {
      56             :         // default constructor
      57          54 :         for(int i=0; i<kNCIUBoards ;i++) {
      58          24 :                 fClk1Win1[i] = fClk1Win2[i] = 0;
      59          24 :                 fDelayClk1Win1[i] = fDelayClk1Win2[i] = 0;
      60          24 :                 fClk2Win1[i] = fClk2Win2[i] = 0;
      61          24 :                 fDelayClk2Win1[i] = fDelayClk2Win2[i] = 0;
      62          24 :                 fLatchWin1[i] = fLatchWin2[i] = 0;
      63          24 :                 fResetWin1[i] = fResetWin2[i] = 0;
      64          24 :                 fPedestalSubtraction[i] = kFALSE;
      65         432 :                 for(Int_t j = 0; j < kNChannels; ++j) {
      66         192 :                   fEnableCharge[i][j] = fEnableTiming[i][j] = kFALSE;
      67         192 :                   fDiscriThr[i][j] = fDelayHit[i][j] = 0;
      68         192 :                   fPedestalOdd[i][j] = fPedestalEven[i][j] = 0;
      69         192 :                   fPedestalCutOdd[i][j] = fPedestalCutEven[i][j] = 0;
      70             :                 }
      71             :         }
      72          36 :         for(Int_t i = 0; i < kNTriggerOutputs; ++i) fTriggerSelected[i] = 0;
      73           6 : }
      74             : //________________________________________________________________
      75           0 : AliVZEROTriggerData::AliVZEROTriggerData(Int_t nRun, UInt_t startTime, UInt_t endTime) :
      76           0 :         TNamed(),
      77           0 :         fBBAThreshold(0),
      78           0 :         fBBCThreshold(0) ,  
      79           0 :         fBGAThreshold(0) ,  
      80           0 :         fBGCThreshold(0) ,  
      81           0 :         fBBAForBGThreshold(0) ,  
      82           0 :         fBBCForBGThreshold(0) ,  
      83           0 :         fCentralityVOAThrLow(0) ,  
      84           0 :         fCentralityVOAThrHigh(0) , 
      85           0 :         fCentralityVOCThrLow(0) ,  
      86           0 :         fCentralityVOCThrHigh(0) , 
      87           0 :         fMultV0AThrLow(0) ,  
      88           0 :         fMultV0AThrHigh(0) , 
      89           0 :         fMultV0CThrLow(0) ,  
      90           0 :         fMultV0CThrHigh(0),
      91           0 :         fRun(nRun),
      92           0 :         fStartTime(startTime),
      93           0 :         fEndTime(endTime),
      94           0 :         fIsProcessed(kFALSE)
      95           0 : {
      96             :         // Constructor
      97           0 :         for(int i=0; i<kNCIUBoards ;i++) {
      98           0 :                 fClk1Win1[i] = fClk1Win2[i] = 0;
      99           0 :                 fDelayClk1Win1[i] = fDelayClk1Win2[i] = 0;
     100           0 :                 fClk2Win1[i] = fClk2Win2[i] = 0;
     101           0 :                 fDelayClk2Win1[i] = fDelayClk2Win2[i] = 0;
     102           0 :                 fLatchWin1[i] = fLatchWin2[i] = 0;
     103           0 :                 fResetWin1[i] = fResetWin2[i] = 0;
     104           0 :                 fPedestalSubtraction[i] = kFALSE;
     105           0 :                 for(Int_t j = 0; j < kNChannels; ++j) {
     106           0 :                   fEnableCharge[i][j] = fEnableTiming[i][j] = kFALSE;
     107           0 :                   fDiscriThr[i][j] = fDelayHit[i][j] = 0;
     108           0 :                   fPedestalOdd[i][j] = fPedestalEven[i][j] = 0;
     109           0 :                   fPedestalCutOdd[i][j] = fPedestalCutEven[i][j] = 0;
     110             :                 }
     111             :         }
     112           0 :         for(Int_t i = 0; i < kNTriggerOutputs; ++i) fTriggerSelected[i] = 0;
     113             : 
     114           0 :         TString namst = "VZERO_Trigger_FEE";
     115           0 :         SetName(namst.Data());
     116           0 :         SetTitle(namst.Data());
     117             :         
     118           0 : }
     119             : 
     120             : //________________________________________________________________
     121           0 : AliVZEROTriggerData::~AliVZEROTriggerData(){
     122             :         // destructor
     123           0 : }
     124             : //_____________________________________________________________________________
     125             : void AliVZEROTriggerData::FillData(AliVZERODataFEE * data){
     126             :         // Set all parameters from the data get by the shuttle
     127           0 :         TMap * params = data->GetParameters();
     128           0 :         TIter iter(params);     
     129             :         TObjString* aliasName;
     130             :         
     131           0 :         while ((  aliasName = (TObjString*) iter.Next() ))  {
     132           0 :                 AliDCSValue* aValue = (AliDCSValue*) params->GetValue(aliasName);
     133             :                 Int_t val;
     134           0 :                 if(aValue) {
     135           0 :                         val = aValue->GetUInt();
     136           0 :                         AliInfo(Form("%s : %d",aliasName->String().Data(), val));
     137           0 :                         SetParameter(aliasName->String(),val);
     138           0 :                 }
     139             :         }       
     140           0 : }
     141             : 
     142             : //_____________________________________________________________________________
     143             : void AliVZEROTriggerData::SetParameter(TString name, Int_t val){
     144             :         // Set given parameter
     145             :         
     146           0 :         Int_t iBoard = -1;
     147           0 :         Int_t iChannel = -1;
     148             : 
     149           0 :         TSeqCollection* nameSplit = name.Tokenize("/");
     150           0 :         TObjString * boardName = (TObjString *)nameSplit->At(2);
     151           0 :         if(!boardName->String().Contains("CCIU")) sscanf(boardName->String().Data(),"CIU%d",&iBoard);
     152             :         
     153           0 :         TString paramName = ((TObjString *)nameSplit->At(3))->String();
     154           0 :         Char_t channel[2] ; channel[1] = '\0';
     155           0 :         channel[0] = paramName[paramName.Sizeof()-2];
     156           0 :         sscanf(channel,"%d",&iChannel);
     157             :         
     158           0 :         if(name.Contains("DelayClk1Win1")) SetDelayClk1Win1((UShort_t) val,iBoard);
     159           0 :         else if(name.Contains("Clk1Win1")) SetClk1Win1((UShort_t) val,iBoard);
     160           0 :         else if(name.Contains("DelayClk1Win2")) SetDelayClk1Win2((UShort_t) val,iBoard);
     161           0 :         else if(name.Contains("Clk1Win2")) SetClk1Win2((UShort_t) val,iBoard);
     162           0 :         else if(name.Contains("DelayClk2Win1")) SetDelayClk2Win1((UShort_t) val,iBoard);
     163           0 :         else if(name.Contains("Clk2Win1")) SetClk2Win1((UShort_t) val,iBoard);
     164           0 :         else if(name.Contains("DelayClk2Win2")) SetDelayClk2Win2((UShort_t) val,iBoard);
     165           0 :         else if(name.Contains("Clk2Win2")) SetClk2Win2((UShort_t) val,iBoard);
     166           0 :         else if(name.Contains("LatchWin1")) SetLatchWin1((UShort_t) val,iBoard);
     167           0 :         else if(name.Contains("LatchWin2")) SetLatchWin2((UShort_t) val,iBoard);
     168           0 :         else if(name.Contains("ResetWin1")) SetResetWin1((UShort_t) val,iBoard);
     169           0 :         else if(name.Contains("ResetWin2")) SetResetWin2((UShort_t) val,iBoard);
     170           0 :         else if(name.Contains("PedestalSubtraction")) SetPedestalSubtraction((Bool_t) val,iBoard);
     171           0 :         else if(name.Contains("BBAThreshold")) SetBBAThreshold((UShort_t) val);
     172           0 :         else if(name.Contains("BBCThreshold")) SetBBCThreshold((UShort_t) val);
     173           0 :         else if(name.Contains("BGAThreshold")) SetBGAThreshold((UShort_t) val);
     174           0 :         else if(name.Contains("BGCThreshold")) SetBGCThreshold((UShort_t) val);
     175           0 :         else if(name.Contains("BBAForBGThreshold")) SetBBAForBGThreshold((UShort_t) val);
     176           0 :         else if(name.Contains("BBCForBGThreshold")) SetBBCForBGThreshold((UShort_t) val);
     177           0 :         else if(name.Contains("CentralityV0AThrLow")) SetCentralityV0AThrLow((UShort_t) val);
     178           0 :         else if(name.Contains("CentralityV0AThrHigh")) SetCentralityV0AThrHigh((UShort_t) val);
     179           0 :         else if(name.Contains("CentralityV0CThrLow")) SetCentralityV0CThrLow((UShort_t) val);
     180           0 :         else if(name.Contains("CentralityV0CThrHigh")) SetCentralityV0CThrHigh((UShort_t) val);
     181           0 :         else if(name.Contains("MultV0AThrLow")) SetMultV0AThrLow((UShort_t) val);
     182           0 :         else if(name.Contains("MultV0AThrHigh")) SetMultV0AThrHigh((UShort_t) val);
     183           0 :         else if(name.Contains("MultV0CThrLow")) SetMultV0CThrLow((UShort_t) val);
     184           0 :         else if(name.Contains("MultV0CThrHigh")) SetMultV0CThrHigh((UShort_t) val);
     185           0 :         else if(name.Contains("TriggerSelect")) SetTriggerSelected((UShort_t) val, iChannel-1 );
     186           0 :         else if(name.Contains("EnableCharge")) SetEnableCharge((Bool_t) val, iBoard , iChannel-1);
     187           0 :         else if(name.Contains("EnableTiming")) SetEnableTiming((Bool_t) val, iBoard , iChannel-1);
     188           0 :         else if(name.Contains("DiscriThr")) SetDiscriThr((UShort_t) val, iBoard, iChannel-1);
     189           0 :         else if(name.Contains("DelayHit")) SetDelayHit((UShort_t) val, iBoard, iChannel-1);
     190           0 :         else if(name.Contains("PedOdd")) SetPedestal((UShort_t) val, 1, iBoard, iChannel-1);
     191           0 :         else if(name.Contains("PedEven")) SetPedestal((UShort_t) val, 0, iBoard, iChannel-1);
     192           0 :         else if(name.Contains("PedCutOdd")) SetPedestalCut((UShort_t) val, 1, iBoard, iChannel-1);
     193           0 :         else if(name.Contains("PedCutEven")) SetPedestalCut((UShort_t) val, 0, iBoard, iChannel-1);
     194           0 :         else AliError(Form("No Setter found for FEE parameter : %s",name.Data()));
     195             :         //
     196           0 :         delete nameSplit;
     197           0 : }
     198             : //________________________________________________________________
     199             : void AliVZEROTriggerData::SetPedestalCut(UShort_t val,Int_t integrator, Int_t board, Int_t channel)
     200             : {
     201             :         // Set Pedestal Cut of individual channel 
     202           0 :         if((board>=0 && board<kNCIUBoards) && (channel>=0 && channel<kNChannels)) {
     203           0 :                 if(integrator) fPedestalCutOdd[board][channel] = val;
     204           0 :                 else fPedestalCutEven[board][channel] = val;
     205           0 :         } else AliError(Form("Impossible to write at : Board %d ; Channel %d",board,channel));
     206           0 : }
     207             : //________________________________________________________________
     208             : UShort_t AliVZEROTriggerData::GetPedestalCut(Int_t integrator, Int_t board, Int_t channel)
     209             : {
     210             :         // Get Pedestal Cut of individual channel 
     211        1536 :         if((board>=0 && board<kNCIUBoards) && (channel>=0 && channel<kNChannels)) {
     212         768 :                 if(integrator) return(fPedestalCutOdd[board][channel]);
     213         768 :                 else return(fPedestalCutEven[board][channel]);
     214           0 :         }else AliError(Form("Impossible to read at : Board %d ; Channel %d",board,channel));
     215           0 :         return 0;
     216         768 : }
     217             : //________________________________________________________________
     218             : void AliVZEROTriggerData::SetPedestal(UShort_t val, Int_t integrator, Int_t board, Int_t channel)
     219             : {
     220             :         // Set Pedestal of individual channel 
     221           0 :         if((board>=0 && board<kNCIUBoards) && (channel>=0 && channel<kNChannels)) {
     222           0 :                 if(integrator) fPedestalOdd[board][channel] = val;
     223           0 :                 else fPedestalEven[board][channel] = val;
     224           0 :         } else AliError(Form("Impossible to write at : Board %d ; Channel %d ; Integrator %d ",board,channel,integrator));
     225           0 : }
     226             : //________________________________________________________________
     227             : UShort_t AliVZEROTriggerData::GetPedestal(Int_t integrator, Int_t board, Int_t channel)
     228             : {
     229             :         // Get Pedestal of individual channel 
     230        1088 :         if((board>=0 && board<kNCIUBoards) && (channel>=0 && channel<kNChannels)) {
     231         544 :                 if(integrator) return(fPedestalOdd[board][channel]);
     232         544 :                 else return(fPedestalEven[board][channel]);
     233           0 :         } else AliError(Form("Impossible to read at : Board %d ; Channel %d",board,channel));
     234           0 :         return 0;
     235         544 : }
     236             : //________________________________________________________________
     237             : void AliVZEROTriggerData::SetDelayHit(UShort_t val,Int_t board, Int_t channel)
     238             : {
     239             :         // Set Delay of individual channel 
     240           0 :         if((board>=0 && board<kNCIUBoards) && (channel>=0 && channel<kNChannels)) fDelayHit[board][channel] = val;
     241           0 :         else AliError(Form("Impossible to write at : Board %d ; Channel %d",board,channel));
     242           0 : }
     243             : //________________________________________________________________
     244             : UShort_t AliVZEROTriggerData::GetDelayHit(Int_t board, Int_t channel)
     245             : {
     246             :         // Get Delay of individual channel 
     247           0 :         if((board>=0 && board<kNCIUBoards) && (channel>=0 && channel<kNChannels)) return(fDelayHit[board][channel]);
     248           0 :         else AliError(Form("Impossible to read at : Board %d ; Channel %d",board,channel));
     249           0 :         return 0;
     250           0 : }
     251             : //________________________________________________________________
     252             : void AliVZEROTriggerData::SetDiscriThr(UShort_t val,Int_t board, Int_t channel)
     253             : {
     254             :         // Set discriminator threshold
     255           0 :         if((board>=0 && board<kNCIUBoards) && (channel>=0 && channel<kNChannels)) fDiscriThr[board][channel] = val;
     256           0 :         else AliError(Form("Impossible to write at : Board %d ; Channel %d",board,channel));
     257           0 : }
     258             : //________________________________________________________________
     259             : UShort_t AliVZEROTriggerData::GetDiscriThr(Int_t board, Int_t channel)
     260             : {
     261             :         // Get discriminator threshold
     262           0 :         if((board>=0 && board<kNCIUBoards) && (channel>=0 && channel<kNChannels)) return(fDiscriThr[board][channel]);
     263           0 :         else AliError(Form("Impossible to read at : Board %d ; Channel %d",board,channel));
     264           0 :         return 0;
     265           0 : }
     266             : //________________________________________________________________
     267             : void AliVZEROTriggerData::SetEnableCharge(Bool_t val,Int_t board, Int_t channel)
     268             : {
     269             :         // Set the channels enabled for Charge triggers
     270           0 :         if((board>=0 && board<kNCIUBoards) && (channel>=0 && channel<kNChannels)) fEnableCharge[board][channel] = val;
     271           0 :         else AliError(Form("Impossible to write at : Board %d ; Channel %d",board,channel));
     272           0 : }
     273             : //________________________________________________________________
     274             : Bool_t AliVZEROTriggerData::GetEnableCharge(Int_t board, Int_t channel)
     275             : {
     276             :         // Get the channels enabled for Charge triggers
     277        2304 :         if((board>=0 && board<kNCIUBoards) && (channel>=0 && channel<kNChannels)) return(fEnableCharge[board][channel]);
     278           0 :         else AliError(Form("Impossible to read at : Board %d ; Channel %d",board,channel));
     279           0 :         return kFALSE;
     280         768 : }
     281             : //________________________________________________________________
     282             : void AliVZEROTriggerData::SetEnableTiming(Bool_t val,Int_t board, Int_t channel)
     283             : {
     284             :         // Set the channels enabled for Timing triggers
     285           0 :         if((board>=0 && board<kNCIUBoards) && (channel>=0 && channel<kNChannels)) fEnableTiming[board][channel] = val;
     286           0 :         else AliError(Form("Impossible to write at : Board %d ; Channel %d",board,channel));
     287           0 : }
     288             : //________________________________________________________________
     289             : Bool_t AliVZEROTriggerData::GetEnableTiming(Int_t board, Int_t channel)
     290             : {
     291             :         // Get the channels enabled for Timing triggers
     292        2304 :         if((board>=0 && board<kNCIUBoards) && (channel>=0 && channel<kNChannels)) return(fEnableTiming[board][channel]);
     293           0 :         else AliError(Form("Impossible to read at : Board %d ; Channel %d",board,channel));
     294           0 :         return kFALSE;
     295         768 : }
     296             : //________________________________________________________________
     297             : void AliVZEROTriggerData::SetTriggerSelected(UShort_t trigger, Int_t output)
     298             : {
     299             :         // Set the trigger selected on the outputs to CTP
     300           0 :         if(output>=0 && output<kNTriggerOutputs) fTriggerSelected[output] = trigger;
     301           0 :         else AliError(Form("Trigger output number %d not valid",output));
     302           0 : }
     303             : 
     304             : //________________________________________________________________
     305             : void AliVZEROTriggerData::SetClk1Win1(UShort_t* clks)
     306             : {
     307             :         // Set Win clock of BB
     308           0 :         if(clks) for(int t=0; t<kNCIUBoards; t++) SetClk1Win1(clks[t],t);
     309           0 :         else AliError("Profil Clock1 Win1 Not defined.");
     310           0 : }
     311             : //________________________________________________________________
     312             : void AliVZEROTriggerData::SetClk2Win1(UShort_t* clks)
     313             : {
     314             :         // Set Win clock of BB
     315           0 :         if(clks) for(int t=0; t<kNCIUBoards; t++) SetClk2Win1(clks[t],t);
     316           0 :         else AliError("Profil Clock2 Win1 Not defined.");
     317           0 : }
     318             : //________________________________________________________________
     319             : void AliVZEROTriggerData::SetClk1Win1(UShort_t clk, Int_t board)
     320             : {
     321             :         // Set Win clock of BB
     322           0 :         if((board>=0) && (board<kNCIUBoards)) {
     323           0 :                 fClk1Win1[board] = clk;
     324           0 :                 if(!IsClkValid(clk)) AliWarning(Form("Profil Clock1 Win1 of board %d is not valid : %d",board,clk));
     325             :         }else {
     326           0 :                 AliError(Form("Impossible to Write at Board %d",board));
     327             :         }
     328           0 : }
     329             : //________________________________________________________________
     330             : void AliVZEROTriggerData::SetClk2Win1(UShort_t clk, Int_t board)
     331             : {
     332             :         // Set Win clock of BB
     333           0 :         if((board>=0) && (board<kNCIUBoards)) {
     334           0 :                 fClk2Win1[board] = clk;
     335           0 :                 if(!IsClkValid(clk)) AliWarning(Form("Profil Clock2 Win1 of board %d is not valid : %d",board,clk));
     336             :         }else {
     337           0 :                 AliError(Form("Impossible to Write at Board %d",board));
     338             :         }
     339           0 : }
     340             : //________________________________________________________________
     341             : void AliVZEROTriggerData::SetClk1Win2(UShort_t* clks)
     342             : {
     343             :         // Set Win clock of BG
     344           0 :         if(clks) for(int t=0; t<kNCIUBoards; t++) SetClk1Win2(clks[t],t);
     345           0 :         else AliError("Profil Clock1 Win2 Not defined.");
     346           0 : }
     347             : //________________________________________________________________
     348             : void AliVZEROTriggerData::SetClk2Win2(UShort_t* clks)
     349             : {
     350             :         // Set Win clock of BG
     351           0 :         if(clks) for(int t=0; t<kNCIUBoards; t++) SetClk2Win2(clks[t],t);
     352           0 :         else AliError("Profil Clock2 Win2 Not defined.");
     353           0 : }
     354             : //________________________________________________________________
     355             : void AliVZEROTriggerData::SetClk1Win2(UShort_t clk, Int_t board)
     356             : {
     357             :         // Set Win clock of BG
     358           0 :         if((board>=0) && (board<kNCIUBoards)) {
     359           0 :                 fClk1Win2[board] = clk;
     360           0 :                 if(!IsClkValid(clk)) AliWarning(Form("Profil Clock1 Win2 of board %d is not valid : %d",board,clk));
     361             :         }else {
     362           0 :                 AliError(Form("Impossible to Write at Board %d",board));
     363             :         }
     364           0 : }
     365             : //________________________________________________________________
     366             : void AliVZEROTriggerData::SetClk2Win2(UShort_t clk, Int_t board)
     367             : {
     368             :         // Set Win clock of BG
     369           0 :         if((board>=0) && (board<kNCIUBoards)) {
     370           0 :                 fClk2Win2[board] = clk;
     371           0 :                 if(!IsClkValid(clk)) AliWarning(Form("Profil Clock2 Win2 of board %d is not valid : %d",board,clk));
     372             :         }else {
     373           0 :                 AliError(Form("Impossible to Write at Board %d",board));
     374             :         }
     375           0 : }
     376             : //________________________________________________________________
     377             : void AliVZEROTriggerData::SetDelayClk1Win1(UShort_t* delays)
     378             : {
     379             :         // Set Delay for Win clock of BB
     380           0 :         if(delays) for(int t=0; t<kNCIUBoards; t++) SetDelayClk1Win1(delays[t],t);
     381           0 :         else AliError("Profil Clock1 Win1 Delays Not defined.");
     382           0 : }
     383             : //________________________________________________________________
     384             : void AliVZEROTriggerData::SetDelayClk1Win1(UShort_t delay, Int_t board)
     385             : {
     386             :         // Set Delay for Win clock of BB
     387           0 :         if(delay>1023){
     388           0 :                 AliWarning(Form("Profil Clock1 Win1 Delay of board %d should be less 1023 is currently %d. Truncated to the first 10 bits",board, delay));
     389           0 :                 delay = delay & 0x3FF;
     390           0 :         }
     391           0 :         if((board>=0) && (board<kNCIUBoards))     fDelayClk1Win1[board] = delay;
     392           0 :         else AliError(Form("Trying to write out of the array Board = %d",board));
     393           0 : }
     394             : //________________________________________________________________
     395             : void AliVZEROTriggerData::SetDelayClk2Win1(UShort_t* delays)
     396             : {
     397             :         // Set Delay for Win clock of BB
     398           0 :         if(delays) for(int t=0; t<kNCIUBoards; t++) SetDelayClk2Win1(delays[t],t);
     399           0 :         else AliError("Profil Clock2 Win1 Delays Not defined.");
     400           0 : }
     401             : //________________________________________________________________
     402             : void AliVZEROTriggerData::SetDelayClk2Win1(UShort_t delay, Int_t board)
     403             : {
     404             :         // Set Delay for Win clock of BB
     405           0 :         if(delay>1023){
     406           0 :                 AliWarning(Form("Profil Clock2 Win1 Delay of board %d should be less 1023 is currently %d. Truncated to the first 10 bits",board, delay));
     407           0 :                 delay = delay & 0x3FF;
     408           0 :         }
     409           0 :         if((board>=0) && (board<kNCIUBoards))     fDelayClk2Win1[board] = delay;
     410           0 :         else AliError(Form("Trying to write out of the array Board = %d",board));
     411           0 : }
     412             : //________________________________________________________________
     413             : void AliVZEROTriggerData::SetDelayClk1Win2(UShort_t* delays)
     414             : {
     415             :         // Set Delay for Win clock of BG
     416           0 :         if(delays) for(int t=0; t<kNCIUBoards; t++) SetDelayClk1Win2(delays[t],t);
     417           0 :         else AliError("Profil Clock1 Win2 Delays Not defined.");
     418           0 : }
     419             : //________________________________________________________________
     420             : void AliVZEROTriggerData::SetDelayClk1Win2(UShort_t delay, Int_t board)
     421             : {
     422             :         // Set Delay for Win clock of BG
     423           0 :         if(delay>1023){
     424           0 :                 AliWarning(Form("Profil Clock1 Win2 Delay of board %d should be less 1023 is currently %d. Truncated to the first 10 bits",board, delay));
     425           0 :                 delay = delay & 0x3FF;
     426           0 :         }
     427           0 :         if((board>=0) && (board<kNCIUBoards))     fDelayClk1Win2[board] = delay;
     428           0 :         else AliError(Form("Trying to write out of the array Board = %d",board));
     429           0 : }
     430             : //________________________________________________________________
     431             : void AliVZEROTriggerData::SetDelayClk2Win2(UShort_t* delays)
     432             : {
     433             :         // Set Delay for Win clock of BG
     434           0 :         if(delays) for(int t=0; t<kNCIUBoards; t++) SetDelayClk2Win2(delays[t],t);
     435           0 :         else AliError("Profil Clock2 Win2 Delays Not defined.");
     436           0 : }
     437             : //________________________________________________________________
     438             : void AliVZEROTriggerData::SetDelayClk2Win2(UShort_t delay, Int_t board)
     439             : {
     440             :         // Set Delay for Win clock of BG
     441           0 :         if(delay>1023){
     442           0 :                 AliWarning(Form("Profil Clock2 Win2 Delay of board %d should be less 1023 is currently %d. Truncated to the first 10 bits",board, delay));
     443           0 :                 delay = delay & 0x3FF;
     444           0 :         }
     445           0 :         if((board>=0) && (board<kNCIUBoards))     fDelayClk2Win2[board] = delay;
     446           0 :         else AliError(Form("Trying to write out of the array Board = %d",board));
     447           0 : }
     448             : //________________________________________________________________
     449             : void AliVZEROTriggerData::SetLatchWin1(UShort_t *latchs){
     450             :         // Set Latch Win clock for BB
     451           0 :         if(latchs) for(int t=0; t<kNCIUBoards; t++) SetLatchWin1(latchs[t],t);
     452           0 :         else AliError("Latch Win1 profil Not defined.");
     453           0 : }
     454             : //________________________________________________________________
     455             : void AliVZEROTriggerData::SetLatchWin1(UShort_t latch, Int_t board)
     456             : {
     457             :         // Set Latch Win clock for BB
     458           0 :         if((board>=0) && (board<kNCIUBoards)) {
     459           0 :                 fLatchWin1[board] = latch;
     460           0 :                 if(!IsClkValid(latch)) AliWarning(Form("Latch Win1 of board %d is not valid : %d",board,latch));
     461             :         }else {
     462           0 :                 AliError(Form("Impossible to Write at Board %d",board));
     463             :         }
     464           0 : }
     465             : //________________________________________________________________
     466             : void AliVZEROTriggerData::SetLatchWin2(UShort_t *latchs){
     467             :         // Set Latch Win clock for BG
     468           0 :         if(latchs) for(int t=0; t<kNCIUBoards; t++) SetLatchWin2(latchs[t],t);
     469           0 :         else AliError("Latch Win2 profil Not defined.");
     470           0 : }
     471             : //________________________________________________________________
     472             : void AliVZEROTriggerData::SetLatchWin2(UShort_t latch, Int_t board)
     473             : {
     474             :         // Set Latch Win clock for BG
     475           0 :         if((board>=0) && (board<kNCIUBoards)) {
     476           0 :                 fLatchWin2[board] = latch;
     477           0 :                 if(!IsClkValid(latch)) AliWarning(Form("Latch Win2 of board %d is not valid : %d",board,latch));
     478             :         }else {
     479           0 :                 AliError(Form("Impossible to Write at Board %d",board));
     480             :         }
     481           0 : }
     482             : //________________________________________________________________
     483             : void AliVZEROTriggerData::SetResetWin1(UShort_t *resets){
     484             :         // Set Reset Win clock for BB
     485           0 :         if(resets) for(int t=0; t<kNCIUBoards; t++) SetResetWin1(resets[t],t);
     486           0 :         else AliError("Reset Win1 profil Not defined.");
     487           0 : }
     488             : //________________________________________________________________
     489             : void AliVZEROTriggerData::SetResetWin1(UShort_t reset, Int_t board)
     490             : {
     491             :         // Set Reset Win clock for BB
     492           0 :         if((board>=0) && (board<kNCIUBoards)) {
     493           0 :                 fResetWin1[board] = reset;
     494           0 :                 if(!IsClkValid(reset)) AliWarning(Form("Reset Win1 of board %d is not valid : %d",board,reset));
     495             :         }else {
     496           0 :                 AliError(Form("Impossible to Write at Board %d",board));
     497             :         }
     498           0 : }
     499             : //________________________________________________________________
     500             : void AliVZEROTriggerData::SetResetWin2(UShort_t *resets){
     501             :         // Set Reset Win clock for BG
     502           0 :         if(resets)  for(int t=0; t<kNCIUBoards; t++) SetResetWin2(resets[t],t);
     503           0 :         else AliError("Reset Win2 profil Not defined.");
     504           0 : }
     505             : //________________________________________________________________
     506             : void AliVZEROTriggerData::SetResetWin2(UShort_t reset, Int_t board)
     507             : {
     508             :         // Set Reset Win clock for BG
     509           0 :         if((board>=0) && (board<kNCIUBoards)) {
     510           0 :                 fResetWin2[board] = reset;
     511           0 :                 if(!IsClkValid(reset)) AliWarning(Form("Reset Win2 of board %d is not valid : %d",board,reset));
     512             :         }else {
     513           0 :                 AliError(Form("Impossible to Write at Board %d",board));
     514             :         }
     515           0 : }
     516             : //________________________________________________________________
     517             : void AliVZEROTriggerData::SetPedestalSubtraction(Bool_t *peds){
     518             :         // Set Pedestal Subtraction Parameter
     519           0 :         if(peds)  for(int t=0; t<kNCIUBoards; t++) SetPedestalSubtraction(peds[t],t);
     520           0 :         else AliError("Pedestal Subtraction Not defined.");
     521             :         
     522           0 : }
     523             : //________________________________________________________________
     524             : void AliVZEROTriggerData::SetPedestalSubtraction(Bool_t ped, Int_t board)
     525             : {
     526             :         // Set Pedestal Subtraction Parameter
     527           0 :         if((board>=0) && (board<kNCIUBoards)) fPedestalSubtraction[board] = ped;
     528           0 :         else AliError(Form("Board %d is not valid",board));
     529           0 : }
     530             : 
     531             : //________________________________________________________________
     532             : Bool_t  AliVZEROTriggerData::IsClkValid(UShort_t clock) const {
     533             :         // Check if the given clock has a valid profil.
     534           0 :         Bool_t word[5];
     535             :         Bool_t isValid = kTRUE;
     536             :         Short_t risingEdge = 0;
     537             :         Short_t fallingEdge = 0;
     538           0 :         for(int i=0 ; i<5 ; i++) word[i] = (clock >> i) & 0x1;
     539             :         
     540           0 :         if(word[0] != word[4]){
     541           0 :                 if(word[4]) fallingEdge++;
     542             :                 else risingEdge++;
     543             :         }       
     544           0 :         for(int i=1 ; i<5 ; i++){
     545           0 :                 if(word[i] != word[i-1]) {
     546           0 :                         if(word[i-1]) fallingEdge++;
     547           0 :                         else risingEdge++;
     548             :                 }
     549             :         }
     550           0 :         if((fallingEdge>1)||(risingEdge>1)) isValid = kFALSE;
     551           0 :         if(((risingEdge==0)&&(fallingEdge==0)) &&(!word[0]))  isValid = kFALSE;
     552           0 :         return isValid;
     553           0 : }
     554             : 
     555             : 
     556             : 

Generated by: LCOV version 1.11