#ifndef ALI_TPC_ALTRO_EMULATOR_H
#define ALI_TPC_ALTRO_EMULATOR_H
#include "TSystem.h"
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <AliRawReader.h>
#include <AliTPCRawStreamV3.h>
using namespace std;
class AliTPCAltroEmulator : public TNamed {
public:
AliTPCAltroEmulator(Int_t timebins=0, Short_t* Channel=0);
~AliTPCAltroEmulator();
void ConfigAltro(Int_t ONBaselineCorrection1, Int_t ONTailcancellation, Int_t ONBaselineCorrection2, Int_t ONClipping, Int_t ONZerosuppression, Int_t ONDataFormatting);
void ConfigBaselineCorrection1(Int_t mode, Int_t ValuePeDestal, Int_t *PedestalMem, Int_t polarity);
void ConfigTailCancellationFilter(Int_t K1, Int_t K2, Int_t K3, Int_t L1, Int_t L2, Int_t L3);
void ConfigTailCancellationFilterForRAWfiles(const Int_t* K1, const Int_t* K2, const Int_t* K3,
const Int_t* L1, const Int_t* L2, const Int_t* L3);
void ConfigBaselineCorrection2(Int_t HighThreshold, Int_t LowThreshold, Int_t Offset, Int_t Presamples, Int_t Postsamples);
void ConfigZerosuppression(Int_t Threshold, Int_t MinSamplesaboveThreshold, Int_t Presamples, Int_t Postsamples);
void SetChannelData(Int_t timebins, Short_t* Channel);
void PrintParameters();
void RunEmulation(Int_t roc=-1);
Float_t CalculateCompression();
void RunEmulationOnRAWdata(AliRawReader *reader, Int_t plotFlag=0);
TString GetDDLFolderName() const {return fDDLFolderName ;}
TString GetOutputDateFileName() const {return fOutputDateFileName;}
TString GetOutputRootFileName() const {return fOutputRootFileName;}
void SetDDLFolderName (const TString &name) {fDDLFolderName =name;}
void SetOutputDateFileName(const TString &name) {fOutputDateFileName=name;}
void SetOutputRootFileName(const TString &name) {fOutputRootFileName=name;}
enum {
kDINxFPD,
kDINxFT,
kDINxFDIN,
kDINxFDINxVPD,
kDINxVPDxFPD,
kDINxVPDxFT,
kDINxVPDxFDIN,
kDINxVPDxFDINxVPD,
kFDINxFPD,
kFDINxVPDxFPD,
kFTxFPD,
kFTxFT,
kFDINxFDIN,
kFDINxVPDxFDINxVPD,
kDINxFPD1,
kDINxFPD2,
kDINxMPD
};
private:
AliTPCAltroEmulator(const AliTPCAltroEmulator &sig);
AliTPCAltroEmulator& operator = (const AliTPCAltroEmulator &source);
Int_t ftimebins;
Short_t *fChannelShort;
Short_t *fADCkeep;
Int_t fOnBSL1;
Int_t fOnTCF;
Int_t fOnBSL2;
Int_t fOnClip;
Int_t fOnZSU;
Int_t fConfiguredAltro;
Int_t fConfiguredBSL1;
Int_t fConfiguredTCF;
Int_t fConfiguredTCFraw;
Int_t fConfiguredBSL2;
Int_t fConfiguredZSU;
Int_t fBSL1mode;
Int_t fBSL1ValuePeDestal;
Int_t* fBSL1PedestalMem;
Int_t fBSL1polarity;
Float_t fTCFK1;
Float_t fTCFK2;
Float_t fTCFK3;
Float_t fTCFL1;
Float_t fTCFL2;
Float_t fTCFL3;
Int_t fTCFK1Int;
Int_t fTCFK2Int;
Int_t fTCFK3Int;
Int_t fTCFL1Int;
Int_t fTCFL2Int;
Int_t fTCFL3Int;
Int_t fTCFK1IntROC[2];
Int_t fTCFK2IntROC[2];
Int_t fTCFK3IntROC[2];
Int_t fTCFL1IntROC[2];
Int_t fTCFL2IntROC[2];
Int_t fTCFL3IntROC[2];
Int_t fBSL2HighThreshold;
Int_t fBSL2LowThreshold;
Int_t fBSL2Offset;
Int_t fBSL2Presamples;
Int_t fBSL2Postsamples;
Int_t fZSUThreshold;
Int_t fZSUMinSamplesaboveThreshold;
Int_t fZSUPresamples;
Int_t fZSUPostsamples;
void BaselineCorrection1(Int_t mode, Int_t FixedPeDestal, Int_t *PedestalMem, Int_t polarity);
void TailCancellationFilterFixedPoint(Int_t K1, Int_t K2, Int_t K3, Int_t L1, Int_t L2, Int_t L3);
void BaselineCorrection2RTL(Int_t HighThreshold, Int_t LowThreshold, Int_t Offset, Int_t Presamples, Int_t Postsamples);
void Clipping();
void Zerosuppression(Int_t Threshold, Int_t MinSamplesaboveThreshold, Int_t Presamples, Int_t Postsamples);
void DataFormater();
Short_t GetElement(short* Array,Int_t index);
void SetElement(short* Array,Int_t index,Short_t value);
Int_t InBand(Int_t ADC,Int_t bsl, Int_t LowThreshold, Int_t HighThreshold);
Int_t InRange(Int_t parameter,Int_t Low,Int_t High,const char *Module,const char *ParameterName);
Short_t GetShortChannel(Int_t i);
Short_t GetKeepChannel(Int_t i);
Int_t Multiply36(Int_t P, Int_t N);
long long Mask(long long in, Int_t left, Int_t right);
long long Maskandshift(long long in, Int_t left, Int_t right);
void InitBuffers();
Bool_t AddEvent(Int_t dt,Bool_t isFirst);
Bool_t CreateEvent(Int_t ievent);
Bool_t GDC2DDLs(AliRawVEvent *gdc,Int_t ievent);
Bool_t ConvertRawFilesToDate(Int_t nevents);
Bool_t ConvertDateToRoot();
Bool_t WriteEvent(Int_t ievent);
AliRawReader *fReader ;
AliTPCRawStreamV3 *fDecoder;
Int_t fRunNumber;
TString fDDLFolderName;
TString fOutputDateFileName;
TString fOutputRootFileName;
Bool_t fIsRandom;
Bool_t *fChannels;
UInt_t *fCDHs ;
Short_t *fADCs ;
UInt_t *fTrailers;
UInt_t *fRawData ;
ClassDef(AliTPCAltroEmulator,1);
};
#endif
AliTPCAltroEmulator.h:100 AliTPCAltroEmulator.h:101 AliTPCAltroEmulator.h:102 AliTPCAltroEmulator.h:103 AliTPCAltroEmulator.h:104 AliTPCAltroEmulator.h:105 AliTPCAltroEmulator.h:106 AliTPCAltroEmulator.h:107 AliTPCAltroEmulator.h:108 AliTPCAltroEmulator.h:109 AliTPCAltroEmulator.h:110 AliTPCAltroEmulator.h:111 AliTPCAltroEmulator.h:112 AliTPCAltroEmulator.h:113 AliTPCAltroEmulator.h:114 AliTPCAltroEmulator.h:115 AliTPCAltroEmulator.h:116 AliTPCAltroEmulator.h:117 AliTPCAltroEmulator.h:118 AliTPCAltroEmulator.h:119 AliTPCAltroEmulator.h:120 AliTPCAltroEmulator.h:121 AliTPCAltroEmulator.h:122 AliTPCAltroEmulator.h:123 AliTPCAltroEmulator.h:124 AliTPCAltroEmulator.h:125 AliTPCAltroEmulator.h:126 AliTPCAltroEmulator.h:127 AliTPCAltroEmulator.h:128 AliTPCAltroEmulator.h:129 AliTPCAltroEmulator.h:130 AliTPCAltroEmulator.h:131 AliTPCAltroEmulator.h:132 AliTPCAltroEmulator.h:133 AliTPCAltroEmulator.h:134 AliTPCAltroEmulator.h:135 AliTPCAltroEmulator.h:136 AliTPCAltroEmulator.h:137 AliTPCAltroEmulator.h:138 AliTPCAltroEmulator.h:139 AliTPCAltroEmulator.h:140 AliTPCAltroEmulator.h:141 AliTPCAltroEmulator.h:142 AliTPCAltroEmulator.h:143 AliTPCAltroEmulator.h:144 AliTPCAltroEmulator.h:145 AliTPCAltroEmulator.h:146 AliTPCAltroEmulator.h:147 AliTPCAltroEmulator.h:148 AliTPCAltroEmulator.h:149 AliTPCAltroEmulator.h:150 AliTPCAltroEmulator.h:151 AliTPCAltroEmulator.h:152 AliTPCAltroEmulator.h:153 AliTPCAltroEmulator.h:154 AliTPCAltroEmulator.h:155 AliTPCAltroEmulator.h:156 AliTPCAltroEmulator.h:157 AliTPCAltroEmulator.h:158 AliTPCAltroEmulator.h:159 AliTPCAltroEmulator.h:160 AliTPCAltroEmulator.h:161 AliTPCAltroEmulator.h:162 AliTPCAltroEmulator.h:163 AliTPCAltroEmulator.h:164 AliTPCAltroEmulator.h:165 AliTPCAltroEmulator.h:166 AliTPCAltroEmulator.h:167 AliTPCAltroEmulator.h:168 AliTPCAltroEmulator.h:169 AliTPCAltroEmulator.h:170 AliTPCAltroEmulator.h:171 AliTPCAltroEmulator.h:172 AliTPCAltroEmulator.h:173 AliTPCAltroEmulator.h:174 AliTPCAltroEmulator.h:175 AliTPCAltroEmulator.h:176 AliTPCAltroEmulator.h:177 AliTPCAltroEmulator.h:178 AliTPCAltroEmulator.h:179 AliTPCAltroEmulator.h:180 AliTPCAltroEmulator.h:181 AliTPCAltroEmulator.h:182 AliTPCAltroEmulator.h:183 AliTPCAltroEmulator.h:184 AliTPCAltroEmulator.h:185 AliTPCAltroEmulator.h:186 AliTPCAltroEmulator.h:187 AliTPCAltroEmulator.h:188 AliTPCAltroEmulator.h:189 AliTPCAltroEmulator.h:190 AliTPCAltroEmulator.h:191 AliTPCAltroEmulator.h:192 AliTPCAltroEmulator.h:193 AliTPCAltroEmulator.h:194 AliTPCAltroEmulator.h:195 AliTPCAltroEmulator.h:196 AliTPCAltroEmulator.h:197