ARA ROOT v3.13 Software

AraEvent/AraStationInfo.h

00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 #ifndef ARASTATIONINFO_H
00011 #define ARASTATIONINFO_H
00012 
00013 //Includes
00014 #include <TObject.h>
00015 #include "araIcrrDefines.h"
00016 #include "AraAntennaInfo.h"
00017 #include "AraCalAntennaInfo.h"
00018 #include "araSoft.h"
00019 
00020 #include <vector>
00022 
00027 class AraStationInfo: public TObject
00028 {
00029   
00030  public:
00031   
00032   AraStationInfo(); 
00033   AraStationInfo(AraStationId_t stationId); 
00034   ~AraStationInfo(); 
00035 
00036   Int_t getNumCalAnts() {return fNumberCalAntennas;}
00037   Int_t getNumAnts() {return fNumberAntennas;}
00038   void setNumAnts(int numAnts) { fNumberAntennas=numAnts;}
00039 
00040   Int_t getNumRFChans() {return numberRFChans;}
00041   void setNumRFChans(int numChans) { numberRFChans=numChans;}
00042 
00043   Double_t getCableDelay(int rfChanNum);
00044   AraAntennaInfo *getAntennaInfoForTrigChan(int trigChan);
00045   AraAntennaInfo *getAntennaInfo(int antNum, AraAntPol::AraAntPol_t polType) { return getAntennaInfo(getRFChanByPolAndAnt(antNum,polType));}
00046   AraAntennaInfo *getAntennaInfo(int rfChanNum);
00047   AraCalAntennaInfo *getCalAntennaInfo(int calAntId); 
00048 
00049 
00050   Int_t getRFChanByPolAndAnt(Int_t antNum, AraAntPol::AraAntPol_t polType);
00051   Int_t getElecChanFromRFChan(Int_t rfChan);
00052   Int_t getNumAntennasByPol(AraAntPol::AraAntPol_t polType) {return fAntIndexVec[polType].size();}
00053 
00054   //Should add some error checking at some point
00055   Double_t getLowPassFilter(int rfChan) { return fAntInfo[rfChan].lowPassFilterMhz; }
00056   Double_t getHighPassFilter(int rfChan) { return fAntInfo[rfChan].highPassFilterMhz; }
00057 
00058 
00059   //Below are just for ICRR station
00060    //Maybe they should live elsewhere?
00061   int getIcrrChanIndex(AraLabChip::AraLabChip_t chip, int chan) {return chip*CHANNELS_PER_LAB3 +chan;}
00062   AraLabChip::AraLabChip_t getLabChipForChan(int rfChan) {return fAntInfo[rfChan].labChip;}
00063   int getNumLabChansForChan(int rfChan) { return fAntInfo[rfChan].numLabChans;}
00064   int getFirstLabChanForChan(int rfChan) { return fAntInfo[rfChan].labChans[0];}
00065   int getSecondLabChanForChan(int rfChan) { return fAntInfo[rfChan].labChans[1];}
00066   int getFirstLabChanIndexForChan(int rfChan) { return getIcrrChanIndex(getLabChipForChan(rfChan),getFirstLabChanForChan(rfChan));}
00067   int getSecondLabChanIndexForChan(int rfChan) { return getIcrrChanIndex(getLabChipForChan(rfChan),getSecondLabChanForChan(rfChan));}
00068   int isDiplexed(int rfChan) {return fAntInfo[rfChan].isDiplexed;}
00069   
00070   
00071   //Labelling for TDA channels just for the ATRI stations
00072   const char *getAtriSingleChannelLabel(Int_t tda, Int_t channel);
00073   const char *getAtriL2Label(Int_t index);
00074   const char *getAtriL3Label(Int_t index);
00075   const char *getAtriL4Label(Int_t index);
00076   static Int_t getTrigChan(Int_t tda, Int_t channel) {
00077      return channel + ANTS_PER_TDA*tda;
00078   }
00079   
00080 
00081 
00082   
00083   //At some point will make these private
00084   AraStationId_t fStationId;
00085   std::vector<AraAntennaInfo> fAntInfo; 
00086   std::vector<AraCalAntennaInfo> fCalAntInfo; 
00087 
00088 
00089   int numberRFChans;  
00090   int fNumberAntennas; 
00091   int fNumberCalAntennas; 
00092   
00093   std::vector<int> fAntIndexVec[3]; 
00094   std::vector<int> fTrigChanVec; 
00095 
00096 
00097  private:
00099   AraAntennaInfo *getNewAntennaInfo(int rfChanNum);
00100   AraCalAntennaInfo *getNewCalAntennaInfo(int antCalId);
00101   void fillAntIndexVec();
00102   void fillTrigChanVec();
00103   void readChannelMapDbAtri();
00104   void readChannelMapDbAtri_2();
00105   void readChannelMapDbIcrr();
00106 
00107 
00108   void readCalPulserDb();
00109 
00110   ClassDef(AraStationInfo,1);
00111 };
00112 
00113 #endif //ARASTATIONINFO_H

Generated on Mon Dec 9 13:20:21 2013 for ARA ROOT v3.13 Software by doxygen 1.4.7