diff --git a/.DS_Store b/.DS_Store index c2f1d58..c2d3f0a 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/code/include/.DS_Store b/code/include/.DS_Store new file mode 100644 index 0000000..b9415c8 Binary files /dev/null and b/code/include/.DS_Store differ diff --git a/code/include/BoardReaderMIMOSIS.h b/code/include/BoardReaderMIMOSIS.h index 45a057a..4906920 100644 --- a/code/include/BoardReaderMIMOSIS.h +++ b/code/include/BoardReaderMIMOSIS.h @@ -44,20 +44,30 @@ class BoardReaderMIMOSIS : public TObject { int fRunNumber; int fNSensors; int fTriggerMode; + int fTriggerOffset; + int fFramesPerTrigger; + int fMergingFrameMode; + int fFramesToMerge; + int fNbMergedFrame; int fEventBuildingMode; bool fVetoOverflow; int fEndianness; // 0= do not swap bytes, 1= swap bytes - int fSizeOfHeader; - int fSizeOfTrailer; std::ifstream fRawFileStream; std::vector fListInputFileNames; size_t fCurrentFileNumber; bool fNoMoreFile; bool fisfirstAcq; + bool fisAcqSafe; // Boolean variable to test whether the acquisition is safe (i.e not truncated) + // Acquisition is truncated if the number of frames/Acq is not the same + // in all the sensors for a giving acquisition. + int fnbFrPerAcq; + int fnbTrg; + int fendTrg; int fCurrentTriggerNumber; + int fFramesCounterInTrigger; int fCurrentEventNumber; int fReachEndOfRun; @@ -67,6 +77,8 @@ class BoardReaderMIMOSIS : public TObject { int fTriggerCount; int fFrameCount; int fBadDecFrameCounter ; // ZE 2021/06/04 - Counter for bad decoded frames + int fTruncatedAcqCounter ; // ZE 2021/06/09 - Counter for Truncated Acquistions (risky) + int *NbFiredPixPerFrame; // ZE 2021/10/10 - Number of fired pixels per frame "cumulated" int fNEventsWithOverflow; BoardReaderEvent *fCurrentEvent; @@ -81,26 +93,24 @@ class BoardReaderMIMOSIS : public TObject { std::vector fListOfNextTimestamps; // JB 2012/05/04 - bool LookUpRawFile(); - bool CloseRawFile(); - bool OpenRawFile(); bool DecodeNextEvent(); - bool DecodeFrame(); + void DecodeFrame(); + bool isAcqSafe(); + + // bool DecodeFrame(MIS1__BT_FBtAcqW16AAlloc*, MIS1__TBtAcqRawRec*, int moduleID, int frameID, // UInt8 MeasExecTime, UInt8 PrintLvl); // ZE 2021/06/02 void AddPixel( int iSensor, int value, int aLine, int aColumn, int aTime=0); - // ==> PROBABLY MORE PRIVATE METHODS are needed <== public: int test(); - BoardReaderMIMOSIS(int boardNumber, char *dataPath, int runNumber, int nSensors=1, int triggerMode=0, int eventBuildingMode=0, int headerSize=0, int trailerSize=0, int endianness=0); - // BoardReaderMIMOSIS(int boardNumber, int runNumber, int nSensors=1, int triggerMode=0, int eventBuildingMode=0, int headerSize=0, int trailerSize=0, int endianness=0); + // BoardReaderMIMOSIS(int boardNumber, char *dataPath, int runNumber, int nSensors=1, int triggerMode=0, int triggeroffset=0, int framesPerTrigger = 1, int mergingFrameMode = 0, int framesToMerge = 1, int eventBuildingMode=0, int endianness=0); + BoardReaderMIMOSIS(int boardNumber, char *dataPath, int runNumber, int nSensors=1, int triggerMode=0, int triggeroffset=0, int framesPerTrigger = 1, int framesToMerge = 1, int eventBuildingMode=0, int endianness=0); ~BoardReaderMIMOSIS(); void SetDebugLevel( int aLevel) { fDebugLevel = aLevel; cout << "BoardReaderMIMOSIS " << fBoardNumber << " debug updated to " << fDebugLevel << endl; } - bool AddFileList(std::string prefixFileName, int startIndex, int endIndex, std::string suffixFileName); void SetVetoPixel( int noiseRun=0); bool HasData(); void SkipNextEvent(); diff --git a/code/include/DEvent.h b/code/include/DEvent.h index 1833e71..42917ee 100644 --- a/code/include/DEvent.h +++ b/code/include/DEvent.h @@ -2,7 +2,7 @@ // Author: Dirk Meier 98/02/18 // Last Modified, AP 2015/05/22, DEvent class: Changed Short_t by Int_t // fAHitsN,fT1PlanesN,fAPlanesN - +// Last Modified, ZE, AddTransparentPlane with no hits #ifndef _DEvent_included_ #define _DEvent_included_ @@ -104,6 +104,7 @@ class DEvent : public TObject { void SetTimeInterval(const Int_t aDeltaTime); void AddAuthenticPlane(DPlane& aPlane, Int_t aNEvent); void AddTransparentPlane(DPlane& aPlane, DTrack& aTrack, DHit& aHit, Bool_t hitAssociated, DTracker &aTracker); // modified JB 2014/12/18, 2014/08/29 + void AddTransparentPlane(DPlane& aPlane, DTrack& aTrack, DTracker &aTracker); // modified ZE 2021/09/28 void AddAuthenticHit(DHit& aHit, Int_t aNEvent, DTrack& aTrack); DEventHeader& GetHeader() { return fHeader; } TClonesArray *GetAuthenticHits() { return fAHits; } diff --git a/code/include/DSetup.h b/code/include/DSetup.h index e5a6c4b..6b0e037 100644 --- a/code/include/DSetup.h +++ b/code/include/DSetup.h @@ -394,6 +394,10 @@ class DSetup : public TObject { // e.g. a Sirocco of Type A, B, or LBL-Pixel device Int_t BinaryCoding; // 0 for BigEndian, 1 for LittleEndian Int_t TriggerMode; // Expect a Trigger (1) or not (0) to separate event, JB 2010/08/23 + Int_t TriggerOffset; // Offset in number of frames from trigger id, ZE 2021/06/14 + Int_t FramesPerTrigger; // Number of frames to be considered starting from Trigger Offset + Int_t MergingFrameMode; // Activated = 1; Desactivated = 0 + Int_t FramesToMerge; // Number of Frames to Merge per Event Int_t EventBuildingMode; // SS 2011.11.14 Char_t TimeRefFile[100]; // JB 2018/02/11 Int_t IfExternalTimeRef; diff --git a/code/include/MAnalysis.h b/code/include/MAnalysis.h index a5419fe..efdb1b2 100644 --- a/code/include/MAnalysis.h +++ b/code/include/MAnalysis.h @@ -883,7 +883,7 @@ class MimosaAnalysis : public MHist { #ifndef MAC -//#define gTAF MimosaAnalysis::Instance() // to comment for MAC +#define gTAF MimosaAnalysis::Instance() // to comment for MAC #endif diff --git a/code/include/mimo_daq_lib/.DS_Store b/code/include/mimo_daq_lib/.DS_Store index 970dcc9..9ab92a1 100644 Binary files a/code/include/mimo_daq_lib/.DS_Store and b/code/include/mimo_daq_lib/.DS_Store differ diff --git a/code/include/mimo_daq_lib/c4pi_test_team.h b/code/include/mimo_daq_lib/c4pi_test_team.h index f56e2de..094b6fd 100644 --- a/code/include/mimo_daq_lib/c4pi_test_team.h +++ b/code/include/mimo_daq_lib/c4pi_test_team.h @@ -42,7 +42,9 @@ // Macro definition // ----------------------------------------------------------------------- +#define WAIT_CR(Msg) { printf ( "Press ENTER key to continue : %s \n", Msg ); while ( getchar() != '\n' ); } +#define WAIT_CR_TO_QUIT { printf ( "Press ENTER key to quit \n" ); while ( getchar() != '\n' ); printf ( "will exit SW, please wait ... \n"); } // ----------------------------------------------------------------------- @@ -116,6 +118,59 @@ typedef extended Real80; */ + +/** +=================================================================================== +* \union UInt16Bits +* +* \brief UInt16 data type for bit access => .W16 = word access, .B.bx = bit access +* +* Longer C union explanation +* ... +* ... +* ... +* can take many lines +* +* G.CLAUS 25/04/2023 +* +=================================================================================== +*/ + + +#ifndef UInt16Bits + + typedef union { + + UInt16 w16; /*!< Full word, access via w16 */ + + + struct + { + UInt16 b0 : 1; /*!< Bit0, access via b.b0 */ + UInt16 b1 : 1; /*!< Bit1, access via b.b1 */ + UInt16 b2 : 1; /*!< Bit2, access via b.b2 */ + UInt16 b3 : 1; /*!< Bit3, access via b.b3 */ + UInt16 b4 : 1; /*!< Bit4, access via b.b4 */ + UInt16 b5 : 1; /*!< Bit5, access via b.b5 */ + UInt16 b6 : 1; /*!< Bit6, access via b.b6 */ + UInt16 b7 : 1; /*!< Bit7, access via b.b7 */ + UInt16 b8 : 1; /*!< Bit0, access via b.b8 */ + UInt16 b9 : 1; /*!< Bit1, access via b.b9 */ + UInt16 b10 : 1; /*!< Bit2, access via b.b10 */ + UInt16 b11 : 1; /*!< Bit3, access via b.b11 */ + UInt16 b12 : 1; /*!< Bit4, access via b.b12 */ + UInt16 b13 : 1; /*!< Bit5, access via b.b13 */ + UInt16 b14 : 1; /*!< Bit6, access via b.b14 */ + UInt16 b15 : 1; /*!< Bit7, access via b.b15 */ + } b; + + + } UInt16Bits; + + +#endif + + /* Pointeurs */ typedef char* TPChar; diff --git a/code/include/mimo_daq_lib/c4pi_test_team__before_msis2_upgrade.h b/code/include/mimo_daq_lib/c4pi_test_team__before_msis2_upgrade.h new file mode 100644 index 0000000..f56e2de --- /dev/null +++ b/code/include/mimo_daq_lib/c4pi_test_team__before_msis2_upgrade.h @@ -0,0 +1,166 @@ + +/** +* ---------------------------------------------------------------------------------- +* \file X:\prj\win\mimosis_1\run_read_light_bt\com\c4pi_test_team.h +* \brief Goal : C4Pi test team C source definitions : Constants, types, functins proto, ... +* \brief +* \brief +* \version : 1.0 +* \date Prj date : 12/05/2021 +* \date File date : 12/05/2021 +* \date Doc date : 12/05/2021 +* \author : Gilles CLAUS +* \author : gilles.claus@iphc.cnrs.fr +* \author : CNRS - IN2P3 - IPHC 23 Rue du Loess 67037 STRASBOURG +* +* Remark : None +* +* ---------------------------------------------------------------------------------- +* License : GNU General Public License +* +* ---------------------------------------------------------------------------------- +*/ + + +#ifndef C4PI_TEST_TEAM_H +#define C4PI_TEST_TEAM_H + + +#include +#include +#include + + +// ----------------------------------------------------------------------- +// Compilation directives +// ----------------------------------------------------------------------- + +#define CC_MSIS1_BDF_LIGHT + + +// ----------------------------------------------------------------------- +// Macro definition +// ----------------------------------------------------------------------- + + + + +// ----------------------------------------------------------------------- +// Types definition +// ----------------------------------------------------------------------- + + +#ifndef UInt8 +typedef uint8_t UInt8; +#endif + +#ifndef UByte +typedef uint8_t UByte; +#endif + +#ifndef SInt8 +typedef int8_t SInt8; +#endif + +#ifndef SByte +typedef int8_t SByte; +#endif + +#ifndef UInt16 +typedef uint16_t UInt16; +#endif + +#ifndef UWord +typedef uint16_t UWord; +#endif + +#ifndef SInt16 +typedef int16_t SInt16; +#endif + +#ifndef SWord +typedef int16_t SWord; +#endif + +#ifndef UInt32 +typedef uint32_t UInt32; +#endif + +#ifndef ULong +typedef uint32_t ULong; +#endif + +#ifndef SInt32 +typedef int32_t SInt32; +#endif + +#ifndef SLong +typedef int32_t SLong; +#endif + + +#ifndef UInt64 +typedef uint64_t UInt64; +#endif + +#ifndef SInt64 +typedef int64_t SInt64; +#endif + + + +/* ROOT ! +typedef single Real32; +typedef double Real64; +typedef extended Real80; +*/ + + +/* Pointeurs */ + +typedef char* TPChar; + +typedef UInt8* TPUInt8; +typedef TPUInt8 TPUByte; + +typedef SInt8* TPSInt8; +typedef TPSInt8 TPSByte; + +typedef UInt16* TPUInt16; +typedef TPUInt16 TPUWord; + +typedef SInt16* TPSInt16; +typedef TPSInt16 TPSWord; + +typedef UInt32* TPUInt32; +typedef TPUInt32 TPULong; + +typedef SInt32* TPSInt32; +typedef TPSInt32 TPSLong; + +/* ROOT ! +typedef Real32* TPReal32; +typedef Real64* TPReal64; +typedef Real80* TPReal80; +*/ + + +typedef UInt16 TW128As8W16[8]; // Endianness is function of CC_TW128_LITTLE_ENDIAN + +// +// If CC_TW128_LITTLE_ENDIAN IS defined +// => TW128As8W16, DECOM__TW128As8W16 are little endian +// => [0] = LS W16, [7] = MS W16 +// => W128 = 0000 1111 2222 3333 4444 5555 6666 7777 +// = > [7] = 0000, [6] = 1111, [5] = 2222, [4] = 3333, [3] = 4444, [2] = 5555, [1] = 6666, [0] = 7777 +// +// If CC_TW128_LITTLE_ENDIAN IS NOT defined +// => TW128As8W16, DECOM__TW128As8W16 are big endian +// => [0] = MS W16, [7] = LS W16 +// => W128 = 0000 1111 2222 3333 4444 5555 6666 7777 +// = > [0] = 0000, [1] = 1111, [2] = 2222, [3] = 3333, [4] = 4444, [5] = 5555, [6] = 6666, [7] = 7777 + + + + +#endif diff --git a/code/include/mimo_daq_lib/msis1_data.c b/code/include/mimo_daq_lib/msis1_data.c index b5520f8..dca67d2 100644 --- a/code/include/mimo_daq_lib/msis1_data.c +++ b/code/include/mimo_daq_lib/msis1_data.c @@ -29,11 +29,72 @@ -#ifndef CC_MSIS1_BDF_LIGHT +/** +=================================================================================== +* \var EXTERN VAR_STATIC SInt32 MIS1__VGDecodeFrOkFrNb +* +* \brief Global variable which contains frames nb decoded witout error for ALL MSis 1 +* for last call of +* - MIS1__BT_FBtDecodeFrLight (...) +* - MIS1__BT_FBtDecodeFr (...) +* +* Rq : Should not be declared here, but I don't want to include *.var in prj +* +* G.CLAUS 14/10/2021 +* +=================================================================================== +*/ + + +static SInt32 MIS1__VGADecodeFrOkFrNb[MIS1__BT_MAX_MSIS_NB_ACQ]; // static => sets to 0 + + +/** +=================================================================================== +* \var EXTERN SInt8 MIS1__VGMSisVersion +* +* \brief Mimosis version, it is used by MIS1__BT_FBtDecodeFr (...) +* +* This variable is used to select pixels decoding method in MIS1__BT_FBtDecodeFr (...) +* It can take the following values +* 0 = MSis 0 => Not allowed as MSis 0 is not handled by this library +* 1 = MSis 1 => One data W16 = One pixel +* 2 = MSis 2 => Clusterization, one data W16 = up to 4 pixels +* 21 = MSis 2.1 => Idem 2 +* +* +* G.CLAUS 17/06/2024 +* +=================================================================================== +*/ + + +static SInt8 MIS1__VGMSisVersion VAR_INIT(1); // Possible values 0 = MSis 0 = Not allowed, 1 = MSis 1, 2 = MSis 2, 21 = MSis 2.1 +// 16/06/2024 + + +/** +=================================================================================== +* \var EXTERN VAR_STATIC Uint8 MIS1__BT_VGBtDecStdPixMSis2PrintLvl +* +* \brief Global variable which sets print level of function MIS1__BT_FBtDecStdPixMSis2Dbg (...) +* +* +* G.CLAUS 21/06/2024 +* +=================================================================================== +*/ + +SInt8 MIS1__BT_VGBtDecStdPixMSis2PrintLvl VAR_INIT(0); + +#ifndef CC_MSIS1_BDF_LIGHT + + + // =================================================================================== // * Functions (comment not processed by DOXYGEN) @@ -115,6 +176,8 @@ SInt32 MIS1__FVersionGet ( char* VerStr, UInt32* PtVerMajor, UInt32* PtVerMinor, + + /* DOC_FUNC_BEGIN */ /** =================================================================================== @@ -175,6 +238,73 @@ SInt32 MIS1__FTemplateForDoc ( SInt32 InNumber, char* InStr ) { +/* DOC_FUNC_BEGIN */ +/** +=================================================================================== +* \fn : char* MIS1__FToolPrintW128 ( TW128As8W16* PtW128, SInt8 PrintMsg, TMemo* Memo ) +* : +* \brief : \n +* : \n +* : +* \param : - +* : +* : +* \return : Error code +* : 0 - OK +* : < 0 - Error +* : +* \warning : Globals : +* \warning : Remark : +* \warning : Level : +* : +* \warning : Items not filled now : +* todo : +* : +* bug : +* : +* \date : Date : 07/09/2023 +* \date : Doc date : 07/09/2023 +* \author : Name : Gilles CLAUS +* \author : E-mail : gilles.claus@iphc.cnrs.fr +* \author : Labo : IPHC +* +=================================================================================== +*/ +/* DOC_FUNC_END */ + +char* MIS1__FToolPrintW128 ( TW128As8W16* PtW128, SInt8 PrintD0D7orD7D0, SInt8 PrintMsg, TMemo* Memo ) { + + static char VStrW128[GLB_CMT_SZ]; + static char VStrW8_0_1_15[GLB_CMT_SZ]; + + // sprintf ( VStrW128, "D0 = %4X, D1 = %4X, D2 = %4X, D3 = %4X, D4 = %4X, D5 = %4X, D6 = %4X, D7 = %4X", PtW128[0], PtW128[1], PtW128[2], PtW128[3], PtW128[4], PtW128[5], PtW128[6], PtW128[7] ); + + if ( PrintD0D7orD7D0 ) { + sprintf ( VStrW128, "D7 = %4X, D6 = %4X, D5 = %4X, D4 = %4X, D3 = %4X, D2 = %4X, D1 = %4X, D0 = %4X", (*PtW128)[7], (*PtW128)[6], (*PtW128)[5], (*PtW128)[4], (*PtW128)[3], (*PtW128)[2], (*PtW128)[1], (*PtW128)[0] ); + } + + else { + sprintf ( VStrW128, "D0 = %4X, D1 = %4X, D2 = %4X, D3 = %4X, D4 = %4X, D5 = %4X, D6 = %4X, D7 = %4X", (*PtW128)[0], (*PtW128)[1], (*PtW128)[2], (*PtW128)[3], (*PtW128)[4], (*PtW128)[5], (*PtW128)[6], (*PtW128)[7] ); + } + + + + sprintf ( VStrW8_0_1_15, "U8[0] = %X, U8[1] = %X, U8[15] = %X", ((UInt8*) PtW128)[0], ((UInt8*) PtW128)[1], ((UInt8*) PtW128)[15] ); + + if ( PrintMsg ) { + msg (( MSG_OUT, "W128 = %s", VStrW128 )); + msg (( MSG_OUT, "U8[x] = %s", VStrW8_0_1_15 )); + } + + if ( Memo != NULL ) { + Memo->Lines->Add ( "W128 = " + AnsiString (VStrW128) ); + Memo->Lines->Add ( "U8[x] = " + AnsiString (VStrW8_0_1_15) ); + } + + return (VStrW128); +} + + /* DOC_FUNC_BEGIN */ /** =================================================================================== @@ -7872,6 +8002,8 @@ SInt32 MIS1__FRunFilesBegin ( char* ErrLogFile, SInt8 ErrLogLvl, UInt8 ObjId = 0 #else + + SInt32 MIS1__FRunFilesBegin ( UInt8 ObjId = 0 ) { SInt32 VRet; @@ -8119,17 +8251,26 @@ SInt32 MIS1__FRunFilesOpen ( char* RunConfFile, SInt8 ReadRaw, SInt8 ReadDec, SI #else + + + + + + + + + SInt32 MIS1__FRunFilesOpen ( char* RunConfFile, SInt8 ReadRaw, SInt8 ReadDec, SInt8 ReadFP, UInt8 ObjId = 0 ) { - + SInt32 VRet; MIS1__TRunFiles* VPtRF; MIS1__TRunConf* VPtRConf; MIS1__TRunPar* VPtRPar; MIS1__TRunInf* VPtRInf; MIS1__TRunStatus* VPtRStatus; - + // Check param - + if ( ObjId >= MIS1__MAX_RUN_FILES ) { err_retfail ( -1, (ERR_OUT,"Abort => ObjId = %d out of range [0..%d]", ObjId, MIS1__MAX_RUN_FILES - 1) ); } @@ -14936,6 +15077,131 @@ SInt32 MIS1__BT_VGDecodecFrWarnErr = 0; // Used by MIS1__BT_FBtDecodeFrGetWarnEr +/* DOC_FUNC_BEGIN */ +/** +=================================================================================== +* \fn : SInt32 MIS1__FSetMSisVersion ( SInt8 Version ) +* +* \brief : Set MSis version +* +* +* +* \param : Version - 0 = MSis 0 (not allowed), 1 = MSis 1, 2 = MSis 2, 21 = MSis 2.1 \n + +* : +* \return : Error code \n +* : 0 - OK \n +* : < 0 - Error \n +* +* \warning : Globals : Updates MIS1__VGMSisVersion +* \warning : Remark : +* \warning : Level : +* +* Items not filled now : \n +* todo : +* : +* bug : +* : +* \date : Date : 17/06/2024 +* \date : Doc date : 17/06/2024 +* \author : Name : Gilles CLAUS +* \author : E-mail : gilles.claus@iphc.cnrs.fr +* \author : Labo : IPHC +* +=================================================================================== +*/ +/* DOC_FUNC_END */ + +SInt32 MIS1__FSetMSisVersion ( SInt8 Version ) { + + SInt8 VNotSupported; + + // Check version + + + switch ( Version ) { + + case 0 : { + // MSis 0 Not supported + VNotSupported = -1; + } + + case 1 : { + // MSis 1 => OK + VNotSupported = 0; + break; + } + + case 2 : { + // MSis 2 => OK + VNotSupported = 0; + break; + } + + case 21 : { + // MSis 2.1 => OK + VNotSupported = 0; + break; + } + + default : { + VNotSupported = -1; + break; + } + + } + + err_retfail ( VNotSupported, (ERR_OUT,"Abort MSis version = %d is not supported by lib", MIS1__VGMSisVersion) ); + + + MIS1__VGMSisVersion = Version; + + return (0); +} + + + + +/* DOC_FUNC_BEGIN */ +/** +=================================================================================== +* \fn : SInt32 MIS1__FGetMSisVersion ( ) +* +* \brief : Returns MSis version, which has been set by MIS1__FSetMSisVersion ( Version ) +* +* \param : None + +* : +* \return : Msis version \n +* +* \warning : Globals : Reads MIS1__VGMSisVersion +* \warning : Remark : +* \warning : Level : +* +* Items not filled now : \n +* todo : +* : +* bug : +* : +* \date : Date : 17/06/2024 +* \date : Doc date : 17/06/2024 +* \author : Name : Gilles CLAUS +* \author : E-mail : gilles.claus@iphc.cnrs.fr +* \author : Labo : IPHC +* +=================================================================================== +*/ +/* DOC_FUNC_END */ + + +SInt32 MIS1__FGetMSisVersion ( ) { + + return ( MIS1__VGMSisVersion ); + +} + + + /* DOC_FUNC_BEGIN */ /** @@ -16778,7 +17044,9 @@ char* MIS1__TBtRunRead::FErrLogSetFilename () { char* MIS1__TBtRunRead::FMsgLogSetFilename () { SInt32 VRet; - static char VMsgLogFile[GLB_FILE_PATH_SZ] = MIS1__TBtRunRead_DEF_MSG_LOG_FILE; + static char VMsgLogFile[GLB_FILE_PATH_SZ] = MIS1__TBtRunRead_DEF_MSG_LOG_FILE; + + return ( VMsgLogFile ); } @@ -18252,7 +18520,13 @@ MIS1__TBtAcqRawRec* MIS1__TBtRunRead::_FFirstAcqOfRawFileGetSeq ( UInt32 RawFile } else { - err_warning (( ERR_OUT, "Strange : raw file id = %d is opened but file ptr == NULL !!!", _CurRawFileId )); + + // Now warning if _CurRawFileId == -1 => Because it is the first time a file is loaded, therefore not file have been opened before - 20/06/2024 GC + + if ( _CurRawFileId != -1 ) { + err_warning (( ERR_OUT, "Strange : raw file id = %d is opened but file ptr == NULL !!!", _CurRawFileId )); + } + } _CurRawFilePt = NULL; @@ -20749,55 +21023,21 @@ SInt32 MIS1__BT_FBtDecodeFrGetWarnErr ( UInt8 Reset ) { } -/* DOC_FUNC_BEGIN */ -/** -=================================================================================== -* \fn : double MIS1__BT_FBtDecodeFrLight ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, UInt8 PrintLvl ) -* -* \brief : Decode the frames for one MSis 1 : List frames, exytract fr header, fr cnt but NO PIXELS DECODING \n -* -* \param : PtSrc - Pointer to source record MIS1__TBtAcqW16A -* -* \param : PtDest - Pointer to destination record MIS1__TBtAcqDec -* -* \param : MSisId - If of the MSis to deocde 0 to MIS1__BT_MAX_REAL_MSIS_NB_ACQ-1 -* -* \param : FrNb - Frames nb to convert, if -1 => All frames from source record (NOT HANDLED NOW => Full frame decoding) -* : -* \param : MeasExecTime - Measure exec time 0 = No, 1 = Yes -* -* \param : PrintLvl - Debug print level, 0 = No, 1 = Print record sizes, 2 = More print, to be implemented -* : -* : -* : -* \return : Execution time in us or error code -* : >= 0 - Execution time in us -* : < 0 - Error code -* : -* \warning : Globals : -* \warning : Remark : WARNING => ONLY 2 channels IMPLEMENTED on 22/05/2021 -* \warning : Level : -* : -* \warning : Items not filled now : -* todo : -* : -* bug : -* : -* \date : Date : 24/05/2021 -* \date : Rev : 25/05/2021 -* \date : Doc date : 24/05/2021 -* \author : Name : Gilles CLAUS -* \author : E-mail : gilles.claus@iphc.cnrs.fr -* \author : Labo : IPHC -* -=================================================================================== -*/ -/* DOC_FUNC_END */ - +// ====================================================================== +// MIS1__BT_FBtDecodeFrLight (...) version for CERN BT pb debugging +// ====================================================================== -double MIS1__BT_FBtDecodeFrLight ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, UInt8 PrintLvl ) { +// double MIS1__BT_FBtDecodeFrLight_dbg_bt_cern ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, SInt8 PrintLvl ) { + +double MIS1__BT_FBtDecodeFrLight ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, SInt8 PrintLvl ) { + + static UInt8 VEmulFrNoTrail = 0; + SInt32 VRetOk; + + SInt8 VPrintLvlAbs; + double VExecTimeUs; SInt32 VSrcW16; // W16 to convert @@ -20809,7 +21049,7 @@ double MIS1__BT_FBtDecodeFrLight ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtD SInt32 VFakeHdCnt; // Counter of fake headers => first W16 is header tag but not following 7 W16 SInt32 VFrWithoutTrailerCnt; // Counter of frames without trailer SInt32 ViW16CurHead; // First W16 of current header - + SInt32 VFrOvfFlagsCnt; // Counter of frames with at leats one OVF flag set 09/10/2021 TW128As8W16 VFrHd; // Frame header (128 bits) @@ -20821,26 +21061,49 @@ double MIS1__BT_FBtDecodeFrLight ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtD UInt16 VFrHdW5; // Frame header W5 UInt16 VFrHdW6; // Frame header W6 UInt16 VFrHdW7; // Frame header W7 - - - + + + SInt32 VRegCntInFr; // Counter of regiosn in frame SInt32 VRegCntInAcq; // Counter of regiosn in Acq SInt32 VPixCntInFr; // Counter of pixels in each frame SInt32 VPixCntInAcq; // Counter of pixels in Acq - + // Flags - + UInt8 VFrWithoutTrailer; // Flag to handle frames without a trailer at the end, a header can starts UInt8 VTrailerDetected; // Flag => trailer detected in current frame scanning UInt8 VFrTooLong; // Flag => frame length > max possible - UInt8 VFrEnd; // Flag => end of frame = OR of previois flags - - + UInt8 VFrEnd; // Flag => end of frame = OR of previous flags + UInt8 VDataAfterTrailer; // Flag => Data dtectedt after frame trailer + + SInt32 VDataAfterTrailerNb; // Counter of data after trailer + + MIS1__TBtFrDecHead* VPtFrDecHead; + // Dbg 12/10/21 + + SInt8 VDbgPrintFrDataSz = 1; // 0, do nothing, 1 prints data size of each frame + SInt32 VDbgSumAllFrDataSz = 0; + + + VPrintLvlAbs = abs ( PrintLvl ); + + + // Check MSis version + // Only MSis 1 is supported, MSis 2, 2.1 are not implemented, they are in MIS1__BT_FBtDecodeFr (...) + // Remark : MSis 0 is not supported by this lib + + if ( MIS1__VGMSisVersion != 1 ) { + err_retfail ( -1, (ERR_OUT,"Abort => Only MSis 1 is supported - MSis version = %d", MIS1__VGMSisVersion ) ); + } + + + + // Check param // ---------------------------------------------- @@ -20855,14 +21118,14 @@ double MIS1__BT_FBtDecodeFrLight ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtD #ifndef CC_NOT_CPP_BUILDER - if ( MeasExecTime ) { - TIME__FMeasTimeUsBegin ( 0 /* Index */ ); - } - + if ( MeasExecTime ) { + TIME__FMeasTimeUsBegin ( 0 /* Index */ ); + } + #else - // You can implement here exec tiome measurement for compiler <> C++ Builder + // You can implement here exec tiome measurement for compiler <> C++ Builder #endif @@ -20872,7 +21135,7 @@ double MIS1__BT_FBtDecodeFrLight ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtD PtDest->AcqId = PtSrc->AcqId; PtDest->TrigNb = PtSrc->AcqRawHead.Trigs.TrigNb; // Added on 30/05/2021 - + // Init var VRetOk = 1; @@ -20883,50 +21146,73 @@ double MIS1__BT_FBtDecodeFrLight ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtD VFakeHdCnt = 0; VFrWithoutTrailerCnt = 0; + VFrOvfFlagsCnt = 0; + VFrWithoutTrailer = 0; VTrailerDetected = 0; VFrTooLong = 0; VFrEnd = 0; - + VDataAfterTrailer = 0; + VRegCntInFr = 0; VPixCntInFr = 0; VRegCntInAcq = 0; VPixCntInAcq = 0; - + + VDataAfterTrailerNb = 0; + VPtFrDecHead = &PtDest->ResAAFrHead[MSisId][0]; - + // Reset frames truncated & errors counters - 30/05/2021 - + PtDest->ResAFrNbTrunc[MSisId] = 0; PtDest->ResAFrNbErr[MSisId] = 0; - + // Reset decoding function warnings + errors counter - 30/05/2021 - + MIS1__BT_VGDecodecFrWarnErr = 0; - + // ------------------------------------------------------------- // Frames decoding // ------------------------------------------------------------- - if ( PrintLvl ) { + if ( VPrintLvlAbs ) { msg (( MSG_OUT, "Decode MSis No %d, Src frame = %d W16", MSisId, VW16Nb )); } - - + + + if ( VDbgPrintFrDataSz ) { + err_error (( ERR_OUT, "Decode : AcqId = %.4d MSisId = %d, DataSz = %d W8", PtSrc->AcqId, MSisId, PtSrc->AcqRawHead.DataSz )); + } + + for ( ViW16 = 0; ViW16 < VW16Nb; ) { - + // Try to handle frames without trailer // - the first header field (W0) has already been detected at end of previous frame, don't read it again it is already here - + if ( VFrWithoutTrailer == 0 ) { VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; ViW16++; } - + + // Check if there are data after the trailer + + if ( ((VSrcW16 & 0xFF00) != 0xFE00) && (VSrcW16 != 0xFCAA) ) { + VDataAfterTrailer = 1; + VDataAfterTrailerNb++; + + if ( PrintLvl < 0 ) { + msg (( MSG_OUT, "MSis[%d] Fr = %.4d : DATA[iW16 = %.4d] = %X, ", MSisId, VFrCnt, ViW16, VSrcW16 )); + } + + } + + // Detects first W16, W0 of a frame header if ( (VSrcW16 & 0xFF00) == 0xFE00 ) { @@ -20934,7 +21220,7 @@ double MIS1__BT_FBtDecodeFrLight ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtD ViW16CurHead = ViW16 - 1; VFrHdW0 = VSrcW16; - + // Checks that next 7 are also frame header tags VFrHdW1 = PtSrc->AAMsis[MSisId][ViW16]; @@ -20955,278 +21241,378 @@ double MIS1__BT_FBtDecodeFrLight ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtD // Header confirmed // if ( 1 ) { - - if ( ((VFrHdW1 & 0xFF00) == 0xFE00) && ((VFrHdW2 & 0xFF00) == 0xFE00) && ((VFrHdW3 & 0xFF00) == 0xFE00) && ((VFrHdW4 & 0xFF00) == 0xFE00) && ((VFrHdW5 & 0xFF00) == 0xFE00) && ((VFrHdW6 & 0xFF00) == 0xFE00) && ((VFrHdW7 & 0xFF00) == 0xFE00) ) { - - // Reset regions cnt, fired pixels cnt, flags - - VRegCntInFr = 0; - VPixCntInFr = 0; - - VFrWithoutTrailer = 0; - VTrailerDetected = 0; - VFrTooLong = 0; - VFrEnd = 0; - - - // Update frame header results - - VPtFrDecHead->MSisId = MSisId; - VPtFrDecHead->FrId = VFrCnt; - - VFrCnt++; - - // Extract header - - VPtFrDecHead->MSisFrHead.AW16[0] = VFrHdW0; - VPtFrDecHead->MSisFrHead.AW16[1] = VFrHdW1; - VPtFrDecHead->MSisFrHead.AW16[2] = VFrHdW2; - VPtFrDecHead->MSisFrHead.AW16[3] = VFrHdW3; - VPtFrDecHead->MSisFrHead.AW16[4] = VFrHdW4; - VPtFrDecHead->MSisFrHead.AW16[5] = VFrHdW5; - VPtFrDecHead->MSisFrHead.AW16[6] = VFrHdW6; - VPtFrDecHead->MSisFrHead.AW16[7] = VFrHdW7; - - // Extract frames counter - - VPtFrDecHead->FrCnt = (VFrHdW0 &0xFF) + ((VFrHdW1 & 0xFF) << 8) + ((VFrHdW2 & 0xFF) << 16) + ((VFrHdW3 & 0xFF) << 24); - - if ( PrintLvl >= 2 ) { - msg (( MSG_OUT, "Header detected (Cnt = %.4d) : W7 = %X, W6 = %X, W5 = %X, W4 = %X, W3 = %X, W2 = %X, W1 = %X , W0 = %X", VFrCnt, VFrHdW7, VFrHdW6, VFrHdW5, VFrHdW4, VFrHdW3, VFrHdW2, VFrHdW1, VFrHdW0 )); - } - - - VPtFrDecHead->FirstDataW16Pos = ViW16CurHead + 8; - - // Result fields not calculated now - - VPtFrDecHead->Errors = 0; - VPtFrDecHead->FrDataSzW16 = 0; - VPtFrDecHead->RegionNb = 0; - VPtFrDecHead->FiredPixNb = 0; - VPtFrDecHead->MSisFrTrail.W16 = 0; - VPtFrDecHead->CheckSum = 0; - VPtFrDecHead->ATrigPosW16[0] = 0; - VPtFrDecHead->ATrigPosW16[MIS1__BT_FR_DEC_MAX_TRIG_NB - 1] = 0; - - - if ( PrintLvl >= 2 ) { - msg (( MSG_OUT, "FrCnt = %d", VPtFrDecHead->FrCnt )); - } - - // Processing frame - - - - // Scan frame - while (1) { + if ( ((VFrHdW1 & 0xFF00) == 0xFE00) && ((VFrHdW2 & 0xFF00) == 0xFE00) && ((VFrHdW3 & 0xFF00) == 0xFE00) && ((VFrHdW4 & 0xFF00) == 0xFE00) && ((VFrHdW5 & 0xFF00) == 0xFE00) && ((VFrHdW6 & 0xFF00) == 0xFE00) && ((VFrHdW7 & 0xFF00) == 0xFE00) ) { - VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; - ViW16++; - - // Detects region - - if ( (VSrcW16 & 0xFF00) == 0xFD00 ) { - VRegCntInFr++; - VRegCntInAcq++; - - if ( PrintLvl >= 2 ) { - msg (( MSG_OUT, "FrCnt = %d - Region", VPtFrDecHead->FrCnt )); - } - + + // Reset regions cnt, fired pixels cnt, flags + + VRegCntInFr = 0; + VPixCntInFr = 0; + + VFrWithoutTrailer = 0; + VTrailerDetected = 0; + VFrTooLong = 0; + VFrEnd = 0; + + + // Update frame header results + + VPtFrDecHead->MSisId = MSisId; + VPtFrDecHead->FrId = VFrCnt; + + VFrCnt++; + + // Extract header + + VPtFrDecHead->MSisFrHead.AW16[0] = VFrHdW0; + VPtFrDecHead->MSisFrHead.AW16[1] = VFrHdW1; + VPtFrDecHead->MSisFrHead.AW16[2] = VFrHdW2; + VPtFrDecHead->MSisFrHead.AW16[3] = VFrHdW3; + VPtFrDecHead->MSisFrHead.AW16[4] = VFrHdW4; + VPtFrDecHead->MSisFrHead.AW16[5] = VFrHdW5; + VPtFrDecHead->MSisFrHead.AW16[6] = VFrHdW6; + VPtFrDecHead->MSisFrHead.AW16[7] = VFrHdW7; + + // Extract frames counter + + VPtFrDecHead->FrCnt = (VFrHdW0 &0xFF) + ((VFrHdW1 & 0xFF) << 8) + ((VFrHdW2 & 0xFF) << 16) + ((VFrHdW3 & 0xFF) << 24); + + + if ( VDbgPrintFrDataSz ) { + err_error (( ERR_OUT, "Decode : AcqId = %.4d MSisId = %d, FrId = %.4d, , FrCnt = %u, HEADER DETECTED", PtSrc->AcqId, MSisId, VPtFrDecHead->FrId, VPtFrDecHead->FrCnt )); } - - - // Detects trailer - if ( (VSrcW16 & 0xFF00) == 0xFF00 ) { - - VTrailerDetected = 1; - - VPtFrDecHead->MSisFrTrail.W16 = VSrcW16; - - // Calc fr data size - - VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; - - // Reads checksum - + + + if ( VPrintLvlAbs >= 2 ) { + msg (( MSG_OUT, "Header detected (Cnt = %.4d) : W7 = %X, W6 = %X, W5 = %X, W4 = %X, W3 = %X, W2 = %X, W1 = %X , W0 = %X", VFrCnt, VFrHdW7, VFrHdW6, VFrHdW5, VFrHdW4, VFrHdW3, VFrHdW2, VFrHdW1, VFrHdW0 )); + } + + + VPtFrDecHead->FirstDataW16Pos = ViW16CurHead + 8; + + // Result fields not calculated now + + VPtFrDecHead->Errors = 0; + VPtFrDecHead->NoTrailer = 0; // 08/06/2021 + VPtFrDecHead->Truncated = 0; // 09/06/2021 + VPtFrDecHead->FrDataSzW16 = 0; + VPtFrDecHead->RegionNb = 0; + VPtFrDecHead->FiredPixNb = 0; + VPtFrDecHead->MSisFrTrail.W16 = 0; + VPtFrDecHead->CheckSum = 0; + VPtFrDecHead->ATrigPosW16[0] = 0; + VPtFrDecHead->ATrigPosW16[MIS1__BT_FR_DEC_MAX_TRIG_NB - 1] = 0; + + + if ( VPrintLvlAbs >= 2 ) { + msg (( MSG_OUT, "FrCnt = %d", VPtFrDecHead->FrCnt )); + } + + // Processing frame + + + + // Scan frame + + while (1) { + VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; ViW16++; - VPtFrDecHead->CheckSum = VSrcW16; - - if ( PrintLvl >= 2 ) { - msg (( MSG_OUT, "Fr No %.3d MSisFrCnt = %.6d - Trailer", VFrCnt, VPtFrDecHead->FrCnt )); + // Detects region + + if ( (VSrcW16 & 0xFF00) == 0xFD00 ) { + VRegCntInFr++; + VRegCntInAcq++; + + if ( VPrintLvlAbs >= 2 ) { + msg (( MSG_OUT, "FrCnt = %d - Region", VPtFrDecHead->FrCnt )); + } + } + + + // Detects trailer + + if ( (VSrcW16 & 0xFF00) == 0xFF00 ) { + + VTrailerDetected = 1; + + VPtFrDecHead->MSisFrTrail.W16 = VSrcW16; + + if ( VPtFrDecHead->MSisFrTrail.F.Flags != 0 ) { + ++VFrOvfFlagsCnt; + msg (( MSG_OUT, "AcqId = %.3d, Fr = %.4d : Trailer flas <> 0 : FrOvf = %d, RegOvf = %d, SRegOvf = %d, FSLimit = %d", PtSrc->AcqId, VPtFrDecHead->FrId, VPtFrDecHead->MSisFrTrail.B.FrOvf, VPtFrDecHead->MSisFrTrail.B.RegOvf, VPtFrDecHead->MSisFrTrail.B.SRegOvf, VPtFrDecHead->MSisFrTrail.B.FSLimit )); + } + + if ( 1 /* VPrintLvlAbs >= 1 */ ) { + + if ( (VSrcW16 & 0x00FF) != 0 ) { + msg (( MSG_OUT, "$$$$$$$$$$$$$$$$$$$$ OVF : MSis[%d] Fr No %.3d MSisFrCnt = %.6d - Trailer = %X", MSisId, VFrCnt, VPtFrDecHead->FrCnt, VSrcW16 )); + } + + } + + + // Calc fr data size + + VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; - } - - // Detects header => frame without trailer at the end - - if ( (VSrcW16 & 0xFF00) == 0xFE00 ) { - VFrWithoutTrailer = 1; - VFrWithoutTrailerCnt++; - - // Calc fr data size - - VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; - } - - // Frame is too long : Decoding bug or MSis 1 side bug or unknown info / MSis 1 data stream - - if ( ViW16 >= VW16Nb ) { - VFrTooLong = 1; - - // Calc fr data size - - VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; - } - - - VFrEnd = VTrailerDetected || VFrWithoutTrailer || VFrTooLong; - - // Pixel detected : Current W16 is not a region header, an empty W16 and is not an end of frame tag - - if ( (VFrEnd == 0) && ((VSrcW16 & 0xFF00) != 0xFD00) && (VSrcW16 != 0xFCAA) ) { - VPixCntInFr++; - VPixCntInAcq++; - } - - - // End of frame => Update frame header info - - if ( VFrEnd ) { - - VPtFrDecHead->Errors = 0; // Not handled now 25/05/2021 - VPtFrDecHead->ATrigPosW16[0] = 0; // Not handled now 25/05/2021 - VPtFrDecHead->ATrigPosW16[MIS1__BT_FR_DEC_MAX_TRIG_NB - 1] = 0; // Not handled now 25/05/2021 - - // VPtFrDecHead->FrDataSzW16 = 0; // Calculated before - // VPtFrDecHead->MSisFrTrail.W16 = 0; // Calculated before - // VPtFrDecHead->CheckSum = 0; // Calculated before - - VPtFrDecHead->RegionNb = VRegCntInFr; - VPtFrDecHead->FiredPixNb = VPixCntInFr; - - // Frame too long => Exits on error - // No time now to handle it in a better way => TBD later - // Upgraded on 29/05/2021 - // If it is the last frame of Acq => Warning, because the frame is probably only cut - // If it is NOT the last frame of Acq => Error because it should not happne => There is a problem - - if ( VFrTooLong ) { - - PtDest->ResAFrNbTrunc[MSisId]++; // Update truncated frames counter - 30/05/2021 - - MIS1__BT_VGDecodecFrWarnErr++; + if ( VDbgPrintFrDataSz ) { + VDbgSumAllFrDataSz += VPtFrDecHead->FrDataSzW16; + err_error (( ERR_OUT, "Decode : AcqId = %.4d MSisId = %d, FrId = %.4d, DataSz = %d W16, FrCnt = %u", PtSrc->AcqId, MSisId, VPtFrDecHead->FrId, VPtFrDecHead->FrDataSzW16, VPtFrDecHead->FrCnt )); + } + + // Reads checksum + + VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + + VPtFrDecHead->CheckSum = VSrcW16; + + if ( VPrintLvlAbs >= 2 ) { + msg (( MSG_OUT, "Fr No %.3d MSisFrCnt = %.6d - Trailer", VFrCnt, VPtFrDecHead->FrCnt )); + } + + } + + // Detects header => frame without trailer at the end + + if ( (VSrcW16 & 0xFF00) == 0xFE00 ) { + if ( VFrCnt >= PtSrc->FrNb ) { - VPtFrDecHead->Errors = MIS1__BT_FR_ERR_TRUNC_LAST_FR; - // err_warning (( ERR_OUT, "Stop frame processing max W16 nb = %d reached => VFrCnt = %d >= FrNbInAcq = %d => Last frame cut", VW16Nb, VFrCnt, PtSrc->FrNb )); + err_error (( ERR_OUT, "WARNING fr > acq fr nb => !!!!!!!!!!!!!! FR = %d NO TRAILER !!!!!!!!!!!!!!!!!!!!", VFrCnt )); } - + else { - VPtFrDecHead->Errors = MIS1__BT_FR_ERR_TRUNC; - err_error (( ERR_OUT, "Stop frame processing max W16 nb = %d reached => VFrCnt = %d < FrNbInAcq = %d => MSis 1 or decoding sw bug !", VW16Nb, VFrCnt, PtSrc->FrNb )); - return (-1); + err_error (( ERR_OUT, "ERROR fr in acq fr nb => !!!!!!!!!!!!!! FR = %d NO TRAILER !!!!!!!!!!!!!!!!!!!!", VFrCnt )); } - - } // End if ( VFrTooLong ) - - // Normal end of frame => break frame decoding loop - - break; - } - - } // End while (1) frame scanning - - - VPtFrDecHead++; - - } - - // Fake header - - else { + + + + if ( PrintLvl < 0 ) { + msg (( MSG_OUT, "!!!!!!!!!!!!!! FR = %d NO TRAILER - A !!!!!!!!!!!!!!!!!!!!", VFrCnt )); + } + + VFrWithoutTrailer = 1; + VFrWithoutTrailerCnt++; + VPtFrDecHead->NoTrailer = 1; // 08/06/2021 + + // Calc fr data size + + VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; + } + + // Frame is too long : Decoding bug or MSis 1 side bug or unknown info / MSis 1 data stream + + if ( ViW16 >= VW16Nb ) { + VFrTooLong = 1; + + VPtFrDecHead->Truncated = 1; // 09/06/2021 + + // Calc fr data size + + VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; + + if ( PrintLvl < 0 ) { + msg (( MSG_OUT, "!!!!!!!!!!!!!! FR = %d IS TOO LONG !!!!!!!!!!!!!!!!!!!!", VFrCnt )); + err_error (( ERR_OUT, "%s", MSG_OUT )); + } + + + } + + + VFrEnd = VTrailerDetected || VFrWithoutTrailer || VFrTooLong; + + // Pixel detected : Current W16 is not a region header, an empty W16 and is not an end of frame tag + + if ( (VFrEnd == 0) && ((VSrcW16 & 0xFF00) != 0xFD00) && (VSrcW16 != 0xFCAA) ) { + VPixCntInFr++; + VPixCntInAcq++; + } + + + // End of frame => Update frame header info + + if ( VFrEnd ) { + + VPtFrDecHead->Errors = 0; // Not handled now 25/05/2021 + VPtFrDecHead->ATrigPosW16[0] = 0; // Not handled now 25/05/2021 + VPtFrDecHead->ATrigPosW16[MIS1__BT_FR_DEC_MAX_TRIG_NB - 1] = 0; // Not handled now 25/05/2021 + + // VPtFrDecHead->FrDataSzW16 = 0; // Calculated before + // VPtFrDecHead->MSisFrTrail.W16 = 0; // Calculated before + // VPtFrDecHead->CheckSum = 0; // Calculated before + + VPtFrDecHead->RegionNb = VRegCntInFr; + VPtFrDecHead->FiredPixNb = VPixCntInFr; + + // Frame too long => Exits on error + // No time now to handle it in a better way => TBD later + // Upgraded on 29/05/2021 + // If it is the last frame of Acq => Warning, because the frame is probably only cut + // If it is NOT the last frame of Acq => Error because it should not happne => There is a problem + + if ( VFrTooLong ) { + + if ( PrintLvl < 0 ) { + msg (( MSG_OUT, "*********************** ACQ %d MSis = %d FR %d TOO LONG = %d W16, VW16Nb = %d ******************************", PtDest->AcqId, MSisId, VFrCnt, VPtFrDecHead->FrDataSzW16, VW16Nb )); + } + + err_error (( ERR_OUT, "WARNING : Stop frame processing max W16 nb = %d reached => AcqId = %.4d, MSisID = %d : VFrCnt = %d < FrNbInAcq = %d => MSis 1 or decoding sw bug !", VW16Nb, PtSrc->AcqId, MSisId, VFrCnt, PtSrc->FrNb )); + + PtDest->ResAFrNbTrunc[MSisId]++; // Update truncated frames counter - 30/05/2021 + + MIS1__BT_VGDecodecFrWarnErr++; + + if ( VFrCnt >= PtSrc->FrNb ) { + VPtFrDecHead->Errors = MIS1__BT_FR_ERR_TRUNC_LAST_FR; + // err_warning (( ERR_OUT, "Stop frame processing max W16 nb = %d reached => VFrCnt = %d >= FrNbInAcq = %d => Last frame cut", VW16Nb, VFrCnt, PtSrc->FrNb )); + } + + else { + + VPtFrDecHead->Errors = MIS1__BT_FR_ERR_TRUNC; + + err_error (( ERR_OUT, "ERROR : Stop frame processing max W16 nb = %d reached => AcqId = %.4d , MSisID = %d : VFrCnt = %d < FrNbInAcq = %d => MSis 1 or decoding sw bug !", VW16Nb, PtSrc->AcqId, MSisId, VFrCnt, PtSrc->FrNb )); + + // return (-2); // 10/10/2021 return (-2), before it was return (-1) + + // Since 11/10/2021 + + VRetOk = -2; + break; + } + + } // End if ( VFrTooLong ) + + // Normal end of frame => break frame decoding loop + + break; + } + + } // End while (1) frame scanning + + + VPtFrDecHead++; + + } - VFakeHdCnt++; + // Fake header - if ( PrintLvl >= 1 ) { - msg (( MSG_OUT, "Fake header detected (Cnt = %.4d) : W7 = %X, W6 = %X, W5 = %X, W4 = %X, W3 = %X, W2 = %X, W1 = %X , W0 = %X", VFakeHdCnt, VFrHdW7, VFrHdW6, VFrHdW5, VFrHdW4, VFrHdW3, VFrHdW2, VFrHdW1, VFrHdW0 )); + else { + + VFakeHdCnt++; + + if ( VPrintLvlAbs >= 1 ) { + msg (( MSG_OUT, "Fake header detected (Cnt = %.4d) : W7 = %X, W6 = %X, W5 = %X, W4 = %X, W3 = %X, W2 = %X, W1 = %X , W0 = %X", VFakeHdCnt, VFrHdW7, VFrHdW6, VFrHdW5, VFrHdW4, VFrHdW3, VFrHdW2, VFrHdW1, VFrHdW0 )); + } + } - } - - - } // End frame processing + } // End frame processing + + + } // End for - - } // End for - - - // Update results - - PtDest->ParFrNbInSrcAcq = PtSrc->FrNb; - - - PtDest->ResAFrNb[MSisId] = VFrCnt; - PtDest->ResAFrNbWoTrailer[MSisId] = VFrWithoutTrailerCnt; - PtDest->ResAFrFakeHeadCnt[MSisId] = VFakeHdCnt; - PtDest->ResARegNb[MSisId] = VRegCntInAcq; - PtDest->ResAPixNb[MSisId] = VPixCntInAcq; - - - if ( (VFrCnt == 0) || (VFakeHdCnt > 0) ) { - err_error (( ERR_OUT, "Error : VFrCnt = %d, VFakeHdCnt = %d", VFrCnt, VFakeHdCnt )); - VRetOk = -1; - } - - - if ( PrintLvl ) { + // Update results - msg (( MSG_OUT, "" )); - msg (( MSG_OUT, "%d frames found, %d fake headers found", VFrCnt, VFakeHdCnt )); - msg (( MSG_OUT, "ViW16 = %d", ViW16 )); + PtDest->ParFrNbInSrcAcq = PtSrc->FrNb; - msg (( MSG_OUT, "" )); - } - - - #ifndef CC_NOT_CPP_BUILDER - - if ( MeasExecTime ) { - VExecTimeUs = TIME__FMeasTimeUsEnd ( 0 /* Index */ ); - } - else { - VExecTimeUs = 0; + PtDest->ResAFrNb[MSisId] = VFrCnt; + PtDest->ResAFrNbWoTrailer[MSisId] = VFrWithoutTrailerCnt; + PtDest->ResAFrFakeHeadCnt[MSisId] = VFakeHdCnt; + PtDest->ResARegNb[MSisId] = VRegCntInAcq; + PtDest->ResAPixNb[MSisId] = VPixCntInAcq; + PtDest->ResAFrNbOvfFlags[MSisId] = VFrOvfFlagsCnt; + + + if ( (VFrCnt == 0) || (VFakeHdCnt > 0) ) { + err_error (( ERR_OUT, "Error : VFrCnt = %d, VFakeHdCnt = %d", VFrCnt, VFakeHdCnt )); + VRetOk = -1; } - #else - + + if ( VDbgPrintFrDataSz ) { + err_error (( ERR_OUT, "" )); + err_error (( ERR_OUT, "Decode : AcqId = %.4d MSisId = %d, Total sz = %d W16", PtSrc->AcqId, MSisId, VDbgSumAllFrDataSz )); + err_error (( ERR_OUT, "" )); + err_error (( ERR_OUT, "" )); + } + + + + if ( VPrintLvlAbs ) { + + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "AcqId = %.4d, MSisId = %d", PtSrc->AcqId, MSisId )); + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "%d frames found, %d fake headers found, %d frames with OVF flags", VFrCnt, VFakeHdCnt, VFrOvfFlagsCnt )); + msg (( MSG_OUT, "ViW16 = %d", ViW16 )); + + msg (( MSG_OUT, "" )); + } + + + if ( VDataAfterTrailer ) { + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "!!!!!!!!!!!!!! AcqId = %.4d : %d Data W16 after trailer !!!!!!!!!!!!!!", PtSrc->AcqId, VDataAfterTrailerNb )); + } + + + if ( VFrOvfFlagsCnt != 0 ) { + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "WARNING !!!!!!!!!!!!!!!!!!!!! AcqId = %.4d, MSisId = %d => %d frames with OVF bit(s) set", PtSrc->AcqId, MSisId, VFrOvfFlagsCnt )); + msg (( MSG_OUT, "" )); + } + + + #ifndef CC_NOT_CPP_BUILDER + + if ( MeasExecTime ) { + VExecTimeUs = TIME__FMeasTimeUsEnd ( 0 /* Index */ ); + } + + else { + VExecTimeUs = 0; + } + + #else + // You can implement here exec tiome measurement for compiler <> C++ Builder VExecTimeUs = 0; // No exec time measurement implementation => Returns 0 - - #endif - - + + #endif + + + // Before 11/10/2021 // return (VExecTimeUs * VRetOk ); + + // Since 11/10/2021 + + if ( VRetOk < 0 ) { + return ( VRetOk ); + } + + + return (VExecTimeUs); + } - return (VExecTimeUs * VRetOk ); -} - /* DOC_FUNC_BEGIN */ /** =================================================================================== -* \fn : double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, UInt8 PrintLvl ) +* \fn : double MIS1__BT_FBtDecodeFrLight ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, SInt8 PrintLvl ) * * \brief : Decode the frames for one MSis 1 : List frames, exytract fr header, fr cnt but NO PIXELS DECODING \n * @@ -21257,8 +21643,14 @@ double MIS1__BT_FBtDecodeFrLight ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtD * : * bug : * : -* \date : Date : 25/05/2021 -* \date : Rev : +* \date : Date : 24/05/2021 +* \date : Rev : 25/05/2021 +* \date : Rev : 08/06/2021 - NoTrailer field update +* \date : Rev : 08/06/2021 - Truncated field update +* \date : Rev : 11/10/2021 +* : - PrintLvl => SInt8, Use < 0 print level to print also "Frame too long messages", "Data after trailer" +* : - In case of frame too long and fr no < param FrNb => return -2, before it was returning -1 +* : * \date : Doc date : 24/05/2021 * \author : Name : Gilles CLAUS * \author : E-mail : gilles.claus@iphc.cnrs.fr @@ -21268,10 +21660,62 @@ double MIS1__BT_FBtDecodeFrLight ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtD */ /* DOC_FUNC_END */ +// 14/10/2021 +// +// Returns frames number decoded without error for ALL MSis 1 for last call of +// - MIS1__BT_FBtDecodeFrLight (...) +// - MIS1__BT_FBtDecodeFr (...) +// +// +// - To get ok fr nb of one MSis => MIS1__BT_FBtDecodeFrGetOkFrNb ( 0..5, -1 ) +// - To get minimum ok fr nb of N x MSis => MIS1__BT_FBtDecodeFrGetOkFrNb ( -1, N ) + + +SInt32 MIS1__BT_FBtDecodeFrGetOkFrNb ( SInt8 MSisId, SInt8 MSisNb ) { + + SInt32 VMinOkFrNb; + SInt8 ViMSis; + + if ( MSisId >= 0) { + + msg (( MSG_OUT, "MIS1__BT_FBtDecodeFrGetOkFrNb (MSisId=%d) = %d", MIS1__VGADecodeFrOkFrNb[MSisId] )); + + return ( MIS1__VGADecodeFrOkFrNb[MSisId] ); + + } + + // Search min + + VMinOkFrNb = MIS1__VGADecodeFrOkFrNb[0]; + + for ( ViMSis = 1; ViMSis < MSisNb; ViMSis++ ) { + + if ( MIS1__VGADecodeFrOkFrNb[ViMSis] < VMinOkFrNb ) { + VMinOkFrNb = MIS1__VGADecodeFrOkFrNb[ViMSis]; + } + + } + + msg (( MSG_OUT, "MIS1__BT_FBtDecodeFrGetOkFrNb (Min) = %d", VMinOkFrNb )); + + return (VMinOkFrNb); + +} + +// Function to use when debugging will be finished + -double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, UInt8 PrintLvl ) { + + + +double MIS1__BT_FBtDecodeFrLight_new ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, SInt8 PrintLvl ) { + + static UInt8 VEmulFrNoTrail = 0; SInt32 VRetOk; + + SInt8 VPrintLvlAbs; + double VExecTimeUs; SInt32 VSrcW16; // W16 to convert @@ -21283,9 +21727,9 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt32 VFakeHdCnt; // Counter of fake headers => first W16 is header tag but not following 7 W16 SInt32 VFrWithoutTrailerCnt; // Counter of frames without trailer SInt32 ViW16CurHead; // First W16 of current header + SInt32 VFrOvfFlagsCnt; // Counter of frames with at leats one OVF flag set 09/10/2021 - TW128As8W16 VFrHd; // Frame header (128 bits) UInt16 VFrHdW0; // Frame header W0 UInt16 VFrHdW1; // Frame header W1 @@ -21296,7 +21740,7 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, UInt16 VFrHdW6; // Frame header W6 UInt16 VFrHdW7; // Frame header W7 - + SInt32 VRegCntInFr; // Counter of regiosn in frame SInt32 VRegCntInAcq; // Counter of regiosn in Acq @@ -21308,20 +21752,18 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, UInt8 VFrWithoutTrailer; // Flag to handle frames without a trailer at the end, a header can starts UInt8 VTrailerDetected; // Flag => trailer detected in current frame scanning UInt8 VFrTooLong; // Flag => frame length > max possible - UInt8 VFrEnd; // Flag => end of frame = OR of previois flags - - // Pixels decoding 25/05/2021 + UInt8 VFrEnd; // Flag => end of frame = OR of previous flags + UInt8 VDataAfterTrailer; // Flag => Data dtectedt after frame trailer - MIS1__TDsRegHeader VCurRegHead; // Current region - MIS1__TStdPix VCurPix; // Current pixel + SInt32 VDataAfterTrailerNb; // Counter of data after trailer - MIS1__TPixXY VResPix; // Decoded pixel x,y format to be stored in ResAAAFrPix[MSisId][FrId][PixNo] - MIS1__TPixXY* VPtResPix; // Pointer to current result pixel in ResAAAFrPix[MSisId][FrId][PixNo] - MIS1__TBtFrDecHead* VPtFrDecHead; + VPrintLvlAbs = abs ( PrintLvl ); + + // Check param // ---------------------------------------------- @@ -21342,12 +21784,11 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, #else - + // You can implement here exec tiome measurement for compiler <> C++ Builder - - #endif + #endif // Propagates AcqId and Triggers nb @@ -21365,11 +21806,14 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, VFakeHdCnt = 0; VFrWithoutTrailerCnt = 0; + VFrOvfFlagsCnt = 0; + VFrWithoutTrailer = 0; VTrailerDetected = 0; VFrTooLong = 0; VFrEnd = 0; + VDataAfterTrailer = 0; VRegCntInFr = 0; @@ -21377,34 +21821,30 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, VRegCntInAcq = 0; VPixCntInAcq = 0; - VCurRegHead.W16 = 0; - VCurPix.W16 = 0; - - VResPix.C.x = 0; - VResPix.C.y = 0; - - VPtResPix = &PtDest->ResAAAFrPix[MSisId][0 /* Fr no */][0 /* Pix no */]; - - + VDataAfterTrailerNb = 0; + VPtFrDecHead = &PtDest->ResAAFrHead[MSisId][0]; // Reset frames truncated & errors counters - 30/05/2021 - + PtDest->ResAFrNbTrunc[MSisId] = 0; PtDest->ResAFrNbErr[MSisId] = 0; - + // Reset decoding function warnings + errors counter - 30/05/2021 - + MIS1__BT_VGDecodecFrWarnErr = 0; - + + + MIS1__VGADecodeFrOkFrNb[MSisId] = 0; + // ------------------------------------------------------------- // Frames decoding // ------------------------------------------------------------- - if ( PrintLvl ) { + if ( VPrintLvlAbs ) { msg (( MSG_OUT, "Decode MSis No %d, Src frame = %d W16", MSisId, VW16Nb )); } @@ -21419,6 +21859,19 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, ViW16++; } + // Check if there are data after the trailer + + if ( ((VSrcW16 & 0xFF00) != 0xFE00) && (VSrcW16 != 0xFCAA) ) { + VDataAfterTrailer = 1; + VDataAfterTrailerNb++; + + if ( PrintLvl < 0 ) { + msg (( MSG_OUT, "MSis[%d] Fr = %.4d : DATA[iW16 = %.4d] = %X, ", MSisId, VFrCnt, ViW16, VSrcW16 )); + } + + } + + // Detects first W16, W0 of a frame header if ( (VSrcW16 & 0xFF00) == 0xFE00 ) { @@ -21427,7 +21880,7 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, VFrHdW0 = VSrcW16; - // Checks that next 7 are also fraem header tags + // Checks that next 7 are also frame header tags VFrHdW1 = PtSrc->AAMsis[MSisId][ViW16]; ViW16++; @@ -21443,7 +21896,7 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, ViW16++; VFrHdW7 = PtSrc->AAMsis[MSisId][ViW16]; ViW16++; - + // Header confirmed // if ( 1 ) { @@ -21451,7 +21904,7 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, if ( ((VFrHdW1 & 0xFF00) == 0xFE00) && ((VFrHdW2 & 0xFF00) == 0xFE00) && ((VFrHdW3 & 0xFF00) == 0xFE00) && ((VFrHdW4 & 0xFF00) == 0xFE00) && ((VFrHdW5 & 0xFF00) == 0xFE00) && ((VFrHdW6 & 0xFF00) == 0xFE00) && ((VFrHdW7 & 0xFF00) == 0xFE00) ) { // Reset regions cnt, fired pixels cnt, flags - + VRegCntInFr = 0; VPixCntInFr = 0; @@ -21460,17 +21913,12 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, VFrTooLong = 0; VFrEnd = 0; - VCurRegHead.W16 = 0; // Resets region header // Update frame header results VPtFrDecHead->MSisId = MSisId; VPtFrDecHead->FrId = VFrCnt; - // Sets ptr to destination pixels stream - - VPtResPix = &PtDest->ResAAAFrPix[MSisId][VFrCnt][0 /* Pix No */]; - VFrCnt++; // Extract header @@ -21488,9 +21936,8 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, VPtFrDecHead->FrCnt = (VFrHdW0 &0xFF) + ((VFrHdW1 & 0xFF) << 8) + ((VFrHdW2 & 0xFF) << 16) + ((VFrHdW3 & 0xFF) << 24); - if ( PrintLvl >= 3 ) { + if ( VPrintLvlAbs >= 2 ) { msg (( MSG_OUT, "Header detected (Cnt = %.4d) : W7 = %X, W6 = %X, W5 = %X, W4 = %X, W3 = %X, W2 = %X, W1 = %X , W0 = %X", VFrCnt, VFrHdW7, VFrHdW6, VFrHdW5, VFrHdW4, VFrHdW3, VFrHdW2, VFrHdW1, VFrHdW0 )); - msg (( MSG_OUT, "FrCnt = %d", VPtFrDecHead->FrCnt )); } @@ -21499,6 +21946,8 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, // Result fields not calculated now VPtFrDecHead->Errors = 0; + VPtFrDecHead->NoTrailer = 0; // 08/06/2021 + VPtFrDecHead->Truncated = 0; // 09/06/2021 VPtFrDecHead->FrDataSzW16 = 0; VPtFrDecHead->RegionNb = 0; VPtFrDecHead->FiredPixNb = 0; @@ -21506,10 +21955,18 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, VPtFrDecHead->CheckSum = 0; VPtFrDecHead->ATrigPosW16[0] = 0; VPtFrDecHead->ATrigPosW16[MIS1__BT_FR_DEC_MAX_TRIG_NB - 1] = 0; - - + + + if ( VPrintLvlAbs >= 2 ) { + msg (( MSG_OUT, "FrCnt = %d", VPtFrDecHead->FrCnt )); + } + // Processing frame - + + + + // Scan frame + while (1) { VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; @@ -21518,29 +21975,38 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, // Detects region if ( (VSrcW16 & 0xFF00) == 0xFD00 ) { - VRegCntInFr++; VRegCntInAcq++; - VCurRegHead.W16 = VSrcW16; - - if ( PrintLvl >= 2 ) { - msg (( MSG_OUT, "" )); - msg (( MSG_OUT, "Fr No %.3d : MSis 1 FrCnt = %d - Region No %.2d", VFrCnt - 1, VPtFrDecHead->FrCnt, VRegCntInFr - 1 )); + if ( VPrintLvlAbs >= 2 ) { + msg (( MSG_OUT, "FrCnt = %d - Region", VPtFrDecHead->FrCnt )); } - - continue; + } // Detects trailer if ( (VSrcW16 & 0xFF00) == 0xFF00 ) { - + VTrailerDetected = 1; - + VPtFrDecHead->MSisFrTrail.W16 = VSrcW16; + if ( VPtFrDecHead->MSisFrTrail.F.Flags != 0 ) { + ++VFrOvfFlagsCnt; + msg (( MSG_OUT, "AcqId = %.3d, Fr = %.4d : Trailer flas <> 0 : FrOvf = %d, RegOvf = %d, SRegOvf = %d, FSLimit = %d", PtSrc->AcqId, VPtFrDecHead->FrId, VPtFrDecHead->MSisFrTrail.B.FrOvf, VPtFrDecHead->MSisFrTrail.B.RegOvf, VPtFrDecHead->MSisFrTrail.B.SRegOvf, VPtFrDecHead->MSisFrTrail.B.FSLimit )); + } + + if ( 1 /* VPrintLvlAbs >= 1 */ ) { + + if ( (VSrcW16 & 0x00FF) != 0 ) { + msg (( MSG_OUT, "$$$$$$$$$$$$$$$$$$$$ OVF : MSis[%d] Fr No %.3d MSisFrCnt = %.6d - Trailer = %X", MSisId, VFrCnt, VPtFrDecHead->FrCnt, VSrcW16 )); + } + + } + + // Calc fr data size VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; @@ -21552,17 +22018,34 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, VPtFrDecHead->CheckSum = VSrcW16; - if ( PrintLvl >= 3 ) { + + if ( VPrintLvlAbs >= 2 ) { msg (( MSG_OUT, "Fr No %.3d MSisFrCnt = %.6d - Trailer", VFrCnt, VPtFrDecHead->FrCnt )); } - + } // Detects header => frame without trailer at the end - if ( (VSrcW16 & 0xFF00) == 0xFE00 ) { + if ( (VSrcW16 & 0xFF00) == 0xFE00 ) { + + if ( VFrCnt >= PtSrc->FrNb ) { + err_error (( ERR_OUT, "WARNING fr > acq fr nb => !!!!!!!!!!!!!! FR = %d NO TRAILER !!!!!!!!!!!!!!!!!!!!", VFrCnt )); + } + + else { + err_error (( ERR_OUT, "ERROR fr in acq fr nb => !!!!!!!!!!!!!! FR = %d NO TRAILER !!!!!!!!!!!!!!!!!!!!", VFrCnt )); + } + + + + if ( PrintLvl < 0 ) { + msg (( MSG_OUT, "!!!!!!!!!!!!!! FR = %d NO TRAILER - A !!!!!!!!!!!!!!!!!!!!", VFrCnt )); + } + VFrWithoutTrailer = 1; VFrWithoutTrailerCnt++; + VPtFrDecHead->NoTrailer = 1; // 08/06/2021 // Calc fr data size @@ -21574,50 +22057,50 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, if ( ViW16 >= VW16Nb ) { VFrTooLong = 1; + VPtFrDecHead->Truncated = 1; // 09/06/2021 + // Calc fr data size + VPtFrDecHead->Errors = MIS1__BT_FR_ERR_TRUNC; + + // Before 11/10/2021 + + #ifdef MIS1__CC_DECODE_FR_STRICT + err_error (( ERR_OUT, "ERROR : Stop frame processing max W16 nb = %d reached => VFrCnt = %d < FrNbInAcq = %d => MSis 1 or decoding sw bug !", VW16Nb, VFrCnt, PtSrc->FrNb )); + return (-2); // 10/10/2021 return (-2), before it was return (-1) + + // Since 11/10/2021 + + #else + err_error (( ERR_OUT, "WARNING : Stop frame processing max W16 nb = %d reached => VFrCnt = %d < FrNbInAcq = %d => MSis 1 or decoding sw bug !", VW16Nb, VFrCnt, PtSrc->FrNb )); + VRetOk = -2; + break; + #endif + + + // WARNING 14/10/2021 !!!!!!!!!!! + // + // => Checked if this code is useful or if it can be removed + // Now it will be never executed + VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; + + if ( PrintLvl < 0 ) { + msg (( MSG_OUT, "!!!!!!!!!!!!!! FR = %d IS TOO LONG !!!!!!!!!!!!!!!!!!!!", VFrCnt )); + err_error (( ERR_OUT, "%s", MSG_OUT )); + } + + } VFrEnd = VTrailerDetected || VFrWithoutTrailer || VFrTooLong; // Pixel detected : Current W16 is not a region header, an empty W16 and is not an end of frame tag - - // if ( (VFrEnd == 0) && ((VSrcW16 & 0xFF00) != 0xFD00) && (VSrcW16 != 0xFCAA) ) { // Test on region not needed now with continue at end of region block - - if ( (VFrEnd == 0) && (VSrcW16 != 0xFCAA) ) { - + + if ( (VFrEnd == 0) && ((VSrcW16 & 0xFF00) != 0xFD00) && (VSrcW16 != 0xFCAA) ) { VPixCntInFr++; VPixCntInAcq++; - - VCurPix.W16 = VSrcW16; - - // Calcul de Y : DATA[15:7] (9 bits �quivalent � 10 bits DATA[15:6]/2) - - VResPix.C.y = VCurPix.F.PixAddr / 2; - - // Calcul de X : REGION_HEADER[5:0]*16+DATA[5:3]*2+DATA[6] xor DATA[7] - - VResPix.C.x = (VCurRegHead.F.Reg * 16) + (VCurPix.F.PeAddr * 2) + (VCurPix.B.b6 ^ VCurPix.B.b7); - - // Add in destination array - - if ( VPixCntInFr > MIS1__BT_FR_DEC_MAX_PIX_NB) { - err_warning (( ERR_OUT, "Cant add pixel, destination list is full with %d pixels : AcqId = %d, FrId = %d", MIS1__BT_FR_DEC_MAX_PIX_NB, PtSrc->AcqId, VFrCnt - 1 )); - } - - else { - *VPtResPix = VResPix; - VPtResPix++; - } - - // Print - - if ( PrintLvl >= 2 ) { - msg (( MSG_OUT, "Pixel : x = %d, y = %d", VResPix.C.x, VResPix.C.y )); - } - } @@ -21635,45 +22118,56 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, VPtFrDecHead->RegionNb = VRegCntInFr; VPtFrDecHead->FiredPixNb = VPixCntInFr; - - - + // Frame too long => Exits on error // No time now to handle it in a better way => TBD later // Upgraded on 29/05/2021 // If it is the last frame of Acq => Warning, because the frame is probably only cut // If it is NOT the last frame of Acq => Error because it should not happne => There is a problem - if ( VFrTooLong ) { - - PtDest->ResAFrNbTrunc[MSisId]++; // Update truncated frames counter - 30/05/2021 - + + if ( PrintLvl < 0 ) { + msg (( MSG_OUT, "*********************** ACQ %d MSis = %d FR %d TOO LONG = %d W16, VW16Nb = %d ******************************", PtDest->AcqId, MSisId, VFrCnt, VPtFrDecHead->FrDataSzW16, VW16Nb )); + } + + err_error (( ERR_OUT, "WARNING : Stop frame processing max W16 nb = %d reached => AcqId = %.4d, MSisID = %d : VFrCnt = %d < FrNbInAcq = %d => MSis 1 or decoding sw bug !", VW16Nb, PtSrc->AcqId, MSisId, VFrCnt, PtSrc->FrNb )); + + PtDest->ResAFrNbTrunc[MSisId]++; // Update truncated frames counter - 30/05/2021 + MIS1__BT_VGDecodecFrWarnErr++; - + if ( VFrCnt >= PtSrc->FrNb ) { + VPtFrDecHead->Errors = MIS1__BT_FR_ERR_TRUNC_LAST_FR; - // err_warning (( ERR_OUT, "Stop frame processing max W16 nb = %d reached => VFrCnt = %d >= FrNbInAcq = %d => Last frame cut", VW16Nb, VFrCnt, PtSrc->FrNb )); + // err_warning (( ERR_OUT, "Stop frame processing max W16 nb = %d reached => VFrCnt = %d >= FrNbInAcq = %d => Last frame cut, set VFrCnt = %d ", VW16Nb, VFrCnt, PtSrc->FrNb, PtSrc->FrNb )); + + VFrCnt = PtSrc->FrNb; // 14/10/2021 + break; // 14/10/2021 + } - + else { + VPtFrDecHead->Errors = MIS1__BT_FR_ERR_TRUNC; - err_error (( ERR_OUT, "Stop frame processing max W16 nb = %d reached => VFrCnt = %d < FrNbInAcq = %d => MSis 1 or decoding sw bug !", VW16Nb, VFrCnt, PtSrc->FrNb )); - return (-1); - } - - } // End if ( VFrTooLong ) - - - - - - - - - - + + err_error (( ERR_OUT, "ERROR : Stop frame processing max W16 nb = %d reached => AcqId = %.4d , MSisID = %d : VFrCnt = %d < FrNbInAcq = %d => MSis 1 or decoding sw bug !", VW16Nb, PtSrc->AcqId, MSisId, VFrCnt, PtSrc->FrNb )); + + // return (-2); // 10/10/2021 return (-2), before it was return (-1) + + // Since 11/10/2021 AND before 14/10/2021 + // VRetOk = -2; + // break; + + // Since 14/10/2021 + VRetOk = -2; // 14/10/2021 + break; // 14/10/2021 + + } + + } // End if ( VFrTooLong ) + // Normal end of frame => break frame decoding loop break; @@ -21692,7 +22186,7 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, VFakeHdCnt++; - if ( PrintLvl >= 1 ) { + if ( VPrintLvlAbs >= 1 ) { msg (( MSG_OUT, "Fake header detected (Cnt = %.4d) : W7 = %X, W6 = %X, W5 = %X, W4 = %X, W3 = %X, W2 = %X, W1 = %X , W0 = %X", VFakeHdCnt, VFrHdW7, VFrHdW6, VFrHdW5, VFrHdW4, VFrHdW3, VFrHdW2, VFrHdW1, VFrHdW0 )); } @@ -21702,8 +22196,6 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, } // End frame processing - - } // End for @@ -21717,67 +22209,4118 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, PtDest->ResAFrFakeHeadCnt[MSisId] = VFakeHdCnt; PtDest->ResARegNb[MSisId] = VRegCntInAcq; PtDest->ResAPixNb[MSisId] = VPixCntInAcq; + PtDest->ResAFrNbOvfFlags[MSisId] = VFrOvfFlagsCnt; + + MIS1__VGADecodeFrOkFrNb[MSisId] = VFrCnt; if ( (VFrCnt == 0) || (VFakeHdCnt > 0) ) { - err_error (( ERR_OUT, "Error : MSisId = %d, VFrCnt = %d, VFakeHdCnt = %d", MSisId, VFrCnt, VFakeHdCnt )); + err_error (( ERR_OUT, "Error : VFrCnt = %d, VFakeHdCnt = %d", VFrCnt, VFakeHdCnt )); VRetOk = -1; } + + + if ( VPrintLvlAbs ) { + + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "AcqId = %.4d, MSisId = %d", PtSrc->AcqId, MSisId )); + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "%d frames found, %d fake headers found, %d frames with OVF flags", VFrCnt, VFakeHdCnt, VFrOvfFlagsCnt )); + msg (( MSG_OUT, "ViW16 = %d", ViW16 )); + + msg (( MSG_OUT, "" )); + } + + + if ( VDataAfterTrailer ) { + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "!!!!!!!!!!!!!! AcqId = %.4d : %d Data W16 after trailer !!!!!!!!!!!!!!", PtSrc->AcqId, VDataAfterTrailerNb )); + } + + + if ( VFrOvfFlagsCnt != 0 ) { + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "WARNING !!!!!!!!!!!!!!!!!!!!! AcqId = %.4d, MSisId = %d => %d frames with OVF bit(s) set", PtSrc->AcqId, MSisId, VFrOvfFlagsCnt )); + msg (( MSG_OUT, "" )); + } + + + #ifndef CC_NOT_CPP_BUILDER + + if ( MeasExecTime ) { + VExecTimeUs = TIME__FMeasTimeUsEnd ( 0 /* Index */ ); + } + + else { + VExecTimeUs = 0; + } + + #else + + // You can implement here exec tiome measurement for compiler <> C++ Builder + + VExecTimeUs = 0; // No exec time measurement implementation => Returns 0 + + + #endif + + + // Before 11/10/2021 // return (VExecTimeUs * VRetOk ); + + // Since 11/10/2021 + + if ( VRetOk < 0 ) { + return ( VRetOk ); + } + + + return (VExecTimeUs); +} + + + + + + + + +// ----------- + +double MIS1__BT_FBtDecodeFrLight__before_141021 ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, SInt8 PrintLvl ) { + + static UInt8 VEmulFrNoTrail = 0; + + SInt32 VRetOk; + + SInt8 VPrintLvlAbs; + + double VExecTimeUs; + + SInt32 VSrcW16; // W16 to convert + // UInt16* VPtSrcW16; // Pointer to W16 to convert + + UInt32 VW16Nb; // Total W16 nb to process for this MSis 1 + SInt32 ViW16; // Index of W16 processed + SInt32 VFrCnt; // Counter of detected frames = counter of MSis 1 frame headers in data stream + SInt32 VFakeHdCnt; // Counter of fake headers => first W16 is header tag but not following 7 W16 + SInt32 VFrWithoutTrailerCnt; // Counter of frames without trailer + SInt32 ViW16CurHead; // First W16 of current header + SInt32 VFrOvfFlagsCnt; // Counter of frames with at leats one OVF flag set 09/10/2021 + + + TW128As8W16 VFrHd; // Frame header (128 bits) + UInt16 VFrHdW0; // Frame header W0 + UInt16 VFrHdW1; // Frame header W1 + UInt16 VFrHdW2; // Frame header W2 + UInt16 VFrHdW3; // Frame header W3 + UInt16 VFrHdW4; // Frame header W4 + UInt16 VFrHdW5; // Frame header W5 + UInt16 VFrHdW6; // Frame header W6 + UInt16 VFrHdW7; // Frame header W7 + + + + SInt32 VRegCntInFr; // Counter of regiosn in frame + SInt32 VRegCntInAcq; // Counter of regiosn in Acq + SInt32 VPixCntInFr; // Counter of pixels in each frame + SInt32 VPixCntInAcq; // Counter of pixels in Acq + + // Flags + + UInt8 VFrWithoutTrailer; // Flag to handle frames without a trailer at the end, a header can starts + UInt8 VTrailerDetected; // Flag => trailer detected in current frame scanning + UInt8 VFrTooLong; // Flag => frame length > max possible + UInt8 VFrEnd; // Flag => end of frame = OR of previous flags + UInt8 VDataAfterTrailer; // Flag => Data dtectedt after frame trailer + + SInt32 VDataAfterTrailerNb; // Counter of data after trailer + + + MIS1__TBtFrDecHead* VPtFrDecHead; + + + VPrintLvlAbs = abs ( PrintLvl ); + + + // Check param + + // ---------------------------------------------- + // WARNING + // ---------------------------------------------- + // + // NO parameters checking to save execution time, it is done in ... + // => This function SHOULD not be called directly, but only via ... + // => In case you need to call it directly => Check parameters you provide + + // Measure exec time + + #ifndef CC_NOT_CPP_BUILDER + + if ( MeasExecTime ) { + TIME__FMeasTimeUsBegin ( 0 /* Index */ ); + } + + + #else + + // You can implement here exec tiome measurement for compiler <> C++ Builder + + + #endif + + // Propagates AcqId and Triggers nb + + PtDest->AcqId = PtSrc->AcqId; + PtDest->TrigNb = PtSrc->AcqRawHead.Trigs.TrigNb; // Added on 30/05/2021 + + + // Init var + + VRetOk = 1; + + VW16Nb = PtSrc->MSisW16Nb; + ViW16CurHead = 0; + VFrCnt = 0; + VFakeHdCnt = 0; + VFrWithoutTrailerCnt = 0; + + VFrOvfFlagsCnt = 0; + + + VFrWithoutTrailer = 0; + VTrailerDetected = 0; + VFrTooLong = 0; + VFrEnd = 0; + VDataAfterTrailer = 0; + + + VRegCntInFr = 0; + VPixCntInFr = 0; + VRegCntInAcq = 0; + VPixCntInAcq = 0; + + VDataAfterTrailerNb = 0; + + + VPtFrDecHead = &PtDest->ResAAFrHead[MSisId][0]; + + // Reset frames truncated & errors counters - 30/05/2021 + + PtDest->ResAFrNbTrunc[MSisId] = 0; + PtDest->ResAFrNbErr[MSisId] = 0; + + // Reset decoding function warnings + errors counter - 30/05/2021 + + MIS1__BT_VGDecodecFrWarnErr = 0; + + // ------------------------------------------------------------- + // Frames decoding + // ------------------------------------------------------------- + + + if ( VPrintLvlAbs ) { + msg (( MSG_OUT, "Decode MSis No %d, Src frame = %d W16", MSisId, VW16Nb )); + } + + + for ( ViW16 = 0; ViW16 < VW16Nb; ) { + + // Try to handle frames without trailer + // - the first header field (W0) has already been detected at end of previous frame, don't read it again it is already here + + if ( VFrWithoutTrailer == 0 ) { + VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + } + + // Check if there are data after the trailer + + if ( ((VSrcW16 & 0xFF00) != 0xFE00) && (VSrcW16 != 0xFCAA) ) { + VDataAfterTrailer = 1; + VDataAfterTrailerNb++; + + if ( PrintLvl < 0 ) { + msg (( MSG_OUT, "MSis[%d] Fr = %.4d : DATA[iW16 = %.4d] = %X, ", MSisId, VFrCnt, ViW16, VSrcW16 )); + } + + } + + + // Detects first W16, W0 of a frame header + + if ( (VSrcW16 & 0xFF00) == 0xFE00 ) { + + ViW16CurHead = ViW16 - 1; + + VFrHdW0 = VSrcW16; + + // Checks that next 7 are also frame header tags + + VFrHdW1 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW2 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW3 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW4 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW5 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW6 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW7 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + + // Header confirmed + + // if ( 1 ) { + + if ( ((VFrHdW1 & 0xFF00) == 0xFE00) && ((VFrHdW2 & 0xFF00) == 0xFE00) && ((VFrHdW3 & 0xFF00) == 0xFE00) && ((VFrHdW4 & 0xFF00) == 0xFE00) && ((VFrHdW5 & 0xFF00) == 0xFE00) && ((VFrHdW6 & 0xFF00) == 0xFE00) && ((VFrHdW7 & 0xFF00) == 0xFE00) ) { + + // Reset regions cnt, fired pixels cnt, flags + + VRegCntInFr = 0; + VPixCntInFr = 0; + + VFrWithoutTrailer = 0; + VTrailerDetected = 0; + VFrTooLong = 0; + VFrEnd = 0; + + + // Update frame header results + + VPtFrDecHead->MSisId = MSisId; + VPtFrDecHead->FrId = VFrCnt; + + VFrCnt++; + + // Extract header + + VPtFrDecHead->MSisFrHead.AW16[0] = VFrHdW0; + VPtFrDecHead->MSisFrHead.AW16[1] = VFrHdW1; + VPtFrDecHead->MSisFrHead.AW16[2] = VFrHdW2; + VPtFrDecHead->MSisFrHead.AW16[3] = VFrHdW3; + VPtFrDecHead->MSisFrHead.AW16[4] = VFrHdW4; + VPtFrDecHead->MSisFrHead.AW16[5] = VFrHdW5; + VPtFrDecHead->MSisFrHead.AW16[6] = VFrHdW6; + VPtFrDecHead->MSisFrHead.AW16[7] = VFrHdW7; + + // Extract frames counter + + VPtFrDecHead->FrCnt = (VFrHdW0 &0xFF) + ((VFrHdW1 & 0xFF) << 8) + ((VFrHdW2 & 0xFF) << 16) + ((VFrHdW3 & 0xFF) << 24); + + if ( VPrintLvlAbs >= 2 ) { + msg (( MSG_OUT, "Header detected (Cnt = %.4d) : W7 = %X, W6 = %X, W5 = %X, W4 = %X, W3 = %X, W2 = %X, W1 = %X , W0 = %X", VFrCnt, VFrHdW7, VFrHdW6, VFrHdW5, VFrHdW4, VFrHdW3, VFrHdW2, VFrHdW1, VFrHdW0 )); + } + + + VPtFrDecHead->FirstDataW16Pos = ViW16CurHead + 8; + + // Result fields not calculated now + + VPtFrDecHead->Errors = 0; + VPtFrDecHead->NoTrailer = 0; // 08/06/2021 + VPtFrDecHead->Truncated = 0; // 09/06/2021 + VPtFrDecHead->FrDataSzW16 = 0; + VPtFrDecHead->RegionNb = 0; + VPtFrDecHead->FiredPixNb = 0; + VPtFrDecHead->MSisFrTrail.W16 = 0; + VPtFrDecHead->CheckSum = 0; + VPtFrDecHead->ATrigPosW16[0] = 0; + VPtFrDecHead->ATrigPosW16[MIS1__BT_FR_DEC_MAX_TRIG_NB - 1] = 0; + + + if ( VPrintLvlAbs >= 2 ) { + msg (( MSG_OUT, "FrCnt = %d", VPtFrDecHead->FrCnt )); + } + + // Processing frame + + + + // Scan frame + + while (1) { + + VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + + // Detects region + + if ( (VSrcW16 & 0xFF00) == 0xFD00 ) { + VRegCntInFr++; + VRegCntInAcq++; + + if ( VPrintLvlAbs >= 2 ) { + msg (( MSG_OUT, "FrCnt = %d - Region", VPtFrDecHead->FrCnt )); + } + + } + + + // Detects trailer + + if ( (VSrcW16 & 0xFF00) == 0xFF00 ) { + + VTrailerDetected = 1; + + VPtFrDecHead->MSisFrTrail.W16 = VSrcW16; + + if ( VPtFrDecHead->MSisFrTrail.F.Flags != 0 ) { + ++VFrOvfFlagsCnt; + msg (( MSG_OUT, "AcqId = %.3d, Fr = %.4d : Trailer flas <> 0 : FrOvf = %d, RegOvf = %d, SRegOvf = %d, FSLimit = %d", PtSrc->AcqId, VPtFrDecHead->FrId, VPtFrDecHead->MSisFrTrail.B.FrOvf, VPtFrDecHead->MSisFrTrail.B.RegOvf, VPtFrDecHead->MSisFrTrail.B.SRegOvf, VPtFrDecHead->MSisFrTrail.B.FSLimit )); + } + + if ( 1 /* VPrintLvlAbs >= 1 */ ) { + + if ( (VSrcW16 & 0x00FF) != 0 ) { + msg (( MSG_OUT, "$$$$$$$$$$$$$$$$$$$$ OVF : MSis[%d] Fr No %.3d MSisFrCnt = %.6d - Trailer = %X", MSisId, VFrCnt, VPtFrDecHead->FrCnt, VSrcW16 )); + } + + } + + + // Calc fr data size + + VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; + + // Reads checksum + + VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + + VPtFrDecHead->CheckSum = VSrcW16; + + + if ( VPrintLvlAbs >= 2 ) { + msg (( MSG_OUT, "Fr No %.3d MSisFrCnt = %.6d - Trailer", VFrCnt, VPtFrDecHead->FrCnt )); + } + + } + + // Detects header => frame without trailer at the end + + if ( (VSrcW16 & 0xFF00) == 0xFE00 ) { + + if ( VFrCnt >= PtSrc->FrNb ) { + err_error (( ERR_OUT, "WARNING fr > acq fr nb => !!!!!!!!!!!!!! FR = %d NO TRAILER !!!!!!!!!!!!!!!!!!!!", VFrCnt )); + } + + else { + err_error (( ERR_OUT, "ERROR fr in acq fr nb => !!!!!!!!!!!!!! FR = %d NO TRAILER !!!!!!!!!!!!!!!!!!!!", VFrCnt )); + } + + + + if ( PrintLvl < 0 ) { + msg (( MSG_OUT, "!!!!!!!!!!!!!! FR = %d NO TRAILER - A !!!!!!!!!!!!!!!!!!!!", VFrCnt )); + } + + VFrWithoutTrailer = 1; + VFrWithoutTrailerCnt++; + VPtFrDecHead->NoTrailer = 1; // 08/06/2021 + + // Calc fr data size + + VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; + } + + // Frame is too long : Decoding bug or MSis 1 side bug or unknown info / MSis 1 data stream + + if ( ViW16 >= VW16Nb ) { + VFrTooLong = 1; + + VPtFrDecHead->Truncated = 1; // 09/06/2021 + + // Calc fr data size + VPtFrDecHead->Errors = MIS1__BT_FR_ERR_TRUNC; + err_error (( ERR_OUT, "Stop frame processing max W16 nb = %d reached => VFrCnt = %d < FrNbInAcq = %d => MSis 1 or decoding sw bug !", VW16Nb, VFrCnt, PtSrc->FrNb )); + // return (-2); // 10/10/2021 return (-2), before it was return (-1) + + // Since 11/10/2021 + + VRetOk = -2; + break; + + + VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; + + if ( PrintLvl < 0 ) { + msg (( MSG_OUT, "!!!!!!!!!!!!!! FR = %d IS TOO LONG !!!!!!!!!!!!!!!!!!!!", VFrCnt )); + err_error (( ERR_OUT, "%s", MSG_OUT )); + } + + + } + + + VFrEnd = VTrailerDetected || VFrWithoutTrailer || VFrTooLong; + + // Pixel detected : Current W16 is not a region header, an empty W16 and is not an end of frame tag + + if ( (VFrEnd == 0) && ((VSrcW16 & 0xFF00) != 0xFD00) && (VSrcW16 != 0xFCAA) ) { + VPixCntInFr++; + VPixCntInAcq++; + } + + + // End of frame => Update frame header info + + if ( VFrEnd ) { + + VPtFrDecHead->Errors = 0; // Not handled now 25/05/2021 + VPtFrDecHead->ATrigPosW16[0] = 0; // Not handled now 25/05/2021 + VPtFrDecHead->ATrigPosW16[MIS1__BT_FR_DEC_MAX_TRIG_NB - 1] = 0; // Not handled now 25/05/2021 + + // VPtFrDecHead->FrDataSzW16 = 0; // Calculated before + // VPtFrDecHead->MSisFrTrail.W16 = 0; // Calculated before + // VPtFrDecHead->CheckSum = 0; // Calculated before + + VPtFrDecHead->RegionNb = VRegCntInFr; + VPtFrDecHead->FiredPixNb = VPixCntInFr; + + // Frame too long => Exits on error + // No time now to handle it in a better way => TBD later + // Upgraded on 29/05/2021 + // If it is the last frame of Acq => Warning, because the frame is probably only cut + // If it is NOT the last frame of Acq => Error because it should not happne => There is a problem + + if ( VFrTooLong ) { + + if ( PrintLvl < 0 ) { + msg (( MSG_OUT, "*********************** ACQ %d MSis = %d FR %d TOO LONG = %d W16, VW16Nb = %d ******************************", PtDest->AcqId, MSisId, VFrCnt, VPtFrDecHead->FrDataSzW16, VW16Nb )); + } + + err_error (( ERR_OUT, "WARNING : Stop frame processing max W16 nb = %d reached => AcqId = %.4d, MSisID = %d : VFrCnt = %d < FrNbInAcq = %d => MSis 1 or decoding sw bug !", VW16Nb, PtSrc->AcqId, MSisId, VFrCnt, PtSrc->FrNb )); + + PtDest->ResAFrNbTrunc[MSisId]++; // Update truncated frames counter - 30/05/2021 + + MIS1__BT_VGDecodecFrWarnErr++; + + if ( VFrCnt >= PtSrc->FrNb ) { + VPtFrDecHead->Errors = MIS1__BT_FR_ERR_TRUNC_LAST_FR; + // err_warning (( ERR_OUT, "Stop frame processing max W16 nb = %d reached => VFrCnt = %d >= FrNbInAcq = %d => Last frame cut", VW16Nb, VFrCnt, PtSrc->FrNb )); + } + + else { + + VPtFrDecHead->Errors = MIS1__BT_FR_ERR_TRUNC; + + err_error (( ERR_OUT, "ERROR : Stop frame processing max W16 nb = %d reached => AcqId = %.4d , MSisID = %d : VFrCnt = %d < FrNbInAcq = %d => MSis 1 or decoding sw bug !", VW16Nb, PtSrc->AcqId, MSisId, VFrCnt, PtSrc->FrNb )); + + // return (-2); // 10/10/2021 return (-2), before it was return (-1) + + // Since 11/10/2021 + + VRetOk = -2; + break; + } + + } // End if ( VFrTooLong ) + + // Normal end of frame => break frame decoding loop + + break; + } + + } // End while (1) frame scanning + + + VPtFrDecHead++; + + } + + // Fake header + + else { + + VFakeHdCnt++; + + if ( VPrintLvlAbs >= 1 ) { + msg (( MSG_OUT, "Fake header detected (Cnt = %.4d) : W7 = %X, W6 = %X, W5 = %X, W4 = %X, W3 = %X, W2 = %X, W1 = %X , W0 = %X", VFakeHdCnt, VFrHdW7, VFrHdW6, VFrHdW5, VFrHdW4, VFrHdW3, VFrHdW2, VFrHdW1, VFrHdW0 )); + } + + } + + + } // End frame processing + + + } // End for + + + // Update results + + PtDest->ParFrNbInSrcAcq = PtSrc->FrNb; + + + PtDest->ResAFrNb[MSisId] = VFrCnt; + PtDest->ResAFrNbWoTrailer[MSisId] = VFrWithoutTrailerCnt; + PtDest->ResAFrFakeHeadCnt[MSisId] = VFakeHdCnt; + PtDest->ResARegNb[MSisId] = VRegCntInAcq; + PtDest->ResAPixNb[MSisId] = VPixCntInAcq; + PtDest->ResAFrNbOvfFlags[MSisId] = VFrOvfFlagsCnt; + + + if ( (VFrCnt == 0) || (VFakeHdCnt > 0) ) { + err_error (( ERR_OUT, "Error : VFrCnt = %d, VFakeHdCnt = %d", VFrCnt, VFakeHdCnt )); + VRetOk = -1; + } + + + if ( VPrintLvlAbs ) { + + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "AcqId = %.4d, MSisId = %d", PtSrc->AcqId, MSisId )); + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "%d frames found, %d fake headers found, %d frames with OVF flags", VFrCnt, VFakeHdCnt, VFrOvfFlagsCnt )); + msg (( MSG_OUT, "ViW16 = %d", ViW16 )); + + msg (( MSG_OUT, "" )); + } + + + if ( VDataAfterTrailer ) { + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "!!!!!!!!!!!!!! AcqId = %.4d : %d Data W16 after trailer !!!!!!!!!!!!!!", PtSrc->AcqId, VDataAfterTrailerNb )); + } + + + if ( VFrOvfFlagsCnt != 0 ) { + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "WARNING !!!!!!!!!!!!!!!!!!!!! AcqId = %.4d, MSisId = %d => %d frames with OVF bit(s) set", PtSrc->AcqId, MSisId, VFrOvfFlagsCnt )); + msg (( MSG_OUT, "" )); + } + + + #ifndef CC_NOT_CPP_BUILDER + + if ( MeasExecTime ) { + VExecTimeUs = TIME__FMeasTimeUsEnd ( 0 /* Index */ ); + } + + else { + VExecTimeUs = 0; + } + + #else + + // You can implement here exec tiome measurement for compiler <> C++ Builder + + VExecTimeUs = 0; // No exec time measurement implementation => Returns 0 + + + #endif + + + // Before 11/10/2021 // return (VExecTimeUs * VRetOk ); + + // Since 11/10/2021 + + if ( VRetOk < 0 ) { + return ( VRetOk ); + } + + + return (VExecTimeUs); +} + + +// 8888888 + +/* DOC_FUNC_BEGIN */ +/** +=================================================================================== +* \fn : double MIS1__BT_FBtDecodeFrMSis1 ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, SInt8 PrintLvl ) +* +* \brief : Decode the frames for one MSis 1 : List frames, extract fr header, fr cnt, and pixels decoding \n +* : It is the former MIS1__BT_FBtDecodeFr (...) function renamed as MIS1__BT_FBtDecodeFrMSis1 \n +* : The function MIS1__BT_FBtDecodeFr (...) now handles both MSis 1 / 2.X +* +* \param : PtSrc - Pointer to source record MIS1__TBtAcqW16A +* +* \param : PtDest - Pointer to destination record MIS1__TBtAcqDec +* +* \param : MSisId - If of the MSis to deocde 0 to MIS1__BT_MAX_REAL_MSIS_NB_ACQ-1 +* +* \param : FrNb - Frames nb to convert, if -1 => All frames from source record (NOT HANDLED NOW => Full frame decoding) +* : +* \param : MeasExecTime - Measure exec time 0 = No, 1 = Yes +* +* \param : PrintLvl - Debug print level, 0 = No, 1 = Print record sizes, 2 = More print, to be implemented +* : +* : +* : +* \return : Execution time in us or error code +* : >= 0 - Execution time in us +* : < 0 - Error code +* : +* \warning : Globals : +* \warning : Remark : WARNING => ONLY 2 channels IMPLEMENTED on 22/05/2021 +* \warning : Level : +* : +* \warning : Items not filled now : +* todo : +* : +* bug : +* : +* \date : Date : 25/05/2021 +* \date : Rev : 08/06/2021 - NoTrailer field update +* \date : Rev : 17/06/2024 - MSis 2, 2.X pixels (cluster) decoding handling +* \date : Rev : +* \date : Doc date : 24/05/2021 +* \author : Name : Gilles CLAUS +* \author : E-mail : gilles.claus@iphc.cnrs.fr +* \author : Labo : IPHC +* +=================================================================================== +*/ +/* DOC_FUNC_END */ + + +double MIS1__BT_FBtDecodeFrMSis1 ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, SInt8 PrintLvl ) { + + SInt32 VRetOk; + + SInt8 VPrintLvlAbs; + + double VExecTimeUs; + + SInt32 VSrcW16; // W16 to convert + // UInt16* VPtSrcW16; // Pointer to W16 to convert + + UInt32 VW16Nb; // Total W16 nb to process for this MSis 1 + SInt32 ViW16; // Index of W16 processed + SInt32 VFrCnt; // Counter of detected frames = counter of MSis 1 frame headers in data stream + SInt32 VFakeHdCnt; // Counter of fake headers => first W16 is header tag but not following 7 W16 + SInt32 VFrWithoutTrailerCnt; // Counter of frames without trailer + SInt32 ViW16CurHead; // First W16 of current header + + + + TW128As8W16 VFrHd; // Frame header (128 bits) + UInt16 VFrHdW0; // Frame header W0 + UInt16 VFrHdW1; // Frame header W1 + UInt16 VFrHdW2; // Frame header W2 + UInt16 VFrHdW3; // Frame header W3 + UInt16 VFrHdW4; // Frame header W4 + UInt16 VFrHdW5; // Frame header W5 + UInt16 VFrHdW6; // Frame header W6 + UInt16 VFrHdW7; // Frame header W7 + + + + SInt32 VRegCntInFr; // Counter of regiosn in frame + SInt32 VRegCntInAcq; // Counter of regiosn in Acq + SInt32 VPixCntInFr; // Counter of pixels in each frame + SInt32 VPixCntInAcq; // Counter of pixels in Acq + + // Flags + + UInt8 VFrWithoutTrailer; // Flag to handle frames without a trailer at the end, a header can starts + UInt8 VTrailerDetected; // Flag => trailer detected in current frame scanning + + UInt8 VFrTooLong; // Flag => frame length > max possible + UInt8 VFrEnd; // Flag => end of frame = OR of previois flags + + // Pixels decoding 25/05/2021 + + MIS1__TDsRegHeader VCurRegHead; // Current region + MIS1__TStdPix VCurPix; // Current pixel + + MIS1__TPixXY VResPix; // Decoded pixel x,y format to be stored in ResAAAFrPix[MSisId][FrId][PixNo] + MIS1__TPixXY* VPtResPix; // Pointer to current result pixel in ResAAAFrPix[MSisId][FrId][PixNo] + + + MIS1__TBtFrDecHead* VPtFrDecHead; + + + VPrintLvlAbs = abs ( PrintLvl ); + + // Check param + + // ---------------------------------------------- + // WARNING + // ---------------------------------------------- + // + // NO parameters checking to save execution time, it is done in ... + // => This function SHOULD not be called directly, but only via ... + // => In case you need to call it directly => Check parameters you provide + + + // Measure exec time + + #ifndef CC_NOT_CPP_BUILDER + + if ( MeasExecTime ) { + TIME__FMeasTimeUsBegin ( 0 /* Index */ ); + } + + + #else + + // You can implement here exec tiome measurement for compiler <> C++ Builder + + + #endif + + + // Propagates AcqId and Triggers nb + + PtDest->AcqId = PtSrc->AcqId; + PtDest->TrigNb = PtSrc->AcqRawHead.Trigs.TrigNb; // Added on 30/05/2021 + + + // Init var + + VRetOk = 1; + + VW16Nb = PtSrc->MSisW16Nb; + ViW16CurHead = 0; + VFrCnt = 0; + VFakeHdCnt = 0; + VFrWithoutTrailerCnt = 0; + + + VFrWithoutTrailer = 0; + VTrailerDetected = 0; + VFrTooLong = 0; + VFrEnd = 0; + + + VRegCntInFr = 0; + VPixCntInFr = 0; + VRegCntInAcq = 0; + VPixCntInAcq = 0; + + VCurRegHead.W16 = 0; + VCurPix.W16 = 0; + + VResPix.C.x = 0; + VResPix.C.y = 0; + + VPtResPix = &PtDest->ResAAAFrPix[MSisId][0 /* Fr no */][0 /* Pix no */]; + + + + VPtFrDecHead = &PtDest->ResAAFrHead[MSisId][0]; + + // Reset frames truncated & errors counters - 30/05/2021 + + PtDest->ResAFrNbTrunc[MSisId] = 0; + PtDest->ResAFrNbErr[MSisId] = 0; + + // Reset decoding function warnings + errors counter - 30/05/2021 + + MIS1__BT_VGDecodecFrWarnErr = 0; + + + // ------------------------------------------------------------- + // Frames decoding + // ------------------------------------------------------------- + + + if ( VPrintLvlAbs ) { + msg (( MSG_OUT, "Decode MSis No %d, Src frame = %d W16", MSisId, VW16Nb )); + } + + + for ( ViW16 = 0; ViW16 < VW16Nb; ) { + + // Try to handle frames without trailer + // - the first header field (W0) has already been detected at end of previous frame, don't read it again it is already here + + if ( VFrWithoutTrailer == 0 ) { + VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + } + + // Detects first W16, W0 of a frame header + + if ( (VSrcW16 & 0xFF00) == 0xFE00 ) { + + ViW16CurHead = ViW16 - 1; + + VFrHdW0 = VSrcW16; + + // Checks that next 7 are also fraem header tags + + VFrHdW1 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW2 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW3 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW4 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW5 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW6 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW7 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + + // Header confirmed + + // if ( 1 ) { + + if ( ((VFrHdW1 & 0xFF00) == 0xFE00) && ((VFrHdW2 & 0xFF00) == 0xFE00) && ((VFrHdW3 & 0xFF00) == 0xFE00) && ((VFrHdW4 & 0xFF00) == 0xFE00) && ((VFrHdW5 & 0xFF00) == 0xFE00) && ((VFrHdW6 & 0xFF00) == 0xFE00) && ((VFrHdW7 & 0xFF00) == 0xFE00) ) { + + // Reset regions cnt, fired pixels cnt, flags + + VRegCntInFr = 0; + VPixCntInFr = 0; + + VFrWithoutTrailer = 0; + VTrailerDetected = 0; + VFrTooLong = 0; + VFrEnd = 0; + + VCurRegHead.W16 = 0; // Resets region header + + // Update frame header results + + VPtFrDecHead->MSisId = MSisId; + VPtFrDecHead->FrId = VFrCnt; + + // Sets ptr to destination pixels stream + + VPtResPix = &PtDest->ResAAAFrPix[MSisId][VFrCnt][0 /* Pix No */]; + + VFrCnt++; + + // Extract header + + VPtFrDecHead->MSisFrHead.AW16[0] = VFrHdW0; + VPtFrDecHead->MSisFrHead.AW16[1] = VFrHdW1; + VPtFrDecHead->MSisFrHead.AW16[2] = VFrHdW2; + VPtFrDecHead->MSisFrHead.AW16[3] = VFrHdW3; + VPtFrDecHead->MSisFrHead.AW16[4] = VFrHdW4; + VPtFrDecHead->MSisFrHead.AW16[5] = VFrHdW5; + VPtFrDecHead->MSisFrHead.AW16[6] = VFrHdW6; + VPtFrDecHead->MSisFrHead.AW16[7] = VFrHdW7; + + // Extract frames counter + + VPtFrDecHead->FrCnt = (VFrHdW0 &0xFF) + ((VFrHdW1 & 0xFF) << 8) + ((VFrHdW2 & 0xFF) << 16) + ((VFrHdW3 & 0xFF) << 24); + + if ( VPrintLvlAbs >= 3 ) { + msg (( MSG_OUT, "Header detected (Cnt = %.4d) : W7 = %X, W6 = %X, W5 = %X, W4 = %X, W3 = %X, W2 = %X, W1 = %X , W0 = %X", VFrCnt, VFrHdW7, VFrHdW6, VFrHdW5, VFrHdW4, VFrHdW3, VFrHdW2, VFrHdW1, VFrHdW0 )); + msg (( MSG_OUT, "FrCnt = %d", VPtFrDecHead->FrCnt )); + } + + + VPtFrDecHead->FirstDataW16Pos = ViW16CurHead + 8; + + // Result fields not calculated now + + VPtFrDecHead->Errors = 0; + VPtFrDecHead->NoTrailer = 0; // 08/06/2021 + VPtFrDecHead->FrDataSzW16 = 0; + VPtFrDecHead->RegionNb = 0; + VPtFrDecHead->FiredPixNb = 0; + VPtFrDecHead->MSisFrTrail.W16 = 0; + VPtFrDecHead->CheckSum = 0; + VPtFrDecHead->ATrigPosW16[0] = 0; + VPtFrDecHead->ATrigPosW16[MIS1__BT_FR_DEC_MAX_TRIG_NB - 1] = 0; + + + // Processing frame + + while (1) { + + VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + + // Detects region + + if ( (VSrcW16 & 0xFF00) == 0xFD00 ) { + + VRegCntInFr++; + VRegCntInAcq++; + + VCurRegHead.W16 = VSrcW16; + + // 06/06/2021 + // - Add print of Region.F.Reg + // - FrCnt dispplay as ud + + if ( VPrintLvlAbs >= 2 ) { + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "Fr No %.3ud : MSis 1 FrCnt = %d - Region No %.2d - Region.F.Reg = %d", VFrCnt - 1, VPtFrDecHead->FrCnt, VRegCntInFr - 1, VCurRegHead.F.Reg )); + } + + continue; + } + + + // Detects trailer + + if ( (VSrcW16 & 0xFF00) == 0xFF00 ) { + + VTrailerDetected = 1; + + VPtFrDecHead->MSisFrTrail.W16 = VSrcW16; + + // Calc fr data size + + VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; + + // Reads checksum + + VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + + VPtFrDecHead->CheckSum = VSrcW16; + + if ( VPrintLvlAbs >= 3 ) { + msg (( MSG_OUT, "Fr No %.3d MSisFrCnt = %.6d - Trailer", VFrCnt, VPtFrDecHead->FrCnt )); + } + + } + + // Detects header => frame without trailer at the end + + if ( (VSrcW16 & 0xFF00) == 0xFE00 ) { + + VFrWithoutTrailer = 1; + VFrWithoutTrailerCnt++; + VPtFrDecHead->NoTrailer = 1; // 08/06/2021 + + // Calc fr data size + + VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; + } + + // Frame is too long : Decoding bug or MSis 1 side bug or unknown info / MSis 1 data stream + + if ( ViW16 >= VW16Nb ) { + + VFrTooLong = 1; + + // Calc fr data size + + VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; + } + + + VFrEnd = VTrailerDetected || VFrWithoutTrailer || VFrTooLong; + + // Pixel detected : Current W16 is not a region header, an empty W16 and is not an end of frame tag + + // if ( (VFrEnd == 0) && ((VSrcW16 & 0xFF00) != 0xFD00) && (VSrcW16 != 0xFCAA) ) { // Test on region not needed now with continue at end of region block + + if ( (VFrEnd == 0) && (VSrcW16 != 0xFCAA) ) { + + VPixCntInFr++; + VPixCntInAcq++; + + VCurPix.W16 = VSrcW16; + + // Calcul de Y : DATA[15:7] (9 bits 鱵ivalent ࠱0 bits DATA[15:6]/2) + + VResPix.C.y = VCurPix.F.PixAddr / 2; + + // Calcul de X : REGION_HEADER[5:0]*16+DATA[5:3]*2+DATA[6] xor DATA[7] + + VResPix.C.x = (VCurRegHead.F.Reg * 16) + (VCurPix.F.PeAddr * 2) + (VCurPix.B.b6 ^ VCurPix.B.b7); + + // Add in destination array + + if ( VPixCntInFr > MIS1__BT_FR_DEC_MAX_PIX_NB) { + err_warning (( ERR_OUT, "Cant add pixel, destination list is full with %d pixels : AcqId = %d, FrId = %d", MIS1__BT_FR_DEC_MAX_PIX_NB, PtSrc->AcqId, VFrCnt - 1 )); + } + + else { + *VPtResPix = VResPix; + VPtResPix++; + } + + // Print + // 06/06/2021 : Add VSrcW16 print + + + if ( VPrintLvlAbs >= 2 ) { + msg (( MSG_OUT, "VSrcW16 = %X [H] => PixAddr = %d, PE = %d, Code = %d => Pixel : x = %d, y = %d", VSrcW16, VCurPix.F.PixAddr, VCurPix.F.PeAddr, VCurPix.F.Code, VResPix.C.x, VResPix.C.y )); + } + + } + + + // End of frame => Update frame header info + + if ( VFrEnd ) { + + VPtFrDecHead->Errors = 0; // Not handled now 25/05/2021 + VPtFrDecHead->ATrigPosW16[0] = 0; // Not handled now 25/05/2021 + VPtFrDecHead->ATrigPosW16[MIS1__BT_FR_DEC_MAX_TRIG_NB - 1] = 0; // Not handled now 25/05/2021 + + // VPtFrDecHead->FrDataSzW16 = 0; // Calculated before + // VPtFrDecHead->MSisFrTrail.W16 = 0; // Calculated before + // VPtFrDecHead->CheckSum = 0; // Calculated before + + VPtFrDecHead->RegionNb = VRegCntInFr; + VPtFrDecHead->FiredPixNb = VPixCntInFr; + + + + // Frame too long => Exits on error + // No time now to handle it in a better way => TBD later + // Upgraded on 29/05/2021 + // If it is the last frame of Acq => Warning, because the frame is probably only cut + // If it is NOT the last frame of Acq => Error because it should not happne => There is a problem + // Upgraded on 11/10/2021 + // If it is NOT the last frame of Acq => Error, returns -2, before -1 was returned + + if ( VFrTooLong ) { + + + if ( PrintLvl < 0 ) { + msg (( MSG_OUT, "*********************** ACQ %d MSis = %d FR %d TOO LONG = %d W16, VW16Nb = %d, VPixCntInFr = %d ******************************", PtDest->AcqId, MSisId, VFrCnt, VPtFrDecHead->FrDataSzW16, VW16Nb, VPixCntInFr )); + } + + + PtDest->ResAFrNbTrunc[MSisId]++; // Update truncated frames counter - 30/05/2021 + + MIS1__BT_VGDecodecFrWarnErr++; + + if ( VFrCnt >= PtSrc->FrNb ) { + VPtFrDecHead->Errors = MIS1__BT_FR_ERR_TRUNC_LAST_FR; + // err_warning (( ERR_OUT, "Stop frame processing max W16 nb = %d reached => VFrCnt = %d >= FrNbInAcq = %d => Last frame cut", VW16Nb, VFrCnt, PtSrc->FrNb )); + } + + else { + VPtFrDecHead->Errors = MIS1__BT_FR_ERR_TRUNC; + err_error (( ERR_OUT, "Stop frame processing max W16 nb = %d reached => VFrCnt = %d < FrNbInAcq = %d => MSis 1 or decoding sw bug !", VW16Nb, VFrCnt, PtSrc->FrNb )); + // return (-2); // 10/10/2021 return (-2), before it was return (-1) + + // Since 11/10/2021 + + VRetOk = -2; + break; + + } + + } // End if ( VFrTooLong ) + + + + + + + + + + + + // Normal end of frame => break frame decoding loop + + break; + } + + } // End while (1) frame scanning + + + VPtFrDecHead++; + + } + + // Fake header + + else { + + VFakeHdCnt++; + + if ( VPrintLvlAbs >= 1 ) { + msg (( MSG_OUT, "Fake header detected (Cnt = %.4d) : W7 = %X, W6 = %X, W5 = %X, W4 = %X, W3 = %X, W2 = %X, W1 = %X , W0 = %X", VFakeHdCnt, VFrHdW7, VFrHdW6, VFrHdW5, VFrHdW4, VFrHdW3, VFrHdW2, VFrHdW1, VFrHdW0 )); + } + + } + + + } // End frame processing + + + + + } // End for + + + // Update results + + PtDest->ParFrNbInSrcAcq = PtSrc->FrNb; + + + PtDest->ResAFrNb[MSisId] = VFrCnt; + PtDest->ResAFrNbWoTrailer[MSisId] = VFrWithoutTrailerCnt; + PtDest->ResAFrFakeHeadCnt[MSisId] = VFakeHdCnt; + PtDest->ResARegNb[MSisId] = VRegCntInAcq; + PtDest->ResAPixNb[MSisId] = VPixCntInAcq; + + + if ( (VFrCnt == 0) || (VFakeHdCnt > 0) ) { + err_error (( ERR_OUT, "Error : MSisId = %d, VFrCnt = %d, VFakeHdCnt = %d", MSisId, VFrCnt, VFakeHdCnt )); + VRetOk = -1; + } + + + if ( VPrintLvlAbs ) { + + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "%d frames found, %d fake headers found", VFrCnt, VFakeHdCnt )); + msg (( MSG_OUT, "ViW16 = %d", ViW16 )); + + msg (( MSG_OUT, "" )); + } + + + #ifndef CC_NOT_CPP_BUILDER + + if ( MeasExecTime ) { + VExecTimeUs = TIME__FMeasTimeUsEnd ( 0 /* Index */ ); + } + + else { + VExecTimeUs = 0; + } + + #else + + // You can implement here exec tiome measurement for compiler <> C++ Builder + + VExecTimeUs = 0; // No exec time measurement implementation => Returns 0 + + + #endif + + + + + // Before 11/10/2021 // return (VExecTimeUs * VRetOk ); + + // Since 11/10/2021 + + if ( VRetOk < 0 ) { + return ( VRetOk ); + } + + + return (VExecTimeUs); +} + + + + +SInt32 APP__FAddCrAtEndOfStr ( char * Src, UInt32 MaxStrSz ) { + + SInt32 Vi; + + for ( Vi = 0; Vi < MaxStrSz; Vi++ ) { + + if ( (Src[Vi] == 0) && ( (Vi + 3) <= MaxStrSz) ) { + Src[Vi] = 0x0D; + Src[Vi+1] = 0x0A; + Src[Vi+2] = 0; + return (0); + } + + } + + return (-1); +} + + +/* DOC_FUNC_BEGIN */ +/** +=================================================================================== +* \fn : SInt32 MIS1__BT_FBtDecStdPixEnDbg ( UInt8 PrintLvl ) +* : +* \brief : Sets MIS1__BT_FBtDecStdPixMSis2Dbg (...) print level, can be modified when application is running + +* +* \param : PrintLvl - The print level +* +* \return : -1 If PrintLvl < 0, othewise 0 +* : +* \warning : Globals : Sets MIS1__BT_VGBtDecStdPixMSis2PrintLvl +* \warning : Remark : +* \warning : Level : +* : +* \warning : Items not filled now : +* todo : +* : +* bug : +* : +* \date : Date : 21/06/2024 +* \date : Rev : +* +* \date : Doc date : 21/06/2024 +* \author : Name : Gilles CLAUS +* \author : E-mail : gilles.claus@iphc.cnrs.fr +* \author : Labo : IPHC +* +=================================================================================== +*/ +/* DOC_FUNC_END */ + + +SInt32 MIS1__BT_FBtDecStdPixEnDbg ( SInt8 PrintLvl ) { + + SInt32 VRet = 0; + + // If PrintLvl comes from GUI control which is not properly initialized it can be == -1 => force it to 0 + + if ( PrintLvl < 0 ){ + PrintLvl = 0; + VRet = -1; + } + + MIS1__BT_VGBtDecStdPixMSis2PrintLvl = PrintLvl; + + err_retfail ( VRet, (ERR_OUT,"WARNING : PrintLvl == -1, force it to 0 => GUI control item index not set ? ;-)") ); + + return (0); +} + + + +/* DOC_FUNC_BEGIN */ +/** +=================================================================================== +* \fn : SInt32 MIS1__BT_FBtDecStdPixMSis2Dbg ( MIS1__TStdPix StdPix, UInt16 RegId, MIS1__TPixXY* PtAResPix, UInt8 MaxESzAResPix, SInt8 PrintLvl, char* StrPrint, UInt16 MaxSzStrPrint ) +* : +* \brief : Decodes MSis 2 cluster field, pixels list is stored in PtAResPix and +* : can also be stored in a string for debugging purpose +* +* \param : StdPix - Source STD cluster +* \param : RegId - Region ID +* \param : PtAResPix - Destination pixels array, its sie must be >= 4 pixels +* \param : MaxESzAResPix - The size i items of the array passed as PtAResPix +* \param : PrintLvl - Level of debug print in StrPrint, 0 = None, 1 = list of pixels X,Y coordinates, 2 = Cluster info + pixels X,Y coordinates +* \param : StrPrint - The string which contains debug print results +* \param : MaxSzStrPrint - Size of variable StrPrint +* +* \return : The number of pixels in th cluste or < 0 in case of error +* : +* \warning : Globals : +* \warning : Remark : A faster version of this function without debug print option exists => MIS1__BT_FBtDecStdPixMSis2 (...) +* \warning : Level : +* : +* \warning : Items not filled now : +* todo : +* : +* bug : +* : +* \date : Date : 19/06/2024 +* \date : Rev : +* +* \date : Doc date : 20/06/2024 +* \author : Name : Gilles CLAUS +* \author : E-mail : gilles.claus@iphc.cnrs.fr +* \author : Labo : IPHC +* +=================================================================================== +*/ +/* DOC_FUNC_END */ + + +// SInt32 MIS1__BT_FBtDecStdPixMSis2 (...) is based on +// char* APP_MSIS2__FConvStdPixStr ( APP__TStdPix* PtStdPix, UInt16* PtRegId ) +// from msis123_data_decoding.c + + +// PtAResPix => Array for result max 4 pixels +// MaxESzAResPix => Max size of PtAResPix, if < 4 => exit function + +// PrintLvl +// 0 => No print +// 1 => Print in StrPrint the list of pixels coordinates x = 1, y = 10 - x = 2, y = 5 - etc ... +// 2 => Print cluster raw data + pixels list as in option 1 +// + +// StrPrint => String to store pixels list for debug +// MaxSzStrPrint => Size max de StrPrint + +// Returns the nb of pixels found or < 0 + + + +SInt32 MIS1__BT_FBtDecStdPixMSis2Dbg ( MIS1__TStdPix StdPix, UInt16 RegId, MIS1__TPixXY* PtAResPix, UInt32 MaxESzAResPix, SInt8 PrintLvl, char* StrPrint, UInt16 MaxSzStrPrint ) { + + static char VStrStdPix[GLB_CMT_SZ]; + static char VStrStdNPix[2 * GLB_CMT_SZ]; + static char VStrDbgPr[GLB_CMT_SZ]; + + UInt16 VRegId; + UInt16 VRegIdX16; // Region Id * 16 + UInt16 VPeAddr; + UInt16 VPeAddrX2; // Pe address * 2 + UInt16Bits VAPixAddr[4]; + UInt16 VAx[4]; + UInt16 VAy[4]; + UInt8 VCode; + SInt8 VPixCnt; + + // To be removed later + + + SInt16 APP_MSIS2__VGClustEmulCode = -1; // -1 to disable code emulation, 0-7 for pixel code emulation + + + // Check param + + err_retnull ( PtAResPix, (ERR_OUT,"Abort => PtAResPix == NULL") ); + + if ( MaxESzAResPix < 4 ) { + err_retfail ( -1, (ERR_OUT,"Abort => Desination pixels array size MaxESzAResPix = %d < 4 ", MaxESzAResPix ) ); + } + + + if ( PrintLvl > 0 ) { + err_retnull ( StrPrint, (ERR_OUT,"Abort => Debug print requested (PrintLvl == %d) but StrPrin == NULL ", PrintLvl) ); + } + + +#ifndef CC_NOT_CPP_BUILDER + +try { + +#endif + + VPixCnt = 0; + + + if ( 1 /* PtRegId != NULL */ ) { + + + // typedef union { + // + // UInt16 w16; /*!< Full word, access via w16 */ + // + // struct + // { + // UInt8 Code : 3; /*!< B00..B02 = Code, not used on MSis1, access via f.Code */ + // UInt8 PeAddr : 3; /*!< B03..B05 = PE adddress, access via f.PeAddr */ + // UInt8 PixAddr : 10; /*!< B06..B15 = Pixel address = row, access via f.PixAddr */ + // } f; + // + // struct + // { + // UInt8 b0 : 1; /*!< Bit0, access via b.b0 */ + // UInt8 b1 : 1; /*!< Bit1, access via b.b1 */ + // UInt8 b2 : 1; /*!< Bit2, access via b.b2 */ + + // UInt8 b3 : 1; /*!< Bit3, access via b.b3 */ + // UInt8 b4 : 1; /*!< Bit4, access via b.b4 */ + // UInt8 b5 : 1; /*!< Bit5, access via b.b5 */ + + // UInt8 b6 : 1; /*!< Bit6, access via b.b6 */ + // UInt8 b7 : 1; /*!< Bit7, access via b.b7 */ + // UInt8 b8 : 1; /*!< Bit0, access via b.b8 */ + // UInt8 b9 : 1; /*!< Bit1, access via b.b9 */ + // UInt8 b10 : 1; /*!< Bit2, access via b.b10 */ + // UInt8 b11 : 1; /*!< Bit3, access via b.b11 */ + // UInt8 b12 : 1; /*!< Bit4, access via b.b12 */ + // UInt8 b13 : 1; /*!< Bit5, access via b.b13 */ + // UInt8 b14 : 1; /*!< Bit6, access via b.b14 */ + // UInt8 b15 : 1; /*!< Bit7, access via b.b15 */ + // } b; + // + // + // } APP__TStdPix; + + + // Debug print + + if ( PrintLvl == 2 ) { + + sprintf ( VStrDbgPr, "MSis 2 cluster decoding : Std Pix : Pix addr = %.4d, PE addr = %.2d, Code = %.2d", StdPix.F.PixAddr, StdPix.F.PeAddr, StdPix.F.Code ); + msg (( MSG_OUT, VStrDbgPr )); + } + + + VStrStdNPix[0] = 0; + + // Removed on 14/09/2023 because it generates CR in Memo & log file between pixel raw data printing and decoder pixel + // => It seems not useful => It can be enabled again if needed + // + // APP__FAddCrAtEndOfStr ( VStrStdNPix, GLB_CMT_SZ ); + + + // First pixel + + + VRegId = RegId; + VRegIdX16 = VRegId * 16; + + VPeAddr = StdPix.F.PeAddr; + VPeAddrX2 = VPeAddr * 2; + + VAPixAddr[0].w16 = StdPix.F.PixAddr; + + VCode = StdPix.F.Code; + + // msg (( MSG_OUT, "VCode = %x [H]", VCode )); + + if ( APP_MSIS2__VGClustEmulCode >= 0 ) { + VCode = APP_MSIS2__VGClustEmulCode; + } + + VAy[VPixCnt] = VAPixAddr[0].w16 / 2; + + VAx[VPixCnt] = VRegIdX16 + VPeAddrX2 + (VAPixAddr[0].b.b0 ^ VAPixAddr[0].b.b1); + + PtAResPix[VPixCnt].C.x = VAx[VPixCnt]; + PtAResPix[VPixCnt].C.y = VAy[VPixCnt]; + + + if ( PrintLvl == 1 ) { + sprintf ( VStrStdPix, "Std Pix : x = %.4d y = %.4d ", VAx[VPixCnt], VAy[VPixCnt] ); + } + + if ( PrintLvl == 2 ) { + sprintf ( VStrStdPix, "Std Pix : Pix addr = %.4d : x = %.4d y = %.4d ", VAPixAddr[0].w16, VAx[VPixCnt], VAy[VPixCnt] ); + } + + if ( PrintLvl > 0 ) { + APP__FAddCrAtEndOfStr (VStrStdNPix, GLB_CMT_SZ ); + strcat ( VStrStdNPix, VStrStdPix ); + } + + ++VPixCnt; + + // Pixel N + 1 + + if ( (VCode & 0x01) ) { + + VAPixAddr[1].w16 = VAPixAddr[0].w16 + 1; + + VAy[VPixCnt] = VAPixAddr[1].w16 / 2; + + VAx[VPixCnt] = VRegIdX16 + VPeAddrX2 + (VAPixAddr[1].b.b0 ^ VAPixAddr[1].b.b1); + + PtAResPix[VPixCnt].C.x = VAx[VPixCnt]; + PtAResPix[VPixCnt].C.y = VAy[VPixCnt]; + + + if ( PrintLvl == 1 ) { + sprintf ( VStrStdPix, "Std Pix : x = %.4d y = %.4d ", VAx[VPixCnt], VAy[VPixCnt] ); + } + + if ( PrintLvl == 2 ) { + sprintf ( VStrStdPix, "Std Pix : Pix addr = %.4d : x = %.4d y = %.4d ", VAPixAddr[1].w16, VAx[VPixCnt], VAy[VPixCnt] ); + } + + if ( PrintLvl > 0 ) { + APP__FAddCrAtEndOfStr (VStrStdNPix, GLB_CMT_SZ ); + strcat ( VStrStdNPix, VStrStdPix ); + } + + ++VPixCnt; + } + + // Pixel N + 2 + + if ( (VCode & 0x02) ) { + + VAPixAddr[2].w16 = VAPixAddr[0].w16 + 2; + + VAy[VPixCnt] = VAPixAddr[2].w16 / 2; + + VAx[VPixCnt] = VRegIdX16 + VPeAddrX2 + (VAPixAddr[2].b.b0 ^ VAPixAddr[2].b.b1); + + PtAResPix[VPixCnt].C.x = VAx[VPixCnt]; + PtAResPix[VPixCnt].C.y = VAy[VPixCnt]; + + + if ( PrintLvl == 1 ) { + sprintf ( VStrStdPix, "Std Pix : x = %.4d y = %.4d ", VAx[VPixCnt], VAy[VPixCnt] ); + } + + if ( PrintLvl == 2 ) { + sprintf ( VStrStdPix, "Std Pix : Pix addr = %.4d : x = %.4d y = %.4d ", VAPixAddr[2].w16, VAx[VPixCnt], VAy[VPixCnt] ); + } + + + if ( PrintLvl > 0 ) { + APP__FAddCrAtEndOfStr (VStrStdNPix, GLB_CMT_SZ ); + strcat ( VStrStdNPix, VStrStdPix ); + } + + ++VPixCnt; + } + + + // Pixel N + 3 + + if ( (VCode & 0x04) ) { + + VAPixAddr[3].w16 = VAPixAddr[0].w16 + 3; + + VAy[VPixCnt] = VAPixAddr[3].w16 / 2; + + VAx[VPixCnt] = VRegIdX16 + VPeAddrX2 + (VAPixAddr[3].b.b0 ^ VAPixAddr[3].b.b1); + + PtAResPix[VPixCnt].C.x = VAx[VPixCnt]; + PtAResPix[VPixCnt].C.y = VAy[VPixCnt]; + + + if ( PrintLvl == 1 ) { + sprintf ( VStrStdPix, "Std Pix : x = %.4d y = %.4d ", VAx[VPixCnt], VAy[VPixCnt] ); + } + + if ( PrintLvl == 2 ) { + sprintf ( VStrStdPix, "Std Pix : Pix addr = %.4d : x = %.4d y = %.4d ", VAPixAddr[3].w16, VAx[VPixCnt], VAy[VPixCnt] ); + } + + + if ( PrintLvl > 0 ) { + APP__FAddCrAtEndOfStr (VStrStdNPix, GLB_CMT_SZ ); + strcat ( VStrStdNPix, VStrStdPix ); + } + + ++VPixCnt; + } + + //Add a CR at end of cluster print + + // APP__FAddCrAtEndOfStr ( VStrStdNPix, GLB_CMT_SZ ); + + } + + else { + sprintf ( VStrStdPix, "Std Pix : Pix addr = %.4d, PE addr = %.2d", StdPix.F.PixAddr, StdPix.F.PeAddr ); + } + +#ifndef CC_NOT_CPP_BUILDER + +} // End try + + catch ( Exception& VException ) { + err_error (( ERR_OUT, "APP_MSIS2__FConvStdPixStr (...) exception = %s - sizes VStrStdPix = %d, VStrStdNPix = %d, VStrDbgPr = %d", VException.Message.c_str(), strlen (VStrStdPix), strlen (VStrStdNPix), strlen (VStrDbgPr) )); + } + + +#endif + + + if ( PrintLvl > 0) { + + if ( strlen (VStrStdNPix) < MaxSzStrPrint ) { + strcpy ( StrPrint, VStrStdNPix ); + } + + else { + err_retfail ( -1, (ERR_OUT,"Abort => Destination debug / message string size = %d < required = %d", MaxSzStrPrint, strlen (VStrStdNPix) + 1 ) ); + } + + } + + + + return ( VPixCnt ); +} + + + +/* DOC_FUNC_BEGIN */ +/** +=================================================================================== +* \fn : SInt32 MIS1__BT_FBtDecStdPixMSis2 ( MIS1__TStdPix StdPix, UInt16 RegId, MIS1__TPixXY* PtAResPix, UInt8 MaxESzAResPix ) +* : +* \brief : Decodes MSis 2 cluster field, pixels list is stored in PtAResPix and +* : can also be stored in a string for debugging purpose +* +* \param : StdPix - Source STD cluster +* \param : RegId - Region ID +* \param : PtAResPix - Destination pixels array, its sie must be >= 4 pixels +* \param : MaxESzAResPix - The size i items of the array passed as PtAResPix +* +* \return : The number of pixels in th cluste or < 0 in case of error +* : +* \warning : Globals : +* \warning : Remark : Copy of MIS1__BT_FBtDecStdPixMSis2 (...) without debug print options in order to reduce execution time +* \warning : Level : +* : +* \warning : Items not filled now : +* todo : +* : +* bug : +* : +* \date : Date : 21/06/2024 +* \date : Rev : +* +* \date : Doc date : 20/06/2024 +* \author : Name : Gilles CLAUS +* \author : E-mail : gilles.claus@iphc.cnrs.fr +* \author : Labo : IPHC +* +=================================================================================== +*/ +/* DOC_FUNC_END */ + + +// SInt32 MIS1__BT_FBtDecStdPixMSis2 (...) is based on +// char* APP_MSIS2__FConvStdPixStr ( APP__TStdPix* PtStdPix, UInt16* PtRegId ) +// from msis123_data_decoding.c + + +// PtAResPix => Array for result max 4 pixels +// MaxESzAResPix => Max size of PtAResPix, if < 4 => exit function + +// PrintLvl +// 0 => No print +// 1 => Print in StrPrint the list of pixels coordinates x = 1, y = 10 - x = 2, y = 5 - etc ... +// 2 => Print cluster raw data + pixels list as in option 1 +// + +// StrPrint => String to store pixels list for debug +// MaxSzStrPrint => Size max de StrPrint + +// Returns the nb of pixels found or < 0 + + + +SInt32 MIS1__BT_FBtDecStdPixMSis2 ( MIS1__TStdPix StdPix, UInt16 RegId, MIS1__TPixXY* PtAResPix, UInt32 MaxESzAResPix ) { + + static char VStrStdPix[GLB_CMT_SZ]; + static char VStrStdNPix[2 * GLB_CMT_SZ]; + static char VStrDbgPr[GLB_CMT_SZ]; + + UInt16 VRegId; + UInt16 VRegIdX16; // Region Id * 16 + UInt16 VPeAddr; + UInt16 VPeAddrX2; // Pe address * 2 + UInt16Bits VAPixAddr[4]; + UInt16 VAx[4]; + UInt16 VAy[4]; + UInt8 VCode; + SInt8 VPixCnt; + + // To be removed later + + + SInt16 APP_MSIS2__VGClustEmulCode = -1; // -1 to disable code emulation, 0-7 for pixel code emulation + + + // Check param + + err_retnull ( PtAResPix, (ERR_OUT,"Abort => PtAResPix == NULL") ); + + if ( MaxESzAResPix < 4 ) { + err_retfail ( -1, (ERR_OUT,"Abort => Desination pixels array size MaxESzAResPix = %d < 4 ", MaxESzAResPix ) ); + } + + + +#ifndef CC_NOT_CPP_BUILDER + +try { + +#endif + + VPixCnt = 0; + + + if ( 1 /* PtRegId != NULL */ ) { + + + // typedef union { + // + // UInt16 w16; /*!< Full word, access via w16 */ + // + // struct + // { + // UInt8 Code : 3; /*!< B00..B02 = Code, not used on MSis1, access via f.Code */ + // UInt8 PeAddr : 3; /*!< B03..B05 = PE adddress, access via f.PeAddr */ + // UInt8 PixAddr : 10; /*!< B06..B15 = Pixel address = row, access via f.PixAddr */ + // } f; + // + // struct + // { + // UInt8 b0 : 1; /*!< Bit0, access via b.b0 */ + // UInt8 b1 : 1; /*!< Bit1, access via b.b1 */ + // UInt8 b2 : 1; /*!< Bit2, access via b.b2 */ + + // UInt8 b3 : 1; /*!< Bit3, access via b.b3 */ + // UInt8 b4 : 1; /*!< Bit4, access via b.b4 */ + // UInt8 b5 : 1; /*!< Bit5, access via b.b5 */ + + // UInt8 b6 : 1; /*!< Bit6, access via b.b6 */ + // UInt8 b7 : 1; /*!< Bit7, access via b.b7 */ + // UInt8 b8 : 1; /*!< Bit0, access via b.b8 */ + // UInt8 b9 : 1; /*!< Bit1, access via b.b9 */ + // UInt8 b10 : 1; /*!< Bit2, access via b.b10 */ + // UInt8 b11 : 1; /*!< Bit3, access via b.b11 */ + // UInt8 b12 : 1; /*!< Bit4, access via b.b12 */ + // UInt8 b13 : 1; /*!< Bit5, access via b.b13 */ + // UInt8 b14 : 1; /*!< Bit6, access via b.b14 */ + // UInt8 b15 : 1; /*!< Bit7, access via b.b15 */ + // } b; + // + // + // } APP__TStdPix; + + + + VStrStdNPix[0] = 0; + + // Removed on 14/09/2023 because it generates CR in Memo & log file between pixel raw data printing and decoder pixel + // => It seems not useful => It can be enabled again if needed + // + // APP__FAddCrAtEndOfStr ( VStrStdNPix, GLB_CMT_SZ ); + + + // First pixel + + + VRegId = RegId; + VRegIdX16 = VRegId * 16; + + VPeAddr = StdPix.F.PeAddr; + VPeAddrX2 = VPeAddr * 2; + + VAPixAddr[0].w16 = StdPix.F.PixAddr; + + VCode = StdPix.F.Code; + + // msg (( MSG_OUT, "VCode = %x [H]", VCode )); + + if ( APP_MSIS2__VGClustEmulCode >= 0 ) { + VCode = APP_MSIS2__VGClustEmulCode; + } + + VAy[VPixCnt] = VAPixAddr[0].w16 / 2; + + VAx[VPixCnt] = VRegIdX16 + VPeAddrX2 + (VAPixAddr[0].b.b0 ^ VAPixAddr[0].b.b1); + + PtAResPix[VPixCnt].C.x = VAx[VPixCnt]; + PtAResPix[VPixCnt].C.y = VAy[VPixCnt]; + + ++VPixCnt; + + + // Pixel N + 1 + + if ( (VCode & 0x01) ) { + + VAPixAddr[1].w16 = VAPixAddr[0].w16 + 1; + + VAy[VPixCnt] = VAPixAddr[1].w16 / 2; + + VAx[VPixCnt] = VRegIdX16 + VPeAddrX2 + (VAPixAddr[1].b.b0 ^ VAPixAddr[1].b.b1); + + PtAResPix[VPixCnt].C.x = VAx[VPixCnt]; + PtAResPix[VPixCnt].C.y = VAy[VPixCnt]; + + ++VPixCnt; + } + + // Pixel N + 2 + + if ( (VCode & 0x02) ) { + + VAPixAddr[2].w16 = VAPixAddr[0].w16 + 2; + + VAy[VPixCnt] = VAPixAddr[2].w16 / 2; + + VAx[VPixCnt] = VRegIdX16 + VPeAddrX2 + (VAPixAddr[2].b.b0 ^ VAPixAddr[2].b.b1); + + PtAResPix[VPixCnt].C.x = VAx[VPixCnt]; + PtAResPix[VPixCnt].C.y = VAy[VPixCnt]; + + + ++VPixCnt; + } + + + // Pixel N + 3 + + if ( (VCode & 0x04) ) { + + VAPixAddr[3].w16 = VAPixAddr[0].w16 + 3; + + VAy[VPixCnt] = VAPixAddr[3].w16 / 2; + + VAx[VPixCnt] = VRegIdX16 + VPeAddrX2 + (VAPixAddr[3].b.b0 ^ VAPixAddr[3].b.b1); + + PtAResPix[VPixCnt].C.x = VAx[VPixCnt]; + PtAResPix[VPixCnt].C.y = VAy[VPixCnt]; + + + ++VPixCnt; + } + + //Add a CR at end of cluster print + + // APP__FAddCrAtEndOfStr ( VStrStdNPix, GLB_CMT_SZ ); + + } + +#ifndef CC_NOT_CPP_BUILDER + +} // End try + + catch ( Exception& VException ) { + err_error (( ERR_OUT, "APP_MSIS2__FConvStdPixStr (...) exception = %s - sizes VStrStdPix = %d, VStrStdNPix = %d, VStrDbgPr = %d", VException.Message.c_str(), strlen (VStrStdPix), strlen (VStrStdNPix), strlen (VStrDbgPr) )); + } + +#endif + + return ( VPixCnt ); +} + + + + + + + + + + +/* DOC_FUNC_BEGIN */ +/** +=================================================================================== +* \fn : double MIS1__BT_FBtDecodeFrMSis2 ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, SInt8 PrintLvl ) +* +* \brief : Decode the frames for one MSis 2 : List frames, extract fr header, fr cnt, and pixels decoding \n +* +* \param : PtSrc - Pointer to source record MIS1__TBtAcqW16A +* +* \param : PtDest - Pointer to destination record MIS1__TBtAcqDec +* +* \param : MSisId - If of the MSis to deocde 0 to MIS1__BT_MAX_REAL_MSIS_NB_ACQ-1 +* +* \param : FrNb - Frames nb to convert, if -1 => All frames from source record (NOT HANDLED NOW => Full frame decoding) +* : +* \param : MeasExecTime - Measure exec time 0 = No, 1 = Yes +* +* \param : PrintLvl - Debug print level, 0 = No, 1 = Print record sizes, 2 = More print, to be implemented +* : +* : +* : +* \return : Execution time in us or error code +* : >= 0 - Execution time in us +* : < 0 - Error code +* : +* \warning : Globals : +* \warning : Remark : WARNING => ONLY 2 channels IMPLEMENTED on 22/05/2021 +* \warning : Level : +* : +* \warning : Items not filled now : +* todo : +* : +* bug : +* : +* \date : Date : 17/06/2024 +* \date : Rev : +* \date : Doc date : 17/06/2024 +* \author : Name : Gilles CLAUS +* \author : E-mail : gilles.claus@iphc.cnrs.fr +* \author : Labo : IPHC +* +=================================================================================== +*/ +/* DOC_FUNC_END */ + + +double MIS1__BT_FBtDecodeFrMSis2 ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, SInt8 PrintLvl ) { + + SInt32 VRetOk; + + SInt8 VPrintLvlAbs; + + double VExecTimeUs; + + SInt32 VSrcW16; // W16 to convert + // UInt16* VPtSrcW16; // Pointer to W16 to convert + + UInt32 VW16Nb; // Total W16 nb to process for this MSis 1 + SInt32 ViW16; // Index of W16 processed + SInt32 VFrCnt; // Counter of detected frames = counter of MSis 1 frame headers in data stream + SInt32 VFakeHdCnt; // Counter of fake headers => first W16 is header tag but not following 7 W16 + SInt32 VFrWithoutTrailerCnt; // Counter of frames without trailer + SInt32 ViW16CurHead; // First W16 of current header + + + + TW128As8W16 VFrHd; // Frame header (128 bits) + UInt16 VFrHdW0; // Frame header W0 + UInt16 VFrHdW1; // Frame header W1 + UInt16 VFrHdW2; // Frame header W2 + UInt16 VFrHdW3; // Frame header W3 + UInt16 VFrHdW4; // Frame header W4 + UInt16 VFrHdW5; // Frame header W5 + UInt16 VFrHdW6; // Frame header W6 + UInt16 VFrHdW7; // Frame header W7 + + + + SInt32 VRegCntInFr; // Counter of regiosn in frame + SInt32 VRegCntInAcq; // Counter of regiosn in Acq + SInt32 VPixCntInFr; // Counter of pixels in each frame + SInt32 VPixCntInAcq; // Counter of pixels in Acq + + // Flags + + UInt8 VFrWithoutTrailer; // Flag to handle frames without a trailer at the end, a header can starts + UInt8 VTrailerDetected; // Flag => trailer detected in current frame scanning + + UInt8 VFrTooLong; // Flag => frame length > max possible + UInt8 VFrEnd; // Flag => end of frame = OR of previois flags + + // Pixels decoding 25/05/2021 + + MIS1__TDsRegHeader VCurRegHead; // Current region + MIS1__TStdPix VCurPix; // Current pixel + + MIS1__TPixXY VResPix; // Decoded pixel x,y format to be stored in ResAAAFrPix[MSisId][FrId][PixNo] + MIS1__TPixXY* VPtResPix; // Pointer to current result pixel in ResAAAFrPix[MSisId][FrId][PixNo] + + + MIS1__TBtFrDecHead* VPtFrDecHead; + + SInt8 VPixNbInCluster; + + static char VDecPixStrPrint[2 * GLB_CMT_SZ]; + UInt32 VDecPixStrPrintSz = 2 * GLB_CMT_SZ; + + + VPrintLvlAbs = abs ( PrintLvl ); + + // Check param + + // ---------------------------------------------- + // WARNING + // ---------------------------------------------- + // + // NO parameters checking to save execution time, it is done in ... + // => This function SHOULD not be called directly, but only via ... + // => In case you need to call it directly => Check parameters you provide + + + // Measure exec time + + #ifndef CC_NOT_CPP_BUILDER + + if ( MeasExecTime ) { + TIME__FMeasTimeUsBegin ( 0 /* Index */ ); + } + + + #else + + // You can implement here exec tiome measurement for compiler <> C++ Builder + + + #endif + + + // Propagates AcqId and Triggers nb + + PtDest->AcqId = PtSrc->AcqId; + PtDest->TrigNb = PtSrc->AcqRawHead.Trigs.TrigNb; // Added on 30/05/2021 + + + // Init var + + VRetOk = 1; + + VW16Nb = PtSrc->MSisW16Nb; + ViW16CurHead = 0; + VFrCnt = 0; + VFakeHdCnt = 0; + VFrWithoutTrailerCnt = 0; + + + VFrWithoutTrailer = 0; + VTrailerDetected = 0; + VFrTooLong = 0; + VFrEnd = 0; + + + VRegCntInFr = 0; + VPixCntInFr = 0; + VRegCntInAcq = 0; + VPixCntInAcq = 0; + + VCurRegHead.W16 = 0; + VCurPix.W16 = 0; + + VResPix.C.x = 0; + VResPix.C.y = 0; + + VPtResPix = &PtDest->ResAAAFrPix[MSisId][0 /* Fr no */][0 /* Pix no */]; + + + + VPtFrDecHead = &PtDest->ResAAFrHead[MSisId][0]; + + // Reset frames truncated & errors counters - 30/05/2021 + + PtDest->ResAFrNbTrunc[MSisId] = 0; + PtDest->ResAFrNbErr[MSisId] = 0; + + // Reset decoding function warnings + errors counter - 30/05/2021 + + MIS1__BT_VGDecodecFrWarnErr = 0; + + + // ------------------------------------------------------------- + // Frames decoding + // ------------------------------------------------------------- + + + if ( VPrintLvlAbs ) { + msg (( MSG_OUT, "Decode MSis No %d, Src frame = %d W16", MSisId, VW16Nb )); + } + + + for ( ViW16 = 0; ViW16 < VW16Nb; ) { + + // Try to handle frames without trailer + // - the first header field (W0) has already been detected at end of previous frame, don't read it again it is already here + + if ( VFrWithoutTrailer == 0 ) { + VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + } + + // Detects first W16, W0 of a frame header + + if ( (VSrcW16 & 0xFF00) == 0xFE00 ) { + + ViW16CurHead = ViW16 - 1; + + VFrHdW0 = VSrcW16; + + // Checks that next 7 are also fraem header tags + + VFrHdW1 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW2 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW3 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW4 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW5 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW6 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW7 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + + // Header confirmed + + // if ( 1 ) { + + if ( ((VFrHdW1 & 0xFF00) == 0xFE00) && ((VFrHdW2 & 0xFF00) == 0xFE00) && ((VFrHdW3 & 0xFF00) == 0xFE00) && ((VFrHdW4 & 0xFF00) == 0xFE00) && ((VFrHdW5 & 0xFF00) == 0xFE00) && ((VFrHdW6 & 0xFF00) == 0xFE00) && ((VFrHdW7 & 0xFF00) == 0xFE00) ) { + + // Reset regions cnt, fired pixels cnt, flags + + VRegCntInFr = 0; + VPixCntInFr = 0; + + VFrWithoutTrailer = 0; + VTrailerDetected = 0; + VFrTooLong = 0; + VFrEnd = 0; + + VCurRegHead.W16 = 0; // Resets region header + + // Update frame header results + + VPtFrDecHead->MSisId = MSisId; + VPtFrDecHead->FrId = VFrCnt; + + // Sets ptr to destination pixels stream + + VPtResPix = &PtDest->ResAAAFrPix[MSisId][VFrCnt][0 /* Pix No */]; + + VFrCnt++; + + // Extract header + + VPtFrDecHead->MSisFrHead.AW16[0] = VFrHdW0; + VPtFrDecHead->MSisFrHead.AW16[1] = VFrHdW1; + VPtFrDecHead->MSisFrHead.AW16[2] = VFrHdW2; + VPtFrDecHead->MSisFrHead.AW16[3] = VFrHdW3; + VPtFrDecHead->MSisFrHead.AW16[4] = VFrHdW4; + VPtFrDecHead->MSisFrHead.AW16[5] = VFrHdW5; + VPtFrDecHead->MSisFrHead.AW16[6] = VFrHdW6; + VPtFrDecHead->MSisFrHead.AW16[7] = VFrHdW7; + + // Extract frames counter + + VPtFrDecHead->FrCnt = (VFrHdW0 &0xFF) + ((VFrHdW1 & 0xFF) << 8) + ((VFrHdW2 & 0xFF) << 16) + ((VFrHdW3 & 0xFF) << 24); + + if ( VPrintLvlAbs >= 3 ) { + msg (( MSG_OUT, "Header detected (Cnt = %.4d) : W7 = %X, W6 = %X, W5 = %X, W4 = %X, W3 = %X, W2 = %X, W1 = %X , W0 = %X", VFrCnt, VFrHdW7, VFrHdW6, VFrHdW5, VFrHdW4, VFrHdW3, VFrHdW2, VFrHdW1, VFrHdW0 )); + msg (( MSG_OUT, "FrCnt = %d", VPtFrDecHead->FrCnt )); + } + + + VPtFrDecHead->FirstDataW16Pos = ViW16CurHead + 8; + + // Result fields not calculated now + + VPtFrDecHead->Errors = 0; + VPtFrDecHead->NoTrailer = 0; // 08/06/2021 + VPtFrDecHead->FrDataSzW16 = 0; + VPtFrDecHead->RegionNb = 0; + VPtFrDecHead->FiredPixNb = 0; + VPtFrDecHead->MSisFrTrail.W16 = 0; + VPtFrDecHead->CheckSum = 0; + VPtFrDecHead->ATrigPosW16[0] = 0; + VPtFrDecHead->ATrigPosW16[MIS1__BT_FR_DEC_MAX_TRIG_NB - 1] = 0; + + + // Processing frame + + while (1) { + + VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + + // Detects region + + if ( (VSrcW16 & 0xFF00) == 0xFD00 ) { + + VRegCntInFr++; + VRegCntInAcq++; + + VCurRegHead.W16 = VSrcW16; + + // 06/06/2021 + // - Add print of Region.F.Reg + // - FrCnt dispplay as ud + + if ( VPrintLvlAbs >= 2 ) { + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "Fr No %.3ud : MSis 1 FrCnt = %d - Region No %.2d - Region.F.Reg = %d", VFrCnt - 1, VPtFrDecHead->FrCnt, VRegCntInFr - 1, VCurRegHead.F.Reg )); + } + + continue; + } + + + // Detects trailer + + if ( (VSrcW16 & 0xFF00) == 0xFF00 ) { + + VTrailerDetected = 1; + + VPtFrDecHead->MSisFrTrail.W16 = VSrcW16; + + // Calc fr data size + + VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; + + // Reads checksum + + VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + + VPtFrDecHead->CheckSum = VSrcW16; + + if ( VPrintLvlAbs >= 3 ) { + msg (( MSG_OUT, "Fr No %.3d MSisFrCnt = %.6d - Trailer", VFrCnt, VPtFrDecHead->FrCnt )); + } + + } + + // Detects header => frame without trailer at the end + + if ( (VSrcW16 & 0xFF00) == 0xFE00 ) { + + VFrWithoutTrailer = 1; + VFrWithoutTrailerCnt++; + VPtFrDecHead->NoTrailer = 1; // 08/06/2021 + + // Calc fr data size + + VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; + } + + // Frame is too long : Decoding bug or MSis 1 side bug or unknown info / MSis 1 data stream + + if ( ViW16 >= VW16Nb ) { + + VFrTooLong = 1; + + // Calc fr data size + + VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; + } + + + VFrEnd = VTrailerDetected || VFrWithoutTrailer || VFrTooLong; + + // Pixel detected : Current W16 is not a region header, an empty W16 and is not an end of frame tag + + // if ( (VFrEnd == 0) && ((VSrcW16 & 0xFF00) != 0xFD00) && (VSrcW16 != 0xFCAA) ) { // Test on region not needed now with continue at end of region block + + if ( (VFrEnd == 0) && (VSrcW16 != 0xFCAA) ) { + + + + + + #undef PREVIOUS_DECODING_FOR_MSIS1 + #ifdef PREVIOUS_DECODING_FOR_MSIS1 + + VPixCntInFr++; + VPixCntInAcq++; + + VCurPix.W16 = VSrcW16; + + // Calcul de Y : DATA[15:7] (9 bits 鱵ivalent ࠱0 bits DATA[15:6]/2) + + VResPix.C.y = VCurPix.F.PixAddr / 2; + + // Calcul de X : REGION_HEADER[5:0]*16+DATA[5:3]*2+DATA[6] xor DATA[7] + + VResPix.C.x = (VCurRegHead.F.Reg * 16) + (VCurPix.F.PeAddr * 2) + (VCurPix.B.b6 ^ VCurPix.B.b7); + + // Add in destination array + + if ( VPixCntInFr > MIS1__BT_FR_DEC_MAX_PIX_NB) { + err_warning (( ERR_OUT, "Cant add pixel, destination list is full with %d pixels : AcqId = %d, FrId = %d", MIS1__BT_FR_DEC_MAX_PIX_NB, PtSrc->AcqId, VFrCnt - 1 )); + } + + else { + *VPtResPix = VResPix; + VPtResPix++; + } + + // Print + // 06/06/2021 : Add VSrcW16 print + + + if ( VPrintLvlAbs >= 2 ) { + msg (( MSG_OUT, "VSrcW16 = %X [H] => PixAddr = %d, PE = %d, Code = %d => Pixel : x = %d, y = %d", VSrcW16, VCurPix.F.PixAddr, VCurPix.F.PeAddr, VCurPix.F.Code, VResPix.C.x, VResPix.C.y )); + } + + + + #else + + VCurPix.W16 = VSrcW16; + + #ifdef MIS1__CC_USE_BT_FBtDecStdPixMSis2Dbg + + VPixNbInCluster = MIS1__BT_FBtDecStdPixMSis2Dbg ( VCurPix, VCurRegHead.F.Reg, VPtResPix, MIS1__BT_FR_DEC_MAX_PIX_NB - VPixCntInFr /* MaxESzAResPix */, MIS1__BT_VGBtDecStdPixMSis2PrintLvl, VDecPixStrPrint, VDecPixStrPrintSz ); + + if ( MIS1__BT_VGBtDecStdPixMSis2PrintLvl > 0 ) { + msg (( MSG_OUT, "MSis 2 cluster decoding : %s", VDecPixStrPrint )); + } + + #else + VPixNbInCluster = MIS1__BT_FBtDecStdPixMSis2 ( VCurPix, VCurRegHead.F.Reg, VPtResPix, MIS1__BT_FR_DEC_MAX_PIX_NB - VPixCntInFr /* MaxESzAResPix */ ); + #endif + + + + + if ( VPixNbInCluster < 0 ) { + err_warning (( ERR_OUT, "Cant add pixel, decoding error OR destination list is full ? Space for %d pixels available : AcqId = %d, FrId = %d", MIS1__BT_FR_DEC_MAX_PIX_NB - VPixCntInFr, PtSrc->AcqId, VFrCnt - 1 )); + } + + else { + VPixCntInFr += VPixNbInCluster; + VPixCntInAcq += VPixNbInCluster; + VPtResPix += VPixNbInCluster; // WARNING !!!! => Check if it works + } + + + if ( VPrintLvlAbs >= 2 ) { + msg (( MSG_OUT, "VSrcW16 = %X [H] => PixAddr = %d, PE = %d, Code = %d => Pixel : x = %d, y = %d", VSrcW16, VCurPix.F.PixAddr, VCurPix.F.PeAddr, VCurPix.F.Code, VResPix.C.x, VResPix.C.y )); + } + + + #endif // End of #ifdef PREVIOUS_DECODING_FOR_MSIS1 + + + } + + + // End of frame => Update frame header info + + if ( VFrEnd ) { + + VPtFrDecHead->Errors = 0; // Not handled now 25/05/2021 + VPtFrDecHead->ATrigPosW16[0] = 0; // Not handled now 25/05/2021 + VPtFrDecHead->ATrigPosW16[MIS1__BT_FR_DEC_MAX_TRIG_NB - 1] = 0; // Not handled now 25/05/2021 + + // VPtFrDecHead->FrDataSzW16 = 0; // Calculated before + // VPtFrDecHead->MSisFrTrail.W16 = 0; // Calculated before + // VPtFrDecHead->CheckSum = 0; // Calculated before + + VPtFrDecHead->RegionNb = VRegCntInFr; + VPtFrDecHead->FiredPixNb = VPixCntInFr; + + + + // Frame too long => Exits on error + // No time now to handle it in a better way => TBD later + // Upgraded on 29/05/2021 + // If it is the last frame of Acq => Warning, because the frame is probably only cut + // If it is NOT the last frame of Acq => Error because it should not happne => There is a problem + // Upgraded on 11/10/2021 + // If it is NOT the last frame of Acq => Error, returns -2, before -1 was returned + + if ( VFrTooLong ) { + + + if ( PrintLvl < 0 ) { + msg (( MSG_OUT, "*********************** ACQ %d MSis = %d FR %d TOO LONG = %d W16, VW16Nb = %d, VPixCntInFr = %d ******************************", PtDest->AcqId, MSisId, VFrCnt, VPtFrDecHead->FrDataSzW16, VW16Nb, VPixCntInFr )); + } + + + PtDest->ResAFrNbTrunc[MSisId]++; // Update truncated frames counter - 30/05/2021 + + MIS1__BT_VGDecodecFrWarnErr++; + + if ( VFrCnt >= PtSrc->FrNb ) { + VPtFrDecHead->Errors = MIS1__BT_FR_ERR_TRUNC_LAST_FR; + // err_warning (( ERR_OUT, "Stop frame processing max W16 nb = %d reached => VFrCnt = %d >= FrNbInAcq = %d => Last frame cut", VW16Nb, VFrCnt, PtSrc->FrNb )); + } + + else { + VPtFrDecHead->Errors = MIS1__BT_FR_ERR_TRUNC; + err_error (( ERR_OUT, "Stop frame processing max W16 nb = %d reached => VFrCnt = %d < FrNbInAcq = %d => MSis 1 or decoding sw bug !", VW16Nb, VFrCnt, PtSrc->FrNb )); + // return (-2); // 10/10/2021 return (-2), before it was return (-1) + + // Since 11/10/2021 + + VRetOk = -2; + break; + + } + + } // End if ( VFrTooLong ) + + + + + + + + + + + + // Normal end of frame => break frame decoding loop + + break; + } + + } // End while (1) frame scanning + + + VPtFrDecHead++; + + } + + // Fake header + + else { + + VFakeHdCnt++; + + if ( VPrintLvlAbs >= 1 ) { + msg (( MSG_OUT, "Fake header detected (Cnt = %.4d) : W7 = %X, W6 = %X, W5 = %X, W4 = %X, W3 = %X, W2 = %X, W1 = %X , W0 = %X", VFakeHdCnt, VFrHdW7, VFrHdW6, VFrHdW5, VFrHdW4, VFrHdW3, VFrHdW2, VFrHdW1, VFrHdW0 )); + } + + } + + + } // End frame processing + + + + + } // End for + + + // Update results + + PtDest->ParFrNbInSrcAcq = PtSrc->FrNb; + + + PtDest->ResAFrNb[MSisId] = VFrCnt; + PtDest->ResAFrNbWoTrailer[MSisId] = VFrWithoutTrailerCnt; + PtDest->ResAFrFakeHeadCnt[MSisId] = VFakeHdCnt; + PtDest->ResARegNb[MSisId] = VRegCntInAcq; + PtDest->ResAPixNb[MSisId] = VPixCntInAcq; + + + if ( (VFrCnt == 0) || (VFakeHdCnt > 0) ) { + err_error (( ERR_OUT, "Error : MSisId = %d, VFrCnt = %d, VFakeHdCnt = %d", MSisId, VFrCnt, VFakeHdCnt )); + VRetOk = -1; + } + + + if ( VPrintLvlAbs ) { + + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "%d frames found, %d fake headers found", VFrCnt, VFakeHdCnt )); + msg (( MSG_OUT, "ViW16 = %d", ViW16 )); + + msg (( MSG_OUT, "" )); + } + + + #ifndef CC_NOT_CPP_BUILDER + + if ( MeasExecTime ) { + VExecTimeUs = TIME__FMeasTimeUsEnd ( 0 /* Index */ ); + } + + else { + VExecTimeUs = 0; + } + + #else + + // You can implement here exec tiome measurement for compiler <> C++ Builder + + VExecTimeUs = 0; // No exec time measurement implementation => Returns 0 + + + #endif + + + + + // Before 11/10/2021 // return (VExecTimeUs * VRetOk ); + + // Since 11/10/2021 + + if ( VRetOk < 0 ) { + return ( VRetOk ); + } + + + return (VExecTimeUs); +} + + + + +/* DOC_FUNC_BEGIN */ +/** +=================================================================================== +* \fn : double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, SInt8 PrintLvl ) +* +* \brief : Decode the frames for one MSis 1 / 2.X : List frames, exytract fr header, fr cnt but NO PIXELS DECODING \n +* +* \param : PtSrc - Pointer to source record MIS1__TBtAcqW16A +* +* \param : PtDest - Pointer to destination record MIS1__TBtAcqDec +* +* \param : MSisId - If of the MSis to deocde 0 to MIS1__BT_MAX_REAL_MSIS_NB_ACQ-1 +* +* \param : FrNb - Frames nb to convert, if -1 => All frames from source record (NOT HANDLED NOW => Full frame decoding) +* : +* \param : MeasExecTime - Measure exec time 0 = No, 1 = Yes +* +* \param : PrintLvl - Debug print level, 0 = No, 1 = Print record sizes, 2 = More print, to be implemented +* : +* : +* : +* \return : Execution time in us or error code +* : >= 0 - Execution time in us +* : < 0 - Error code +* : +* \warning : Globals : +* \warning : Remark : WARNING => ONLY 2 channels IMPLEMENTED on 22/05/2021 +* \warning : Level : +* : +* \warning : Items not filled now : +* todo : +* : +* bug : +* : +* \date : Date : 25/05/2021 +* \date : Rev : 08/06/2021 - NoTrailer field update +* \date : Rev : 17/06/2024 - MSis 2, 2.X pixels (cluster) decoding handling +* \date : Rev : +* \date : Doc date : 24/05/2021 +* \author : Name : Gilles CLAUS +* \author : E-mail : gilles.claus@iphc.cnrs.fr +* \author : Labo : IPHC +* +=================================================================================== +*/ +/* DOC_FUNC_END */ + + + +double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, SInt8 PrintLvl ) { + + + double VExecTimeUsRetErr; // value < 0 => Error, value >=0 => Ok and value is execution time in us + + + switch ( MIS1__VGMSisVersion ) { + + case 0 : { + err_error (( ERR_OUT, "Abort MSis version = MSis 0 is not supported by lib" )); + VExecTimeUsRetErr = -1; + break; + } + + case 1 : { + VExecTimeUsRetErr = MIS1__BT_FBtDecodeFrMSis1 ( PtSrc, PtDest, MSisId, FrNb, MeasExecTime, PrintLvl ); + break; + } + + case 2 : { + VExecTimeUsRetErr = MIS1__BT_FBtDecodeFrMSis2 ( PtSrc, PtDest, MSisId, FrNb, MeasExecTime, PrintLvl ); + break; + } + + case 21 : { + VExecTimeUsRetErr = MIS1__BT_FBtDecodeFrMSis2 ( PtSrc, PtDest, MSisId, FrNb, MeasExecTime, PrintLvl ); + break; + } + + default : { + err_error (( ERR_OUT, "Abort MSis version = %d is not supported by lib", MIS1__VGMSisVersion )); + VExecTimeUsRetErr = -1; + break; + } + + + } + + return (VExecTimeUsRetErr); +} + + + +// Copy before upgrade for MSis 2, 2.X handling (clusterization) +// The following function has been used for all MSis 1 BT data analysis +// 17/06/2024 + +/* DOC_FUNC_BEGIN */ +/** +=================================================================================== +* \fn : double MIS1__BT_FBtDecodeFr_before_170624 ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, SInt8 PrintLvl ) +* +* \brief : Decode the frames for one MSis 1 : List frames, exytract fr header, fr cnt but NO PIXELS DECODING \n +* : Functions used for ALL MSis 1 BT data decoding, renamed with suffix _170624 before upgrade of lib for MSis 2 +* +* \param : PtSrc - Pointer to source record MIS1__TBtAcqW16A +* +* \param : PtDest - Pointer to destination record MIS1__TBtAcqDec +* +* \param : MSisId - If of the MSis to deocde 0 to MIS1__BT_MAX_REAL_MSIS_NB_ACQ-1 +* +* \param : FrNb - Frames nb to convert, if -1 => All frames from source record (NOT HANDLED NOW => Full frame decoding) +* : +* \param : MeasExecTime - Measure exec time 0 = No, 1 = Yes +* +* \param : PrintLvl - Debug print level, 0 = No, 1 = Print record sizes, 2 = More print, to be implemented +* : +* : +* : +* \return : Execution time in us or error code +* : >= 0 - Execution time in us +* : < 0 - Error code +* : +* \warning : Globals : +* \warning : Remark : WARNING => ONLY 2 channels IMPLEMENTED on 22/05/2021 +* \warning : Level : +* : +* \warning : Items not filled now : +* todo : +* : +* bug : +* : +* \date : Date : 25/05/2021 +* \date : Rev : 08/06/2021 - NoTrailer field update +* \date : Rev : +* \date : Doc date : 24/05/2021 +* \author : Name : Gilles CLAUS +* \author : E-mail : gilles.claus@iphc.cnrs.fr +* \author : Labo : IPHC +* +=================================================================================== +*/ +/* DOC_FUNC_END */ + + +double MIS1__BT_FBtDecodeFr_before_170624 ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, SInt8 PrintLvl ) { + + SInt32 VRetOk; + + SInt8 VPrintLvlAbs; + + double VExecTimeUs; + + SInt32 VSrcW16; // W16 to convert + // UInt16* VPtSrcW16; // Pointer to W16 to convert + + UInt32 VW16Nb; // Total W16 nb to process for this MSis 1 + SInt32 ViW16; // Index of W16 processed + SInt32 VFrCnt; // Counter of detected frames = counter of MSis 1 frame headers in data stream + SInt32 VFakeHdCnt; // Counter of fake headers => first W16 is header tag but not following 7 W16 + SInt32 VFrWithoutTrailerCnt; // Counter of frames without trailer + SInt32 ViW16CurHead; // First W16 of current header + + + + TW128As8W16 VFrHd; // Frame header (128 bits) + UInt16 VFrHdW0; // Frame header W0 + UInt16 VFrHdW1; // Frame header W1 + UInt16 VFrHdW2; // Frame header W2 + UInt16 VFrHdW3; // Frame header W3 + UInt16 VFrHdW4; // Frame header W4 + UInt16 VFrHdW5; // Frame header W5 + UInt16 VFrHdW6; // Frame header W6 + UInt16 VFrHdW7; // Frame header W7 + + + + SInt32 VRegCntInFr; // Counter of regiosn in frame + SInt32 VRegCntInAcq; // Counter of regiosn in Acq + SInt32 VPixCntInFr; // Counter of pixels in each frame + SInt32 VPixCntInAcq; // Counter of pixels in Acq + + // Flags + + UInt8 VFrWithoutTrailer; // Flag to handle frames without a trailer at the end, a header can starts + UInt8 VTrailerDetected; // Flag => trailer detected in current frame scanning + + UInt8 VFrTooLong; // Flag => frame length > max possible + UInt8 VFrEnd; // Flag => end of frame = OR of previois flags + + // Pixels decoding 25/05/2021 + + MIS1__TDsRegHeader VCurRegHead; // Current region + MIS1__TStdPix VCurPix; // Current pixel + + MIS1__TPixXY VResPix; // Decoded pixel x,y format to be stored in ResAAAFrPix[MSisId][FrId][PixNo] + MIS1__TPixXY* VPtResPix; // Pointer to current result pixel in ResAAAFrPix[MSisId][FrId][PixNo] + + + MIS1__TBtFrDecHead* VPtFrDecHead; + + + VPrintLvlAbs = abs ( PrintLvl ); + + // Check param + + // ---------------------------------------------- + // WARNING + // ---------------------------------------------- + // + // NO parameters checking to save execution time, it is done in ... + // => This function SHOULD not be called directly, but only via ... + // => In case you need to call it directly => Check parameters you provide + + // Measure exec time + + #ifndef CC_NOT_CPP_BUILDER + + if ( MeasExecTime ) { + TIME__FMeasTimeUsBegin ( 0 /* Index */ ); + } + + + #else + + // You can implement here exec tiome measurement for compiler <> C++ Builder + + + #endif + + + // Propagates AcqId and Triggers nb + + PtDest->AcqId = PtSrc->AcqId; + PtDest->TrigNb = PtSrc->AcqRawHead.Trigs.TrigNb; // Added on 30/05/2021 + + + // Init var + + VRetOk = 1; + + VW16Nb = PtSrc->MSisW16Nb; + ViW16CurHead = 0; + VFrCnt = 0; + VFakeHdCnt = 0; + VFrWithoutTrailerCnt = 0; + + + VFrWithoutTrailer = 0; + VTrailerDetected = 0; + VFrTooLong = 0; + VFrEnd = 0; + + + VRegCntInFr = 0; + VPixCntInFr = 0; + VRegCntInAcq = 0; + VPixCntInAcq = 0; + + VCurRegHead.W16 = 0; + VCurPix.W16 = 0; + + VResPix.C.x = 0; + VResPix.C.y = 0; + + VPtResPix = &PtDest->ResAAAFrPix[MSisId][0 /* Fr no */][0 /* Pix no */]; + + + + VPtFrDecHead = &PtDest->ResAAFrHead[MSisId][0]; + + // Reset frames truncated & errors counters - 30/05/2021 + + PtDest->ResAFrNbTrunc[MSisId] = 0; + PtDest->ResAFrNbErr[MSisId] = 0; + + // Reset decoding function warnings + errors counter - 30/05/2021 + + MIS1__BT_VGDecodecFrWarnErr = 0; + + + // ------------------------------------------------------------- + // Frames decoding + // ------------------------------------------------------------- + + + if ( VPrintLvlAbs ) { + msg (( MSG_OUT, "Decode MSis No %d, Src frame = %d W16", MSisId, VW16Nb )); + } + + + for ( ViW16 = 0; ViW16 < VW16Nb; ) { + + // Try to handle frames without trailer + // - the first header field (W0) has already been detected at end of previous frame, don't read it again it is already here + + if ( VFrWithoutTrailer == 0 ) { + VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + } + + // Detects first W16, W0 of a frame header + + if ( (VSrcW16 & 0xFF00) == 0xFE00 ) { + + ViW16CurHead = ViW16 - 1; + + VFrHdW0 = VSrcW16; + + // Checks that next 7 are also fraem header tags + + VFrHdW1 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW2 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW3 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW4 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW5 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW6 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW7 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + + // Header confirmed + + // if ( 1 ) { + + if ( ((VFrHdW1 & 0xFF00) == 0xFE00) && ((VFrHdW2 & 0xFF00) == 0xFE00) && ((VFrHdW3 & 0xFF00) == 0xFE00) && ((VFrHdW4 & 0xFF00) == 0xFE00) && ((VFrHdW5 & 0xFF00) == 0xFE00) && ((VFrHdW6 & 0xFF00) == 0xFE00) && ((VFrHdW7 & 0xFF00) == 0xFE00) ) { + + // Reset regions cnt, fired pixels cnt, flags + + VRegCntInFr = 0; + VPixCntInFr = 0; + + VFrWithoutTrailer = 0; + VTrailerDetected = 0; + VFrTooLong = 0; + VFrEnd = 0; + + VCurRegHead.W16 = 0; // Resets region header + + // Update frame header results + + VPtFrDecHead->MSisId = MSisId; + VPtFrDecHead->FrId = VFrCnt; + + // Sets ptr to destination pixels stream + + VPtResPix = &PtDest->ResAAAFrPix[MSisId][VFrCnt][0 /* Pix No */]; + + VFrCnt++; + + // Extract header + + VPtFrDecHead->MSisFrHead.AW16[0] = VFrHdW0; + VPtFrDecHead->MSisFrHead.AW16[1] = VFrHdW1; + VPtFrDecHead->MSisFrHead.AW16[2] = VFrHdW2; + VPtFrDecHead->MSisFrHead.AW16[3] = VFrHdW3; + VPtFrDecHead->MSisFrHead.AW16[4] = VFrHdW4; + VPtFrDecHead->MSisFrHead.AW16[5] = VFrHdW5; + VPtFrDecHead->MSisFrHead.AW16[6] = VFrHdW6; + VPtFrDecHead->MSisFrHead.AW16[7] = VFrHdW7; + + // Extract frames counter + + VPtFrDecHead->FrCnt = (VFrHdW0 &0xFF) + ((VFrHdW1 & 0xFF) << 8) + ((VFrHdW2 & 0xFF) << 16) + ((VFrHdW3 & 0xFF) << 24); + + if ( VPrintLvlAbs >= 3 ) { + msg (( MSG_OUT, "Header detected (Cnt = %.4d) : W7 = %X, W6 = %X, W5 = %X, W4 = %X, W3 = %X, W2 = %X, W1 = %X , W0 = %X", VFrCnt, VFrHdW7, VFrHdW6, VFrHdW5, VFrHdW4, VFrHdW3, VFrHdW2, VFrHdW1, VFrHdW0 )); + msg (( MSG_OUT, "FrCnt = %d", VPtFrDecHead->FrCnt )); + } + + + VPtFrDecHead->FirstDataW16Pos = ViW16CurHead + 8; + + // Result fields not calculated now + + VPtFrDecHead->Errors = 0; + VPtFrDecHead->NoTrailer = 0; // 08/06/2021 + VPtFrDecHead->FrDataSzW16 = 0; + VPtFrDecHead->RegionNb = 0; + VPtFrDecHead->FiredPixNb = 0; + VPtFrDecHead->MSisFrTrail.W16 = 0; + VPtFrDecHead->CheckSum = 0; + VPtFrDecHead->ATrigPosW16[0] = 0; + VPtFrDecHead->ATrigPosW16[MIS1__BT_FR_DEC_MAX_TRIG_NB - 1] = 0; + + + // Processing frame + + while (1) { + + VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + + // Detects region + + if ( (VSrcW16 & 0xFF00) == 0xFD00 ) { + + VRegCntInFr++; + VRegCntInAcq++; + + VCurRegHead.W16 = VSrcW16; + + // 06/06/2021 + // - Add print of Region.F.Reg + // - FrCnt dispplay as ud + + if ( VPrintLvlAbs >= 2 ) { + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "Fr No %.3ud : MSis 1 FrCnt = %d - Region No %.2d - Region.F.Reg = %d", VFrCnt - 1, VPtFrDecHead->FrCnt, VRegCntInFr - 1, VCurRegHead.F.Reg )); + } + + continue; + } + + + // Detects trailer + + if ( (VSrcW16 & 0xFF00) == 0xFF00 ) { + + VTrailerDetected = 1; + + VPtFrDecHead->MSisFrTrail.W16 = VSrcW16; + + // Calc fr data size + + VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; + + // Reads checksum + + VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + + VPtFrDecHead->CheckSum = VSrcW16; + + if ( VPrintLvlAbs >= 3 ) { + msg (( MSG_OUT, "Fr No %.3d MSisFrCnt = %.6d - Trailer", VFrCnt, VPtFrDecHead->FrCnt )); + } + + } + + // Detects header => frame without trailer at the end + + if ( (VSrcW16 & 0xFF00) == 0xFE00 ) { + + VFrWithoutTrailer = 1; + VFrWithoutTrailerCnt++; + VPtFrDecHead->NoTrailer = 1; // 08/06/2021 + + // Calc fr data size + + VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; + } + + // Frame is too long : Decoding bug or MSis 1 side bug or unknown info / MSis 1 data stream + + if ( ViW16 >= VW16Nb ) { + + VFrTooLong = 1; + + // Calc fr data size + + VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; + } + + + VFrEnd = VTrailerDetected || VFrWithoutTrailer || VFrTooLong; + + // Pixel detected : Current W16 is not a region header, an empty W16 and is not an end of frame tag + + // if ( (VFrEnd == 0) && ((VSrcW16 & 0xFF00) != 0xFD00) && (VSrcW16 != 0xFCAA) ) { // Test on region not needed now with continue at end of region block + + if ( (VFrEnd == 0) && (VSrcW16 != 0xFCAA) ) { + + VPixCntInFr++; + VPixCntInAcq++; + + VCurPix.W16 = VSrcW16; + + // Calcul de Y : DATA[15:7] (9 bits 鱵ivalent ࠱0 bits DATA[15:6]/2) + + VResPix.C.y = VCurPix.F.PixAddr / 2; + + // Calcul de X : REGION_HEADER[5:0]*16+DATA[5:3]*2+DATA[6] xor DATA[7] + + VResPix.C.x = (VCurRegHead.F.Reg * 16) + (VCurPix.F.PeAddr * 2) + (VCurPix.B.b6 ^ VCurPix.B.b7); + + // Add in destination array + + if ( VPixCntInFr > MIS1__BT_FR_DEC_MAX_PIX_NB) { + err_warning (( ERR_OUT, "Cant add pixel, destination list is full with %d pixels : AcqId = %d, FrId = %d", MIS1__BT_FR_DEC_MAX_PIX_NB, PtSrc->AcqId, VFrCnt - 1 )); + } + + else { + *VPtResPix = VResPix; + VPtResPix++; + } + + // Print + // 06/06/2021 : Add VSrcW16 print + + + if ( VPrintLvlAbs >= 2 ) { + msg (( MSG_OUT, "VSrcW16 = %X [H] => PixAddr = %d, PE = %d, Code = %d => Pixel : x = %d, y = %d", VSrcW16, VCurPix.F.PixAddr, VCurPix.F.PeAddr, VCurPix.F.Code, VResPix.C.x, VResPix.C.y )); + } + + } + + + // End of frame => Update frame header info + + if ( VFrEnd ) { + + VPtFrDecHead->Errors = 0; // Not handled now 25/05/2021 + VPtFrDecHead->ATrigPosW16[0] = 0; // Not handled now 25/05/2021 + VPtFrDecHead->ATrigPosW16[MIS1__BT_FR_DEC_MAX_TRIG_NB - 1] = 0; // Not handled now 25/05/2021 + + // VPtFrDecHead->FrDataSzW16 = 0; // Calculated before + // VPtFrDecHead->MSisFrTrail.W16 = 0; // Calculated before + // VPtFrDecHead->CheckSum = 0; // Calculated before + + VPtFrDecHead->RegionNb = VRegCntInFr; + VPtFrDecHead->FiredPixNb = VPixCntInFr; + + + + // Frame too long => Exits on error + // No time now to handle it in a better way => TBD later + // Upgraded on 29/05/2021 + // If it is the last frame of Acq => Warning, because the frame is probably only cut + // If it is NOT the last frame of Acq => Error because it should not happne => There is a problem + // Upgraded on 11/10/2021 + // If it is NOT the last frame of Acq => Error, returns -2, before -1 was returned + + if ( VFrTooLong ) { + + + if ( PrintLvl < 0 ) { + msg (( MSG_OUT, "*********************** ACQ %d MSis = %d FR %d TOO LONG = %d W16, VW16Nb = %d, VPixCntInFr = %d ******************************", PtDest->AcqId, MSisId, VFrCnt, VPtFrDecHead->FrDataSzW16, VW16Nb, VPixCntInFr )); + } + + + PtDest->ResAFrNbTrunc[MSisId]++; // Update truncated frames counter - 30/05/2021 + + MIS1__BT_VGDecodecFrWarnErr++; + + if ( VFrCnt >= PtSrc->FrNb ) { + VPtFrDecHead->Errors = MIS1__BT_FR_ERR_TRUNC_LAST_FR; + // err_warning (( ERR_OUT, "Stop frame processing max W16 nb = %d reached => VFrCnt = %d >= FrNbInAcq = %d => Last frame cut", VW16Nb, VFrCnt, PtSrc->FrNb )); + } + + else { + VPtFrDecHead->Errors = MIS1__BT_FR_ERR_TRUNC; + err_error (( ERR_OUT, "Stop frame processing max W16 nb = %d reached => VFrCnt = %d < FrNbInAcq = %d => MSis 1 or decoding sw bug !", VW16Nb, VFrCnt, PtSrc->FrNb )); + // return (-2); // 10/10/2021 return (-2), before it was return (-1) + + // Since 11/10/2021 + + VRetOk = -2; + break; + + } + + } // End if ( VFrTooLong ) + + + + + + + + + + + + // Normal end of frame => break frame decoding loop + + break; + } + + } // End while (1) frame scanning + + + VPtFrDecHead++; + + } + + // Fake header + + else { + + VFakeHdCnt++; + + if ( VPrintLvlAbs >= 1 ) { + msg (( MSG_OUT, "Fake header detected (Cnt = %.4d) : W7 = %X, W6 = %X, W5 = %X, W4 = %X, W3 = %X, W2 = %X, W1 = %X , W0 = %X", VFakeHdCnt, VFrHdW7, VFrHdW6, VFrHdW5, VFrHdW4, VFrHdW3, VFrHdW2, VFrHdW1, VFrHdW0 )); + } + + } + + + } // End frame processing + + + + + } // End for + + + // Update results + + PtDest->ParFrNbInSrcAcq = PtSrc->FrNb; + + + PtDest->ResAFrNb[MSisId] = VFrCnt; + PtDest->ResAFrNbWoTrailer[MSisId] = VFrWithoutTrailerCnt; + PtDest->ResAFrFakeHeadCnt[MSisId] = VFakeHdCnt; + PtDest->ResARegNb[MSisId] = VRegCntInAcq; + PtDest->ResAPixNb[MSisId] = VPixCntInAcq; + + + if ( (VFrCnt == 0) || (VFakeHdCnt > 0) ) { + err_error (( ERR_OUT, "Error : MSisId = %d, VFrCnt = %d, VFakeHdCnt = %d", MSisId, VFrCnt, VFakeHdCnt )); + VRetOk = -1; + } + + + if ( VPrintLvlAbs ) { + + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "%d frames found, %d fake headers found", VFrCnt, VFakeHdCnt )); + msg (( MSG_OUT, "ViW16 = %d", ViW16 )); + + msg (( MSG_OUT, "" )); + } + + + #ifndef CC_NOT_CPP_BUILDER + + if ( MeasExecTime ) { + VExecTimeUs = TIME__FMeasTimeUsEnd ( 0 /* Index */ ); + } + + else { + VExecTimeUs = 0; + } + + #else + + // You can implement here exec tiome measurement for compiler <> C++ Builder + + VExecTimeUs = 0; // No exec time measurement implementation => Returns 0 + + + #endif + + + + + // Before 11/10/2021 // return (VExecTimeUs * VRetOk ); + + // Since 11/10/2021 + + if ( VRetOk < 0 ) { + return ( VRetOk ); + } + + + return (VExecTimeUs); +} + + + + + +// Copy before upgrade to stdy the problem of long framess + + + +double MIS1__BT_FBtDecodeFr__before_160621 ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, UInt8 PrintLvl ) { + + SInt32 VRetOk; + double VExecTimeUs; + + SInt32 VSrcW16; // W16 to convert + // UInt16* VPtSrcW16; // Pointer to W16 to convert + + UInt32 VW16Nb; // Total W16 nb to process for this MSis 1 + SInt32 ViW16; // Index of W16 processed + SInt32 VFrCnt; // Counter of detected frames = counter of MSis 1 frame headers in data stream + SInt32 VFakeHdCnt; // Counter of fake headers => first W16 is header tag but not following 7 W16 + SInt32 VFrWithoutTrailerCnt; // Counter of frames without trailer + SInt32 ViW16CurHead; // First W16 of current header + + + + TW128As8W16 VFrHd; // Frame header (128 bits) + UInt16 VFrHdW0; // Frame header W0 + UInt16 VFrHdW1; // Frame header W1 + UInt16 VFrHdW2; // Frame header W2 + UInt16 VFrHdW3; // Frame header W3 + UInt16 VFrHdW4; // Frame header W4 + UInt16 VFrHdW5; // Frame header W5 + UInt16 VFrHdW6; // Frame header W6 + UInt16 VFrHdW7; // Frame header W7 + + + + SInt32 VRegCntInFr; // Counter of regiosn in frame + SInt32 VRegCntInAcq; // Counter of regiosn in Acq + SInt32 VPixCntInFr; // Counter of pixels in each frame + SInt32 VPixCntInAcq; // Counter of pixels in Acq + + // Flags + + UInt8 VFrWithoutTrailer; // Flag to handle frames without a trailer at the end, a header can starts + UInt8 VTrailerDetected; // Flag => trailer detected in current frame scanning + UInt8 VFrTooLong; // Flag => frame length > max possible + UInt8 VFrEnd; // Flag => end of frame = OR of previois flags + + // Pixels decoding 25/05/2021 + + MIS1__TDsRegHeader VCurRegHead; // Current region + MIS1__TStdPix VCurPix; // Current pixel + + MIS1__TPixXY VResPix; // Decoded pixel x,y format to be stored in ResAAAFrPix[MSisId][FrId][PixNo] + MIS1__TPixXY* VPtResPix; // Pointer to current result pixel in ResAAAFrPix[MSisId][FrId][PixNo] + + + MIS1__TBtFrDecHead* VPtFrDecHead; + + + // Check param + + // ---------------------------------------------- + // WARNING + // ---------------------------------------------- + // + // NO parameters checking to save execution time, it is done in ... + // => This function SHOULD not be called directly, but only via ... + // => In case you need to call it directly => Check parameters you provide + + // Measure exec time + + #ifndef CC_NOT_CPP_BUILDER + + if ( MeasExecTime ) { + TIME__FMeasTimeUsBegin ( 0 /* Index */ ); + } + + + #else + + // You can implement here exec tiome measurement for compiler <> C++ Builder + + + #endif + + + // Propagates AcqId and Triggers nb + + PtDest->AcqId = PtSrc->AcqId; + PtDest->TrigNb = PtSrc->AcqRawHead.Trigs.TrigNb; // Added on 30/05/2021 + + + // Init var + + VRetOk = 1; + + VW16Nb = PtSrc->MSisW16Nb; + ViW16CurHead = 0; + VFrCnt = 0; + VFakeHdCnt = 0; + VFrWithoutTrailerCnt = 0; + + + VFrWithoutTrailer = 0; + VTrailerDetected = 0; + VFrTooLong = 0; + VFrEnd = 0; + + + VRegCntInFr = 0; + VPixCntInFr = 0; + VRegCntInAcq = 0; + VPixCntInAcq = 0; + + VCurRegHead.W16 = 0; + VCurPix.W16 = 0; + + VResPix.C.x = 0; + VResPix.C.y = 0; + + VPtResPix = &PtDest->ResAAAFrPix[MSisId][0 /* Fr no */][0 /* Pix no */]; + + + + VPtFrDecHead = &PtDest->ResAAFrHead[MSisId][0]; + + // Reset frames truncated & errors counters - 30/05/2021 + + PtDest->ResAFrNbTrunc[MSisId] = 0; + PtDest->ResAFrNbErr[MSisId] = 0; + + // Reset decoding function warnings + errors counter - 30/05/2021 + + MIS1__BT_VGDecodecFrWarnErr = 0; + + + // ------------------------------------------------------------- + // Frames decoding + // ------------------------------------------------------------- + + + if ( PrintLvl ) { + msg (( MSG_OUT, "Decode MSis No %d, Src frame = %d W16", MSisId, VW16Nb )); + } + + + for ( ViW16 = 0; ViW16 < VW16Nb; ) { + + // Try to handle frames without trailer + // - the first header field (W0) has already been detected at end of previous frame, don't read it again it is already here + + if ( VFrWithoutTrailer == 0 ) { + VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + } + + // Detects first W16, W0 of a frame header + + if ( (VSrcW16 & 0xFF00) == 0xFE00 ) { + + ViW16CurHead = ViW16 - 1; + + VFrHdW0 = VSrcW16; + + // Checks that next 7 are also fraem header tags + + VFrHdW1 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW2 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW3 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW4 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW5 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW6 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + VFrHdW7 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + + // Header confirmed + + // if ( 1 ) { + + if ( ((VFrHdW1 & 0xFF00) == 0xFE00) && ((VFrHdW2 & 0xFF00) == 0xFE00) && ((VFrHdW3 & 0xFF00) == 0xFE00) && ((VFrHdW4 & 0xFF00) == 0xFE00) && ((VFrHdW5 & 0xFF00) == 0xFE00) && ((VFrHdW6 & 0xFF00) == 0xFE00) && ((VFrHdW7 & 0xFF00) == 0xFE00) ) { + + // Reset regions cnt, fired pixels cnt, flags + + VRegCntInFr = 0; + VPixCntInFr = 0; + + VFrWithoutTrailer = 0; + VTrailerDetected = 0; + VFrTooLong = 0; + VFrEnd = 0; + + VCurRegHead.W16 = 0; // Resets region header + + // Update frame header results + + VPtFrDecHead->MSisId = MSisId; + VPtFrDecHead->FrId = VFrCnt; + + // Sets ptr to destination pixels stream + + VPtResPix = &PtDest->ResAAAFrPix[MSisId][VFrCnt][0 /* Pix No */]; + + VFrCnt++; + + // Extract header + + VPtFrDecHead->MSisFrHead.AW16[0] = VFrHdW0; + VPtFrDecHead->MSisFrHead.AW16[1] = VFrHdW1; + VPtFrDecHead->MSisFrHead.AW16[2] = VFrHdW2; + VPtFrDecHead->MSisFrHead.AW16[3] = VFrHdW3; + VPtFrDecHead->MSisFrHead.AW16[4] = VFrHdW4; + VPtFrDecHead->MSisFrHead.AW16[5] = VFrHdW5; + VPtFrDecHead->MSisFrHead.AW16[6] = VFrHdW6; + VPtFrDecHead->MSisFrHead.AW16[7] = VFrHdW7; + + // Extract frames counter + + VPtFrDecHead->FrCnt = (VFrHdW0 &0xFF) + ((VFrHdW1 & 0xFF) << 8) + ((VFrHdW2 & 0xFF) << 16) + ((VFrHdW3 & 0xFF) << 24); + + if ( PrintLvl >= 3 ) { + msg (( MSG_OUT, "Header detected (Cnt = %.4d) : W7 = %X, W6 = %X, W5 = %X, W4 = %X, W3 = %X, W2 = %X, W1 = %X , W0 = %X", VFrCnt, VFrHdW7, VFrHdW6, VFrHdW5, VFrHdW4, VFrHdW3, VFrHdW2, VFrHdW1, VFrHdW0 )); + msg (( MSG_OUT, "FrCnt = %d", VPtFrDecHead->FrCnt )); + } + + + VPtFrDecHead->FirstDataW16Pos = ViW16CurHead + 8; + + // Result fields not calculated now + + VPtFrDecHead->Errors = 0; + VPtFrDecHead->NoTrailer = 0; // 08/06/2021 + VPtFrDecHead->FrDataSzW16 = 0; + VPtFrDecHead->RegionNb = 0; + VPtFrDecHead->FiredPixNb = 0; + VPtFrDecHead->MSisFrTrail.W16 = 0; + VPtFrDecHead->CheckSum = 0; + VPtFrDecHead->ATrigPosW16[0] = 0; + VPtFrDecHead->ATrigPosW16[MIS1__BT_FR_DEC_MAX_TRIG_NB - 1] = 0; + + + // Processing frame + + while (1) { + + VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + + // Detects region + + if ( (VSrcW16 & 0xFF00) == 0xFD00 ) { + + VRegCntInFr++; + VRegCntInAcq++; + + VCurRegHead.W16 = VSrcW16; + + // 06/06/2021 + // - Add print of Region.F.Reg + // - FrCnt dispplay as ud + + if ( PrintLvl >= 2 ) { + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "Fr No %.3ud : MSis 1 FrCnt = %d - Region No %.2d - Region.F.Reg = %d", VFrCnt - 1, VPtFrDecHead->FrCnt, VRegCntInFr - 1, VCurRegHead.F.Reg )); + } + + continue; + } + + + // Detects trailer + + if ( (VSrcW16 & 0xFF00) == 0xFF00 ) { + + VTrailerDetected = 1; + + VPtFrDecHead->MSisFrTrail.W16 = VSrcW16; + + // Calc fr data size + + VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; + + // Reads checksum + + VSrcW16 = PtSrc->AAMsis[MSisId][ViW16]; + ViW16++; + + VPtFrDecHead->CheckSum = VSrcW16; + + if ( PrintLvl >= 3 ) { + msg (( MSG_OUT, "Fr No %.3d MSisFrCnt = %.6d - Trailer", VFrCnt, VPtFrDecHead->FrCnt )); + } + + } + + // Detects header => frame without trailer at the end + + if ( (VSrcW16 & 0xFF00) == 0xFE00 ) { + + VFrWithoutTrailer = 1; + VFrWithoutTrailerCnt++; + VPtFrDecHead->NoTrailer = 1; // 08/06/2021 + + // Calc fr data size + + VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; + } + + // Frame is too long : Decoding bug or MSis 1 side bug or unknown info / MSis 1 data stream + + if ( ViW16 >= VW16Nb ) { + VFrTooLong = 1; + + // Calc fr data size + + VPtFrDecHead->FrDataSzW16 = ViW16 - VPtFrDecHead->FirstDataW16Pos - 1; + } + + + VFrEnd = VTrailerDetected || VFrWithoutTrailer || VFrTooLong; + + // Pixel detected : Current W16 is not a region header, an empty W16 and is not an end of frame tag + + // if ( (VFrEnd == 0) && ((VSrcW16 & 0xFF00) != 0xFD00) && (VSrcW16 != 0xFCAA) ) { // Test on region not needed now with continue at end of region block + + if ( (VFrEnd == 0) && (VSrcW16 != 0xFCAA) ) { + + VPixCntInFr++; + VPixCntInAcq++; + + VCurPix.W16 = VSrcW16; + + // Calcul de Y : DATA[15:7] (9 bits �quivalent � 10 bits DATA[15:6]/2) + + VResPix.C.y = VCurPix.F.PixAddr / 2; + + // Calcul de X : REGION_HEADER[5:0]*16+DATA[5:3]*2+DATA[6] xor DATA[7] + + VResPix.C.x = (VCurRegHead.F.Reg * 16) + (VCurPix.F.PeAddr * 2) + (VCurPix.B.b6 ^ VCurPix.B.b7); + + // Add in destination array + + if ( VPixCntInFr > MIS1__BT_FR_DEC_MAX_PIX_NB) { + err_warning (( ERR_OUT, "Cant add pixel, destination list is full with %d pixels : AcqId = %d, FrId = %d", MIS1__BT_FR_DEC_MAX_PIX_NB, PtSrc->AcqId, VFrCnt - 1 )); + } + + else { + *VPtResPix = VResPix; + VPtResPix++; + } + + // Print + // 06/06/2021 : Add VSrcW16 print + + + if ( PrintLvl >= 2 ) { + msg (( MSG_OUT, "VSrcW16 = %X [H] => PixAddr = %d, PE = %d, Code = %d => Pixel : x = %d, y = %d", VSrcW16, VCurPix.F.PixAddr, VCurPix.F.PeAddr, VCurPix.F.Code, VResPix.C.x, VResPix.C.y )); + } + + } + + + // End of frame => Update frame header info + + if ( VFrEnd ) { + + VPtFrDecHead->Errors = 0; // Not handled now 25/05/2021 + VPtFrDecHead->ATrigPosW16[0] = 0; // Not handled now 25/05/2021 + VPtFrDecHead->ATrigPosW16[MIS1__BT_FR_DEC_MAX_TRIG_NB - 1] = 0; // Not handled now 25/05/2021 + + // VPtFrDecHead->FrDataSzW16 = 0; // Calculated before + // VPtFrDecHead->MSisFrTrail.W16 = 0; // Calculated before + // VPtFrDecHead->CheckSum = 0; // Calculated before + + VPtFrDecHead->RegionNb = VRegCntInFr; + VPtFrDecHead->FiredPixNb = VPixCntInFr; + + + + // Frame too long => Exits on error + // No time now to handle it in a better way => TBD later + // Upgraded on 29/05/2021 + // If it is the last frame of Acq => Warning, because the frame is probably only cut + // If it is NOT the last frame of Acq => Error because it should not happne => There is a problem + + + if ( VFrTooLong ) { + + PtDest->ResAFrNbTrunc[MSisId]++; // Update truncated frames counter - 30/05/2021 + + MIS1__BT_VGDecodecFrWarnErr++; + + if ( VFrCnt >= PtSrc->FrNb ) { + VPtFrDecHead->Errors = MIS1__BT_FR_ERR_TRUNC_LAST_FR; + // err_warning (( ERR_OUT, "Stop frame processing max W16 nb = %d reached => VFrCnt = %d >= FrNbInAcq = %d => Last frame cut", VW16Nb, VFrCnt, PtSrc->FrNb )); + } + + else { + VPtFrDecHead->Errors = MIS1__BT_FR_ERR_TRUNC; + err_error (( ERR_OUT, "Stop frame processing max W16 nb = %d reached => VFrCnt = %d < FrNbInAcq = %d => MSis 1 or decoding sw bug !", VW16Nb, VFrCnt, PtSrc->FrNb )); + return (-1); + } + + } // End if ( VFrTooLong ) + + + + + + + + + + + + // Normal end of frame => break frame decoding loop + + break; + } + + } // End while (1) frame scanning + + + VPtFrDecHead++; + + } + + // Fake header + + else { + + VFakeHdCnt++; + + if ( PrintLvl >= 1 ) { + msg (( MSG_OUT, "Fake header detected (Cnt = %.4d) : W7 = %X, W6 = %X, W5 = %X, W4 = %X, W3 = %X, W2 = %X, W1 = %X , W0 = %X", VFakeHdCnt, VFrHdW7, VFrHdW6, VFrHdW5, VFrHdW4, VFrHdW3, VFrHdW2, VFrHdW1, VFrHdW0 )); + } + + } + + + } // End frame processing + + + + + } // End for + + + // Update results + + PtDest->ParFrNbInSrcAcq = PtSrc->FrNb; + + + PtDest->ResAFrNb[MSisId] = VFrCnt; + PtDest->ResAFrNbWoTrailer[MSisId] = VFrWithoutTrailerCnt; + PtDest->ResAFrFakeHeadCnt[MSisId] = VFakeHdCnt; + PtDest->ResARegNb[MSisId] = VRegCntInAcq; + PtDest->ResAPixNb[MSisId] = VPixCntInAcq; + + + if ( (VFrCnt == 0) || (VFakeHdCnt > 0) ) { + err_error (( ERR_OUT, "Error : MSisId = %d, VFrCnt = %d, VFakeHdCnt = %d", MSisId, VFrCnt, VFakeHdCnt )); + VRetOk = -1; + } + + + if ( PrintLvl ) { + + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "%d frames found, %d fake headers found", VFrCnt, VFakeHdCnt )); + msg (( MSG_OUT, "ViW16 = %d", ViW16 )); + + msg (( MSG_OUT, "" )); + } + + + #ifndef CC_NOT_CPP_BUILDER + + if ( MeasExecTime ) { + VExecTimeUs = TIME__FMeasTimeUsEnd ( 0 /* Index */ ); + } + + else { + VExecTimeUs = 0; + } + + #else + + // You can implement here exec tiome measurement for compiler <> C++ Builder + + VExecTimeUs = 0; // No exec time measurement implementation => Returns 0 + + + #endif + + + + + return (VExecTimeUs * VRetOk ); + } + + + + + + + +/* DOC_FUNC_BEGIN */ +/** +=================================================================================== +* \fn : SInt32 MIS1__BT_FFrDecHeadPrint ( MIS1__TBtFrDecHead* Pt, UInt8 PrintMode ) +* : +* \brief : Pritns frame header \n +* : \n +* : +* \param : Pt - Pointer to header +* : +* \param : PrintMode - 0 => Print all, 1 => Print only region, fired pixels cnt +* : +* \return : Error code +* : 0 - OK +* : < 0 - Error +* : +* \warning : Globals : +* \warning : Remark : +* \warning : Level : +* : +* \warning : Items not filled now : +* todo : +* : +* bug : +* : +* \date : Date : 24/05/2021 +* \date : Rev : 25/05/2021 +* \date : Doc date : 24/05/2021 +* \author : Name : Gilles CLAUS +* \author : E-mail : gilles.claus@iphc.cnrs.fr +* \author : Labo : IPHC +* +=================================================================================== +*/ +/* DOC_FUNC_END */ + + +SInt32 MIS1__BT_FFrDecHeadPrint ( MIS1__TBtFrDecHead* Pt, UInt8 PrintMode ) { + + char VStrHead[GLB_CMT_SZ]; + char VStrTrail[GLB_CMT_SZ]; + + // Check param + + err_retnull ( Pt, (ERR_OUT,"Abort Pt == NULL") ); + + // Convert head, trail to sting + + MIS1__FFrHeader2Str ( &Pt->MSisFrHead, VStrHead, GLB_CMT_SZ, 1 /* Mode */ ); + MIS1__FFrTrailer2Str ( &Pt->MSisFrTrail, VStrTrail, GLB_CMT_SZ, 0 /* Mode */ ); + + // Print + + if ( PrintMode == 0 ) { + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "------------------------------------------------------" )); + msg (( MSG_OUT, "Fr header MSis = %d, FrId = %.4d ", Pt->MSisId, Pt->FrId )); + msg (( MSG_OUT, "------------------------------------------------------" )); + msg (( MSG_OUT, "MSis FrCnt = %.4d", Pt->FrCnt )); + msg (( MSG_OUT, "CheckSum = %.4d", Pt->CheckSum )); + msg (( MSG_OUT, "FiredPixNb = %.4d", Pt->FiredPixNb )); + msg (( MSG_OUT, "RegionNb = %.4d", Pt->RegionNb )); + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "Header = %s" , VStrHead )); + msg (( MSG_OUT, "Tailer = %s" , VStrTrail )); + msg (( MSG_OUT, "Errors = %d" , Pt->Errors )); + msg (( MSG_OUT, "NoTrailer = %d" , Pt->NoTrailer )); + msg (( MSG_OUT, "FirstDataW16Pos = %.4d", Pt->FirstDataW16Pos )); + msg (( MSG_OUT, "FrDataSzW16 = %.4d", Pt->FrDataSzW16 )); + msg (( MSG_OUT, "ATrigPosW16[0] = %.4d", Pt->ATrigPosW16[0] )); + msg (( MSG_OUT, "ATrigPosW16[1] = %.4d", Pt->ATrigPosW16[1] )); + msg (( MSG_OUT, "------------------------------------------------------" )); + msg (( MSG_OUT, "" )); + err_retok (( ERR_OUT, "Ok" )); + } // End if ( Mode == 0 ) + + if ( PrintMode == 1 ) { + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "------------------------------------------------------" )); + msg (( MSG_OUT, "MSis = %d, FrId = %.4d ", Pt->MSisId, Pt->FrId )); + msg (( MSG_OUT, "------------------------------------------------------" )); + msg (( MSG_OUT, "FrCnt = %.4d", Pt->FrCnt )); + msg (( MSG_OUT, "FiredPixNb = %.4d", Pt->FiredPixNb )); + msg (( MSG_OUT, "RegionNb = %.4d", Pt->RegionNb )); + + err_retok (( ERR_OUT, "Ok" )); + } + + err_retok (( ERR_OUT, "Ok" )); +} + + +/* DOC_FUNC_BEGIN */ +/** +=================================================================================== +* \fn : SInt32 MIS1__BT_FAcqDecPrintGen ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UInt8 PrintMode ) +* : +* \brief : Prints acq dec general fields, for ResAAFrHead => MIS1__BT_FFrDecHeadPrint (...) \n +* : \n +* : +* \param : Pt - Pointer to AcqDec +* : +* \param : MSisId - Id of MSis 1 to print, -1 => ALL +* : +* \param : PrintMode - 0 => Print all info, 1 => Print only region, fired pixels cnt +* +* \return : Error code +* : 0 - OK +* : < 0 - Error +* : +* \warning : Globals : +* \warning : Remark : +* \warning : Level : +* : +* \warning : Items not filled now : +* todo : +* : +* bug : +* : +* \date : Date : 25/05/2021 +* \date : Doc date : 25/05/2021 +* \author : Name : Gilles CLAUS +* \author : E-mail : gilles.claus@iphc.cnrs.fr +* \author : Labo : IPHC +* +=================================================================================== +*/ +/* DOC_FUNC_END */ + + +SInt32 MIS1__BT_FAcqDecPrintGen ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UInt8 PrintMode ) { + + SInt32 VRet; + SInt8 ViMsis; + + // Check param + + err_retnull ( Pt, (ERR_OUT,"Abort Pt == NULL") ); + + if ( MSisId >= MIS1__BT_MAX_REAL_MSIS_NB_ACQ ) { + err_retfail ( -1, (ERR_OUT,"Abort => MSisId = %d out of range 0..%d", MSisId, MIS1__BT_MAX_REAL_MSIS_NB_ACQ - 1) ); + } + + // Prints + + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "------------------------------------------------------" )); + msg (( MSG_OUT, "Acq dec" )); + msg (( MSG_OUT, "------------------------------------------------------" )); + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "ParFrNbInSrcAcq = %d", Pt->ParFrNbInSrcAcq )); + + if ( MSisId >= 0 ) { + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "MSisId = %d", MSisId )); + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "ResAFrNb = %.3d", Pt->ResAFrNb[MSisId] )); + msg (( MSG_OUT, "ResAFrFakeHeadCnt = %.3d", Pt->ResAFrFakeHeadCnt[MSisId] )); + msg (( MSG_OUT, "ResAFrNbWoTrailer = %.3d", Pt->ResAFrNbWoTrailer[MSisId] )); + msg (( MSG_OUT, "RegionNb = %.3d", Pt->ResARegNb[MSisId] )); + msg (( MSG_OUT, "FiredPixNb = %.3d", Pt->ResAPixNb[MSisId] )); + msg (( MSG_OUT, "" )); + err_retok (( ERR_OUT, "Ok" )); + } + + + if ( MSisId < 0 ) { + + for ( ViMsis = 0; ViMsis < MIS1__BT_MAX_REAL_MSIS_NB_ACQ; ViMsis++ ) { + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "MSisId = %d", MSisId )); + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "ResAFrNb = %.3d", Pt->ResAFrNb[ViMsis] )); + msg (( MSG_OUT, "ResAFrFakeHeadCnt = %.3d", Pt->ResAFrFakeHeadCnt[ViMsis] )); + msg (( MSG_OUT, "ResAFrNbWoTrailer = %.3d", Pt->ResAFrNbWoTrailer[ViMsis] )); + msg (( MSG_OUT, "RegionNb = %.3d", Pt->ResARegNb[ViMsis] )); + msg (( MSG_OUT, "FiredPixNb = %.3d", Pt->ResAPixNb[ViMsis] )); + msg (( MSG_OUT, "" )); + } // End for + + } // End if + + + err_retok (( ERR_OUT, "Ok" )); +} + + +/* DOC_FUNC_BEGIN */ +/** +=================================================================================== +* \fn : SInt32 MIS1__BT_FAcqDecPrintPix ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UInt32 FrId, UInt32 MaxPixToPrint, UInt8 PrintMode ) +* : +* \brief : Prints acq dec pixels \n +* : \n +* +* \param : Pt - Pointer to AcqDec +* +* \param : MSisId - Id of MSis 1 from which to print pixels +* +* \param : FrId - Id of the frame to print +* +* \param : MaxPixToPrint - Maximum number of pixels to print, to avoid "endless" printing loop ... +* +* \param : PrintMode - For future use +* +* \return : Error code +* : 0 - OK +* : < 0 - Error ( -1 sw error, -2 more than MaxPixToPrint => exits before end +* : +* \warning : Globals : +* \warning : Remark : +* \warning : Level : +* : +* \warning : Items not filled now : +* todo : +* : +* bug : +* : +* \date : Date : 25/05/2021 +* \date : Doc date : 25/05/2021 +* \author : Name : Gilles CLAUS +* \author : E-mail : gilles.claus@iphc.cnrs.fr +* \author : Labo : IPHC +* +=================================================================================== +*/ +/* DOC_FUNC_END */ + + +SInt32 MIS1__BT_FAcqDecPrintPix ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UInt32 FrId, UInt32 MaxPixToPrint, UInt8 PrintMode ) { + + SInt32 VRet; + SInt32 ViPix; + MIS1__TPixXY VPix; + + + msg (( MSG_OUT, "MIS1__BT_FAcqDecPrintPix (...)" )); + + // Check param + + err_retnull ( Pt, (ERR_OUT,"Abort Pt == NULL") ); + + err_retfail ( MSisId, (ERR_OUT,"Abort => MSisId = %d < 0", MSisId) ); + + if ( MSisId >= MIS1__BT_MAX_REAL_MSIS_NB_ACQ ) { + err_retfail ( -1, (ERR_OUT,"Abort => MSisId = %d out of range 0..%d", MSisId, MIS1__BT_MAX_REAL_MSIS_NB_ACQ - 1) ); + } + + if ( FrId >= Pt->ResAFrNb[MSisId] ) { + err_warning (( ERR_OUT, "FrId = %d it out of range, sets to last fr = %d", FrId, Pt->ResAFrNb[MSisId] - 1 )); + FrId = Pt->ResAFrNb[MSisId] - 1; + } + + + // Prints + + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "------------------------------------------------------" )); + msg (( MSG_OUT, "Pixels acq dec : AcqId = %.4d, MSisId = %d, FrId = %.4d", Pt->AcqId, MSisId, FrId )); + msg (( MSG_OUT, "------------------------------------------------------" )); + msg (( MSG_OUT, "" )); + + for ( ViPix = 0; ViPix < Pt->ResAAFrHead[MSisId][FrId].FiredPixNb; ViPix++ ) { + + if ( ViPix >= MaxPixToPrint ) { + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "Stop before end : Max pixels nb to print = %d reached", MaxPixToPrint )); + err_retfail ( -2, (ERR_OUT,"%s", MSG_OUT) ); + } + + VPix = Pt->ResAAAFrPix[MSisId][FrId][ViPix]; + + msg (( MSG_OUT, "Pixel[%.4d]: Y = %.4d - X = %.4d", ViPix, VPix.C.y, VPix.C.x )); + + } // End for + + + + err_retok (( ERR_OUT, "Ok" )); +} + + + +/* DOC_FUNC_BEGIN */ +/** +=================================================================================== +* \fn : SInt32 MIS1__BT_FAcqDecCheckFrCntOneMSis ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UInt8 PrintLvl, UInt32* PtErrNb ) +* : +* \brief : Check frame counter on one MSis = Check if it increases without missing codes 1 \n +* +* \param : Pt - Pointer to AcqDec +* +* \param : MSisId - Id of MSis 1 from which to print pixels +* +* \param : PritnLvl - Print level 0 = no, 1 = Final result, 2 = Each error, 3 = Print frame counter of all frames +* +* \param : PtErrNb - Pointer to an errors counter, set to NULL if not used +* +* +* \return : Error code +* : 1 - Frame counter error(s) +* : 0 - OK +* : < 0 - SW error +* : +* \warning : Globals : +* \warning : Remark : +* \warning : Level : +* : +* \warning : Items not filled now : +* todo : +* : +* bug : +* : +* \date : Date : 28/05/2021 +* \date : Doc date : 28/05/2021 +* \author : Name : Gilles CLAUS +* \author : E-mail : gilles.claus@iphc.cnrs.fr +* \author : Labo : IPHC +* +=================================================================================== +*/ +/* DOC_FUNC_END */ + + +SInt32 MIS1__BT_FAcqDecCheckFrCntOneMSis ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UInt8 PrintLvl, UInt32* PtErrNb ) { + + SInt32 VRet; + SInt32 VFrNb; + SInt32 ViFr; + UInt32 VFrCntBase; + UInt32 VFrCntExpected; + MIS1__TBtFrDecHead* VPtFrH; + SInt32 VErrCnt; + + + // Check param + + err_retnull ( Pt, (ERR_OUT,"Abort Pt == NULL") ); + + err_retfail ( MSisId, (ERR_OUT,"Abort => MSisId = %d < 0", MSisId) ); + + if ( MSisId >= MIS1__BT_MAX_REAL_MSIS_NB_ACQ ) { + err_retfail ( -1, (ERR_OUT,"Abort => MSisId = %d out of range 0..%d", MSisId, MIS1__BT_MAX_REAL_MSIS_NB_ACQ - 1) ); + } + + // Checking loop + + VPtFrH = &Pt->ResAAFrHead[MSisId][0]; // Get ptr on fr 0 + + VFrNb = Pt->ResAFrNb[MSisId]; + VFrCntBase = VPtFrH->FrCnt; + VFrCntExpected = VFrCntBase; + + VErrCnt = 0; + + for ( ViFr = 0; ViFr < VFrNb; ViFr++ ) { - if ( PrintLvl ) { - - msg (( MSG_OUT, "" )); - msg (( MSG_OUT, "%d frames found, %d fake headers found", VFrCnt, VFakeHdCnt )); - msg (( MSG_OUT, "ViW16 = %d", ViW16 )); + VPtFrH = &Pt->ResAAFrHead[MSisId][ViFr]; + + if ( VPtFrH->FrCnt != VFrCntExpected ) { + ++VErrCnt; + + if ( PrintLvl >= 2 ) { + msg (( MSG_OUT, "FrCnt error : AcqId[%.6d]MSisId[%d] FrId[%.6d] : FrCnt = %d <> Expected = %d", Pt->AcqId, MSisId, ViFr,VPtFrH->FrCnt, VFrCntExpected )); + } - msg (( MSG_OUT, "" )); - } - - - #ifndef CC_NOT_CPP_BUILDER - - if ( MeasExecTime ) { - VExecTimeUs = TIME__FMeasTimeUsEnd ( 0 /* Index */ ); } else { - VExecTimeUs = 0; + if ( PrintLvl == 3 ) { + msg (( MSG_OUT, "FrCnt : AcqId[%.6d]MSisId[%d] FrId[%.6d]: FrCnt = %d", Pt->AcqId, MSisId, ViFr, VPtFrH->FrCnt )); + } } - #else - - // You can implement here exec tiome measurement for compiler <> C++ Builder - - VExecTimeUs = 0; // No exec time measurement implementation => Returns 0 - - - #endif - - - + ++VFrCntExpected; - return (VExecTimeUs * VRetOk ); -} + } // End for ( ViFr ) + + // Prints + + if ( PrintLvl >= 1 ) { + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "------------------------------------------------------" )); + msg (( MSG_OUT, "Test FrCnt : AcqId[%.6d]MSisId[%d] on %d frames : %d errors", Pt->AcqId, MSisId, VFrNb, VErrCnt )); + msg (( MSG_OUT, "------------------------------------------------------" )); + msg (( MSG_OUT, "" )); + } + + + // Returns result + + if ( PtErrNb != NULL ) { + *PtErrNb = VErrCnt; + } + if ( VErrCnt > 0 ) { + return (1); + } + return (0); +} + /* DOC_FUNC_BEGIN */ /** =================================================================================== -* \fn : SInt32 MIS1__BT_FFrDecHeadPrint ( MIS1__TBtFrDecHead* Pt, UInt8 PrintMode ) -* : -* \brief : Pritns frame header \n -* : \n -* : -* \param : Pt - Pointer to header -* : -* \param : PrintMode - 0 => Print all, 1 => Print only region, fired pixels cnt +* \fn : SInt32 MIS1__BT_FAcqDecCheckFrCnt6MSis ( MIS1__TBtAcqDec* Pt, UInt8 PrintLvl, UInt32* PtErrNb ) * : +* \brief : Check frame counter on 6 x MSis = Check if it increases without missing codes 1 \n +* +* \param : Pt - Pointer to AcqDec +* +* \param : PritnLvl - Print level 0 = no, 1 = Final result, 2 = Each error, 3 = Print frame counter of all frames +* +* \param : PtErrNb - Pointer to an errors counter, set to NULL if not used +* +* * \return : Error code +* : 1 - Frame counter error(s) * : 0 - OK -* : < 0 - Error +* : < 0 - SW error * : * \warning : Globals : * \warning : Remark : @@ -21788,9 +26331,8 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, * : * bug : * : -* \date : Date : 24/05/2021 -* \date : Rev : 25/05/2021 -* \date : Doc date : 24/05/2021 +* \date : Date : 28/05/2021 +* \date : Doc date : 28/05/2021 * \author : Name : Gilles CLAUS * \author : E-mail : gilles.claus@iphc.cnrs.fr * \author : Labo : IPHC @@ -21800,77 +26342,140 @@ double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, /* DOC_FUNC_END */ -SInt32 MIS1__BT_FFrDecHeadPrint ( MIS1__TBtFrDecHead* Pt, UInt8 PrintMode ) { - - char VStrHead[GLB_CMT_SZ]; - char VStrTrail[GLB_CMT_SZ]; - +SInt32 MIS1__BT_FAcqDecCheckFrCnt6MSis ( MIS1__TBtAcqDec* Pt, UInt8 PrintLvl, UInt32* PtErrNb ) { + + SInt32 VRet; + SInt32 VFrNb; + SInt32 ViFr; + SInt8 ViMSis; + UInt32 VFrCntBase; + UInt32 VFrCntExpected; + MIS1__TBtFrDecHead* VAPtFrH[MIS1__BT_MAX_REAL_MSIS_NB_ACQ]; + SInt32 VErrCnt; + UInt8 VFrNbErr; + + // Check param - + err_retnull ( Pt, (ERR_OUT,"Abort Pt == NULL") ); - // Convert head, trail to sting - - MIS1__FFrHeader2Str ( &Pt->MSisFrHead, VStrHead, GLB_CMT_SZ, 1 /* Mode */ ); - MIS1__FFrTrailer2Str ( &Pt->MSisFrTrail, VStrTrail, GLB_CMT_SZ, 0 /* Mode */ ); - - // Print - - if ( PrintMode == 0 ) { - msg (( MSG_OUT, "" )); - msg (( MSG_OUT, "------------------------------------------------------" )); - msg (( MSG_OUT, "Fr header MSis = %d, FrId = %.4d ", Pt->MSisId, Pt->FrId )); - msg (( MSG_OUT, "------------------------------------------------------" )); - msg (( MSG_OUT, "MSis FrCnt = %.4d", Pt->FrCnt )); - msg (( MSG_OUT, "CheckSum = %.4d", Pt->CheckSum )); - msg (( MSG_OUT, "FiredPixNb = %.4d", Pt->FiredPixNb )); - msg (( MSG_OUT, "RegionNb = %.4d", Pt->RegionNb )); - msg (( MSG_OUT, "" )); - msg (( MSG_OUT, "Header = %s" , VStrHead )); - msg (( MSG_OUT, "Tailer = %s" , VStrTrail )); - msg (( MSG_OUT, "Errors = %d" , Pt->Errors )); - msg (( MSG_OUT, "FirstDataW16Pos = %.4d", Pt->FirstDataW16Pos )); - msg (( MSG_OUT, "FrDataSzW16 = %.4d", Pt->FrDataSzW16 )); - msg (( MSG_OUT, "ATrigPosW16[0] = %.4d", Pt->ATrigPosW16[0] )); - msg (( MSG_OUT, "ATrigPosW16[1] = %.4d", Pt->ATrigPosW16[1] )); - msg (( MSG_OUT, "------------------------------------------------------" )); + + // Get ptr on frames header + + for ( ViMSis = 0; ViMSis < MIS1__BT_MAX_REAL_MSIS_NB_ACQ; ViMSis++ ) { + VAPtFrH[ViMSis] = &Pt->ResAAFrHead[ViMSis][0]; // Get ptr on fr 0 + } + + + // Check if each MSis 1 contains the same frames nb + // Takes MSis no 0 as reference for frames nb + + VFrNb = Pt->ResAFrNb[0]; + + VFrNbErr = 0; + + for ( ViMSis = 1; ViMSis < MIS1__BT_MAX_REAL_MSIS_NB_ACQ; ViMSis++ ) { + + if ( Pt->ResAFrNb[ViMSis] != VFrNb ) { + ++VFrNbErr; + msg (( MSG_OUT, "FrNb difference AcqId[%.6d]MSisId[%d] = %d frames ", Pt->AcqId, ViMSis, Pt->ResAFrNb[ViMSis] )); + } + + } + + if ( VFrNbErr > 0 ) { msg (( MSG_OUT, "" )); - err_retok (( ERR_OUT, "Ok" )); - } // End if ( Mode == 0 ) - - if ( PrintMode == 1 ) { + msg (( MSG_OUT, "FrNb difference AcqId[%.6d]MSisId[0] = %d frames ", Pt->AcqId, Pt->ResAFrNb[0] )); + msg (( MSG_OUT, "Error : Some MSis 1 have different frames nb !" )); + return (1); + } + + + // Take MSis 0 FrCnt as reference + + + VFrCntBase = VAPtFrH[0]->FrCnt; + VFrCntExpected = VFrCntBase; + + // Checking loop + + VErrCnt = 0; + + for ( ViFr = 0; ViFr < VFrNb; ViFr++ ) { + + for ( ViMSis = 0; ViMSis < MIS1__BT_MAX_REAL_MSIS_NB_ACQ; ViMSis++ ) { + + VAPtFrH[ViMSis] = &Pt->ResAAFrHead[ViMSis][ViFr]; + + if ( VAPtFrH[ViMSis]->FrCnt != VFrCntExpected ) { + + ++VErrCnt; + + if ( PrintLvl >= 2 ) { + msg (( MSG_OUT, "FrCnt error : AcqId[%.6d]MSisId[%d] FrId[%.6d] : FrCnt = %d <> Expected = %d", Pt->AcqId, ViMSis, ViFr, VAPtFrH[ViMSis]->FrCnt, VFrCntExpected )); + } + + } + + } // End for ( ViMSis ) + + + if ( PrintLvl == 3 ) { + msg (( MSG_OUT, "FrCnt : AcqId[%.6d] FrId[%.6d] : 0 = %.6d, 1 = %.6d, 2 = %.6d, 3 = %.6d, 4 = %.6d, 5 = %.6d", Pt->AcqId, ViFr, VAPtFrH[0]->FrCnt, VAPtFrH[1]->FrCnt, VAPtFrH[2]->FrCnt, VAPtFrH[3]->FrCnt, VAPtFrH[4]->FrCnt, VAPtFrH[5]->FrCnt )); + } + + ++VFrCntExpected; + + } // End for ( ViFr ) + + // Prints + + if ( PrintLvl >= 1 ) { msg (( MSG_OUT, "" )); msg (( MSG_OUT, "------------------------------------------------------" )); - msg (( MSG_OUT, "MSis = %d, FrId = %.4d ", Pt->MSisId, Pt->FrId )); + msg (( MSG_OUT, "Test FrCnt : AcqId[%.6d] on %d frames : %d errors", Pt->AcqId, VFrNb, VErrCnt )); msg (( MSG_OUT, "------------------------------------------------------" )); - msg (( MSG_OUT, "FrCnt = %.4d", Pt->FrCnt )); - msg (( MSG_OUT, "FiredPixNb = %.4d", Pt->FiredPixNb )); - msg (( MSG_OUT, "RegionNb = %.4d", Pt->RegionNb )); - - err_retok (( ERR_OUT, "Ok" )); + msg (( MSG_OUT, "" )); } - - err_retok (( ERR_OUT, "Ok" )); + + + // Returns result + + if ( PtErrNb != NULL ) { + *PtErrNb = VErrCnt; + } + + if ( VErrCnt > 0 ) { + return (1); + } + + return (0); } /* DOC_FUNC_BEGIN */ /** =================================================================================== -* \fn : SInt32 MIS1__BT_FAcqDecPrintGen ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UInt8 PrintMode ) -* : -* \brief : Prints acq dec general fields, for ResAAFrHead => MIS1__BT_FFrDecHeadPrint (...) \n -* : \n -* : -* \param : Pt - Pointer to AcqDec +* \fn : SInt32 MIS1__BT_FAcqDecCheckFrCnt6MSisV1 ( MIS1__TBtAcqDec* Pt, SInt32 ForceFrNbToCheck, UInt8 PrintLvl, UInt32* PtErrNb ) * : -* \param : MSisId - Id of MSis 1 to print, -1 => ALL -* : -* \param : PrintMode - 0 => Print all info, 1 => Print only region, fired pixels cnt -* +* \brief : Check frame counter on 6 x MSis = Check if it increases without missing codes 1 \n +* +* \param : Pt - Pointer to AcqDec +* +* \param : ForceFrNbToCheck - Defines the fr nb to check on each MSis 1, sets to -1 to use Fr nb calculated from data stream \n +* each MSis 1 can have a different fr nb in this case, normal operating mode is -1, forcing fr nb \n +* with this param is only useful to check less frames than present in data stream +* +* \param : PrintLvl - Print level 0 = no, 1 = Final result, 2 = Each error, 3 = Print frame counter of all frames +* +* \param : PtErrNb - Pointer to an errors counter, set to NULL if not used +* +* * \return : Error code +* : 1 - All MSis 1 don't have same nb of frames => No frames counter checking done +* : 2 - Frame counter error(s) * : 0 - OK -* : < 0 - Error +* : < 0 - SW error * : * \warning : Globals : * \warning : Remark : @@ -21881,8 +26486,8 @@ SInt32 MIS1__BT_FFrDecHeadPrint ( MIS1__TBtFrDecHead* Pt, UInt8 PrintMode ) { * : * bug : * : -* \date : Date : 25/05/2021 -* \date : Doc date : 25/05/2021 +* \date : Date : 10/10/2021 +* \date : Doc date : 10/10/2021 * \author : Name : Gilles CLAUS * \author : E-mail : gilles.claus@iphc.cnrs.fr * \author : Labo : IPHC @@ -21892,84 +26497,147 @@ SInt32 MIS1__BT_FFrDecHeadPrint ( MIS1__TBtFrDecHead* Pt, UInt8 PrintMode ) { /* DOC_FUNC_END */ -SInt32 MIS1__BT_FAcqDecPrintGen ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UInt8 PrintMode ) { +SInt32 MIS1__BT_FAcqDecCheckFrCnt6MSisV1 ( MIS1__TBtAcqDec* Pt, SInt32 ForceFrNbToCheck, UInt8 PrintLvl, UInt32* PtErrNb ) { SInt32 VRet; - SInt8 ViMsis; + SInt32 VFrNb; + SInt32 ViFr; + SInt8 ViMSis; + UInt32 VFrCntBase; + UInt32 VFrCntExpected; + MIS1__TBtFrDecHead* VAPtFrH[MIS1__BT_MAX_REAL_MSIS_NB_ACQ]; + SInt32 VErrCnt; + UInt8 VFrNbErr; + // Check param err_retnull ( Pt, (ERR_OUT,"Abort Pt == NULL") ); - if ( MSisId >= MIS1__BT_MAX_REAL_MSIS_NB_ACQ ) { - err_retfail ( -1, (ERR_OUT,"Abort => MSisId = %d out of range 0..%d", MSisId, MIS1__BT_MAX_REAL_MSIS_NB_ACQ - 1) ); + + // Get ptr on frames header + + for ( ViMSis = 0; ViMSis < MIS1__BT_MAX_REAL_MSIS_NB_ACQ; ViMSis++ ) { + VAPtFrH[ViMSis] = &Pt->ResAAFrHead[ViMSis][0]; // Get ptr on fr 0 } - // Prints - msg (( MSG_OUT, "" )); - msg (( MSG_OUT, "------------------------------------------------------" )); - msg (( MSG_OUT, "Acq dec" )); - msg (( MSG_OUT, "------------------------------------------------------" )); - msg (( MSG_OUT, "" )); - msg (( MSG_OUT, "ParFrNbInSrcAcq = %d", Pt->ParFrNbInSrcAcq )); + VFrNb = Pt->ResAFrNb[0]; - if ( MSisId >= 0 ) { - msg (( MSG_OUT, "" )); - msg (( MSG_OUT, "MSisId = %d", MSisId )); - msg (( MSG_OUT, "" )); - msg (( MSG_OUT, "ResAFrNb = %.3d", Pt->ResAFrNb[MSisId] )); - msg (( MSG_OUT, "ResAFrFakeHeadCnt = %.3d", Pt->ResAFrFakeHeadCnt[MSisId] )); - msg (( MSG_OUT, "ResAFrNbWoTrailer = %.3d", Pt->ResAFrNbWoTrailer[MSisId] )); - msg (( MSG_OUT, "RegionNb = %.3d", Pt->ResARegNb[MSisId] )); - msg (( MSG_OUT, "FiredPixNb = %.3d", Pt->ResAPixNb[MSisId] )); + // Check if each MSis 1 contains the same frames nb + + + VFrNbErr = 0; + + for ( ViMSis = 1; ViMSis < MIS1__BT_MAX_REAL_MSIS_NB_ACQ; ViMSis++ ) { + + if ( Pt->ResAFrNb[ViMSis] != VFrNb ) { + ++VFrNbErr; + msg (( MSG_OUT, "FrNb difference AcqId[%.6d]MSisId[%d] = %d frames <> MSisId[0] = %d", Pt->AcqId, ViMSis, Pt->ResAFrNb[ViMSis], VFrNb )); + } + + } + + if ( VFrNbErr > 0 ) { msg (( MSG_OUT, "" )); - err_retok (( ERR_OUT, "Ok" )); + msg (( MSG_OUT, "FrNb difference AcqId[%.6d]MSisId[0] = %d frames ", Pt->AcqId, Pt->ResAFrNb[0] )); + msg (( MSG_OUT, "Some MSis 1 have different frames nb => Stop checking !" )); + return (1); } - if ( MSisId < 0 ) { + // Force fr nb for comparison + + if ( ForceFrNbToCheck > 0 ) { + VFrNb = ForceFrNbToCheck; + } + + + // Take MSis 0 FrCnt as reference + + + VFrCntBase = VAPtFrH[0]->FrCnt; + VFrCntExpected = VFrCntBase; + + // Checking loop + + VErrCnt = 0; + + for ( ViFr = 0; ViFr < VFrNb; ViFr++ ) { - for ( ViMsis = 0; ViMsis < MIS1__BT_MAX_REAL_MSIS_NB_ACQ; ViMsis++ ) { - msg (( MSG_OUT, "" )); - msg (( MSG_OUT, "MSisId = %d", MSisId )); - msg (( MSG_OUT, "" )); - msg (( MSG_OUT, "ResAFrNb = %.3d", Pt->ResAFrNb[ViMsis] )); - msg (( MSG_OUT, "ResAFrFakeHeadCnt = %.3d", Pt->ResAFrFakeHeadCnt[ViMsis] )); - msg (( MSG_OUT, "ResAFrNbWoTrailer = %.3d", Pt->ResAFrNbWoTrailer[ViMsis] )); - msg (( MSG_OUT, "RegionNb = %.3d", Pt->ResARegNb[ViMsis] )); - msg (( MSG_OUT, "FiredPixNb = %.3d", Pt->ResAPixNb[ViMsis] )); - msg (( MSG_OUT, "" )); - } // End for + for ( ViMSis = 0; ViMSis < MIS1__BT_MAX_REAL_MSIS_NB_ACQ; ViMSis++ ) { + + VAPtFrH[ViMSis] = &Pt->ResAAFrHead[ViMSis][ViFr]; + + if ( VAPtFrH[ViMSis]->FrCnt != VFrCntExpected ) { + + ++VErrCnt; + + if ( PrintLvl >= 2 ) { + msg (( MSG_OUT, "FrCnt error : AcqId[%.6d]MSisId[%d] FrId[%.6d] : FrCnt = %d <> Expected = %d", Pt->AcqId, ViMSis, ViFr, VAPtFrH[ViMSis]->FrCnt, VFrCntExpected )); + } + + } + + } // End for ( ViMSis ) - } // End if + + if ( PrintLvl == 3 ) { + msg (( MSG_OUT, "FrCnt : AcqId[%.6d] FrId[%.6d] : 0 = %.6d, 1 = %.6d, 2 = %.6d, 3 = %.6d, 4 = %.6d, 5 = %.6d", Pt->AcqId, ViFr, VAPtFrH[0]->FrCnt, VAPtFrH[1]->FrCnt, VAPtFrH[2]->FrCnt, VAPtFrH[3]->FrCnt, VAPtFrH[4]->FrCnt, VAPtFrH[5]->FrCnt )); + } + + ++VFrCntExpected; + + } // End for ( ViFr ) + // Prints - err_retok (( ERR_OUT, "Ok" )); + if ( PrintLvl >= 1 ) { + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "------------------------------------------------------" )); + msg (( MSG_OUT, "Test FrCnt : AcqId[%.6d] on %d frames : %d errors", Pt->AcqId, VFrNb, VErrCnt )); + msg (( MSG_OUT, "------------------------------------------------------" )); + msg (( MSG_OUT, "" )); + } + + + // Returns result + + if ( PtErrNb != NULL ) { + *PtErrNb = VErrCnt; + } + + if ( VErrCnt > 0 ) { + return (2); + } + + return (0); } + + + /* DOC_FUNC_BEGIN */ /** =================================================================================== -* \fn : SInt32 MIS1__BT_FAcqDecPrintPix ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UInt32 FrId, UInt32 MaxPixToPrint, UInt8 PrintMode ) +* \fn : SInt32 MIS1__BT_FAcqDecCheckTruncFr6MSis ( MIS1__TBtAcqDec* Pt, UInt8 PrintLvl, UInt32* PtFrNoTrail, UInt32* PtFrTruncNb ) * : -* \brief : Prints acq dec pixels \n -* : \n -* +* \brief : Check if frames have a trailer \n +* * \param : Pt - Pointer to AcqDec -* -* \param : MSisId - Id of MSis 1 from which to print pixels -* -* \param : FrId - Id of the frame to print * -* \param : MaxPixToPrint - Maximum number of pixels to print, to avoid "endless" printing loop ... +* \param : PritnLvl - Print level 0 = no, 1 = Final result, 2 = Each error, 3 = Print frame counter of all frames * -* \param : PrintMode - For future use +* \param : PtFrNoTrail - Pointer to return nb of frames without trailer due to header detected before trailer, set to NULL if not used +* +* \param : PtFrTruncNb - Pointer to return nb of frames truncated due to either MSis 1 problem or fr cut at end of Acq by DAQ * * \return : Error code +* : 2 - Frames nb error => After frames decoding 6 x MSis contain not the same number of frames +* : 1 - There are frames without trailer du to earlier header of frames truncated (with to trailer alos ;-) in the Acq, but all MSis 1 have the same fr nb * : 0 - OK -* : < 0 - Error ( -1 sw error, -2 more than MaxPixToPrint => exits before end +* : < 0 - SW error * : * \warning : Globals : * \warning : Remark : @@ -21980,8 +26648,9 @@ SInt32 MIS1__BT_FAcqDecPrintGen ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UInt8 Print * : * bug : * : -* \date : Date : 25/05/2021 -* \date : Doc date : 25/05/2021 +* \date : Date : 08/06/2021 +* \date : Rev : 09/06/2021 - UInt32* PtFrNoTrail, UInt32* PtFrTruncNb +* \date : Doc date : 08/06/2021 * \author : Name : Gilles CLAUS * \author : E-mail : gilles.claus@iphc.cnrs.fr * \author : Labo : IPHC @@ -21991,77 +26660,196 @@ SInt32 MIS1__BT_FAcqDecPrintGen ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UInt8 Print /* DOC_FUNC_END */ -SInt32 MIS1__BT_FAcqDecPrintPix ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UInt32 FrId, UInt32 MaxPixToPrint, UInt8 PrintMode ) { +SInt32 MIS1__BT_FAcqDecCheckTruncFr6MSis ( MIS1__TBtAcqDec* Pt, UInt8 PrintLvl, UInt32* PtFrNoTrail, UInt32* PtFrTruncNb ) { + + SInt32 VRetFunc; + SInt32 VFrNb; + SInt32 ViFr; + SInt8 ViMSis; + UInt32 VFrCntBase; + UInt32 VFrCntExpected; + MIS1__TBtFrDecHead* VAPtFrH[MIS1__BT_MAX_REAL_MSIS_NB_ACQ]; + SInt32 VFrWoTrailCnt; + SInt32 VFrTruncCnt; + SInt32 VFrWoTrailOrTruncNb; + UInt8 VFrNbErr; + + + // By default => OK + + VRetFunc = 0; - SInt32 VRet; - SInt32 ViPix; - MIS1__TPixXY VPix; // Check param err_retnull ( Pt, (ERR_OUT,"Abort Pt == NULL") ); - err_retfail ( MSisId, (ERR_OUT,"Abort => MSisId = %d < 0", MSisId) ); - if ( MSisId >= MIS1__BT_MAX_REAL_MSIS_NB_ACQ ) { - err_retfail ( -1, (ERR_OUT,"Abort => MSisId = %d out of range 0..%d", MSisId, MIS1__BT_MAX_REAL_MSIS_NB_ACQ - 1) ); + // Add a blank line before each new acq + + if ( PrintLvl >= 1 ) { + msg (( MSG_OUT, "" )); } - if ( FrId >= Pt->ResAFrNb[MSisId] ) { - FrId = Pt->ResAFrNb[MSisId] - 1; - err_warning (( ERR_OUT, "FrId = %d it out of range, sets to last fr = %d", FrId, Pt->ResAFrNb[MSisId] - 1 )); + + // Get ptr on frames header + + for ( ViMSis = 0; ViMSis < MIS1__BT_MAX_REAL_MSIS_NB_ACQ; ViMSis++ ) { + VAPtFrH[ViMSis] = &Pt->ResAAFrHead[ViMSis][0]; // Get ptr on fr 0 } - - // Prints - msg (( MSG_OUT, "" )); - msg (( MSG_OUT, "------------------------------------------------------" )); - msg (( MSG_OUT, "Pixels acq dec : AcqId = %.4d, MSisId = %d, FrId = %.4d", Pt->AcqId, MSisId, FrId )); - msg (( MSG_OUT, "------------------------------------------------------" )); - msg (( MSG_OUT, "" )); + // ----------------------------------------------------- + // HOW TO DETECT ACQ WITH RISK OF PROBLEM - BEGIN + // ----------------------------------------------------- - for ( ViPix = 0; ViPix < Pt->ResAAFrHead[MSisId][FrId].FiredPixNb; ViPix++ ) { + // Check if each MSis 1 contains the same frames nb + // Takes MSis no 0 as reference for frames nb + + VFrNb = Pt->ResAFrNb[0]; + + VFrNbErr = 0; + + for ( ViMSis = 1; ViMSis < MIS1__BT_MAX_REAL_MSIS_NB_ACQ; ViMSis++ ) { - if ( ViPix >= MaxPixToPrint ) { + if ( Pt->ResAFrNb[ViMSis] != VFrNb ) { + ++VFrNbErr; + + if ( PrintLvl >= 2 ) { + msg (( MSG_OUT, "FrNb difference AcqId[%.6d]MSisId[%d] = %d frames ", Pt->AcqId, ViMSis, Pt->ResAFrNb[ViMSis] )); + } + + } + + } + + if ( VFrNbErr > 0 ) { + + if ( PrintLvl >= 2 ) { + msg (( MSG_OUT, "Warning : FrNb difference AcqId[%.6d]MSisId[0] = %d frames ", Pt->AcqId, Pt->ResAFrNb[0] )); + msg (( MSG_OUT, "Warning : Some MSis 1 have different frames nb !" )); msg (( MSG_OUT, "" )); - msg (( MSG_OUT, "Stop before end : Max pixels nb to print = %d reached", MaxPixToPrint )); - err_retfail ( -2, (ERR_OUT,"%s", MSG_OUT) ); } + - VPix = Pt->ResAAAFrPix[MSisId][FrId][ViPix]; + VRetFunc = 2; // returns 2 because it is Fr nb error + } + + // ----------------------------------------------------- + // HOW TO DETECT ACQ WITH RISK OF PROBLEM - END + // ----------------------------------------------------- + + + + // Checking loop + + VFrWoTrailCnt = 0; + VFrTruncCnt = 0; + + for ( ViMSis = 0; ViMSis < MIS1__BT_MAX_REAL_MSIS_NB_ACQ; ViMSis++ ) { - msg (( MSG_OUT, "Pixel[%.4d]: Y = %.4d - X = %.4d", ViPix, VPix.C.y, VPix.C.x )); + // Scan frames - } // End for + VFrNb = Pt->ResAFrNb[ViMSis]; + + for ( ViFr = 0; ViFr < VFrNb; ViFr++ ) { + + + if ( VAPtFrH[ViMSis]->NoTrailer == 1 ) { + + VFrWoTrailCnt++; + + if ( PrintLvl >= 2 ) { + msg (( MSG_OUT, "No trailer AcqId = %.6d, MSisId = %d, FrId = %.4d", Pt->AcqId, ViMSis, ViFr )); + } + + } // End if ( VAPtFrH[ViMSis]->NoTrailer == 1 ) + + + if ( VAPtFrH[ViMSis]->Truncated == 1 ) { + + VFrTruncCnt++; + + if ( PrintLvl >= 2 ) { + msg (( MSG_OUT, "Fr truncated AcqId = %.6d, MSisId = %d, FrId = %.4d", Pt->AcqId, ViMSis, ViFr )); + } + + + } // End if ( VAPtFrH[ViMSis]->FrTruncated == 1 ) + + + + VAPtFrH[ViMSis]++; + + } // End for ( ViFr ) + + + } // End for ( ViMSis ) + + + VFrWoTrailOrTruncNb = VFrWoTrailCnt + VFrTruncCnt; + + + // Prints + + if ( (PrintLvl >= 1) && (VFrWoTrailOrTruncNb > 0) ) { + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "-------------------------------------------------------------------------------------" )); + msg (( MSG_OUT, "Test frames truncated, no trailer : AcqId[%.6d] on %d frames : %d fr wo trailer, %d fr truncated", Pt->AcqId, VFrNb, VFrWoTrailCnt, VFrTruncCnt )); + msg (( MSG_OUT, "-------------------------------------------------------------------------------------" )); + msg (( MSG_OUT, "" )); + } + + + // Returns result + + if ( PtFrNoTrail != NULL ) { + *PtFrNoTrail = VFrWoTrailCnt; + } + if ( PtFrTruncNb != NULL ) { + *PtFrTruncNb = VFrTruncCnt; + } - err_retok (( ERR_OUT, "Ok" )); + if ( VFrWoTrailOrTruncNb > 0 ) { + VRetFunc = 1; + } + + return ( VRetFunc ); } + + + /* DOC_FUNC_BEGIN */ /** =================================================================================== -* \fn : SInt32 MIS1__BT_FAcqDecCheckFrCntOneMSis ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UInt8 PrintLvl, UInt32* PtErrNb ) +* \fn : SInt32 MIS1__BT_FAcqDecCheckTruncFr6MSisV1 ( MIS1__TBtAcqDec* Pt, SInt32 ForceFrNbToCheck, UInt8 PrintLvl, UInt32* PtFrNoTrail, UInt32* PtFrTruncNb, UInt32* PtFrOvfFlagsNb ) * : -* \brief : Check frame counter on one MSis = Check if it increases without missing codes 1 \n +* \brief : Check if frames have a trailer \n * -* \param : Pt - Pointer to AcqDec +* \param : Pt - Pointer to AcqDec * -* \param : MSisId - Id of MSis 1 from which to print pixels +* \param : ForceFrNbToCheck - Defines the fr nb to check on each MSis 1, sets to -1 to use Fr nb calculated from data stream \n +* each MSis 1 can have a different fr nb in this case, normal operating mode is -1, forcing fr nb \n +* with this param is only useful to check less frames than present in data stream * -* \param : PritnLvl - Print level 0 = no, 1 = Final result, 2 = Each error, 3 = Print frame counter of all frames +* \param : PritnLvl - Print level 0 = no, 1 = Final result, 2 = Each error, 3 = Print frame counter of all frames * -* \param : PtErrNb - Pointer to an errors counter, set to NULL if not used +* \param : PtFrNoTrail - Pointer to return nb of frames without trailer due to header detected before trailer, set to NULL if not used +* +* \param : PtFrTruncNb - Pointer to return nb of frames truncated due to either MSis 1 problem or fr cut at end of Acq by DAQ * +* \param : PtFrOvfFlagsNb - Pointer to return nb of frames with one of more OVF flags set => It mans Mimosis 1 OVF * * \return : Error code -* : 1 - Frame counter error(s) +* : 2 - Frames nb error => After frames decoding 6 x MSis contain not the same number of frames +* : 1 - There are frames without trailer du to earlier header of frames truncated (with to trailer alos ;-) in the Acq, but all MSis 1 have the same fr nb * : 0 - OK -* : < 0 - SW error +* : < 0 - SW error * : * \warning : Globals : * \warning : Remark : @@ -22072,8 +26860,8 @@ SInt32 MIS1__BT_FAcqDecPrintPix ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UInt32 FrId * : * bug : * : -* \date : Date : 28/05/2021 -* \date : Doc date : 28/05/2021 +* \date : Date : 09/10/2021 +* \date : Doc date : 09/10/2021 * \author : Name : Gilles CLAUS * \author : E-mail : gilles.claus@iphc.cnrs.fr * \author : Labo : IPHC @@ -22083,103 +26871,284 @@ SInt32 MIS1__BT_FAcqDecPrintPix ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UInt32 FrId /* DOC_FUNC_END */ -SInt32 MIS1__BT_FAcqDecCheckFrCntOneMSis ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UInt8 PrintLvl, UInt32* PtErrNb ) { +SInt32 MIS1__BT_FAcqDecCheckTruncFr6MSisV1 ( MIS1__TBtAcqDec* Pt, SInt32 ForceFrNbToCheck, UInt8 PrintLvl, UInt32* PtFrNoTrail, UInt32* PtFrTruncNb, UInt32* PtFrOvfFlagsNb, SInt32* PtMaxFrSz, SInt8* PtMaxFrMSis ) { - SInt32 VRet; + SInt32 VRetFunc; SInt32 VFrNb; SInt32 ViFr; + SInt8 ViMSis; UInt32 VFrCntBase; UInt32 VFrCntExpected; - MIS1__TBtFrDecHead* VPtFrH; - SInt32 VErrCnt; - + MIS1__TBtFrDecHead* VAPtFrH[MIS1__BT_MAX_REAL_MSIS_NB_ACQ]; + SInt32 VFrWoTrailCnt; + SInt32 VFrTruncCnt; + SInt32 VFrWoTrailOrTruncNb; + SInt32 VFrOvfFlagsCnt; + UInt8 VFrNbErr; + + SInt32 VMaxFrSz; + SInt8 VMaxFrMSis; + + + // By default => OK + + VRetFunc = 0; + // Check param err_retnull ( Pt, (ERR_OUT,"Abort Pt == NULL") ); - err_retfail ( MSisId, (ERR_OUT,"Abort => MSisId = %d < 0", MSisId) ); - if ( MSisId >= MIS1__BT_MAX_REAL_MSIS_NB_ACQ ) { - err_retfail ( -1, (ERR_OUT,"Abort => MSisId = %d out of range 0..%d", MSisId, MIS1__BT_MAX_REAL_MSIS_NB_ACQ - 1) ); + // Add a blank line before each new acq + + if ( PrintLvl >= 1 ) { + msg (( MSG_OUT, "" )); } - - // Checking loop - VPtFrH = &Pt->ResAAFrHead[MSisId][0]; // Get ptr on fr 0 + // Get ptr on frames header - VFrNb = Pt->ResAFrNb[MSisId]; - VFrCntBase = VPtFrH->FrCnt; - VFrCntExpected = VFrCntBase; + for ( ViMSis = 0; ViMSis < MIS1__BT_MAX_REAL_MSIS_NB_ACQ; ViMSis++ ) { + VAPtFrH[ViMSis] = &Pt->ResAAFrHead[ViMSis][0]; // Get ptr on fr 0 + } - VErrCnt = 0; - for ( ViFr = 0; ViFr < VFrNb; ViFr++ ) { + // ----------------------------------------------------- + // HOW TO DETECT ACQ WITH RISK OF PROBLEM - BEGIN + // ----------------------------------------------------- + + // Check if each MSis 1 contains the same frames nb + // Takes MSis no 0 as reference for frames nb + + VFrNb = Pt->ResAFrNb[0]; + + VFrNbErr = 0; + + for ( ViMSis = 1; ViMSis < MIS1__BT_MAX_REAL_MSIS_NB_ACQ; ViMSis++ ) { - VPtFrH = &Pt->ResAAFrHead[MSisId][ViFr]; - - if ( VPtFrH->FrCnt != VFrCntExpected ) { - ++VErrCnt; + if ( Pt->ResAFrNb[ViMSis] != VFrNb ) { + ++VFrNbErr; if ( PrintLvl >= 2 ) { - msg (( MSG_OUT, "FrCnt error : AcqId[%.6d]MSisId[%d] FrId[%.6d] : FrCnt = %d <> Expected = %d", Pt->AcqId, MSisId, ViFr,VPtFrH->FrCnt, VFrCntExpected )); + msg (( MSG_OUT, "FrNb difference AcqId[%.6d]MSisId[%d] = %d frames ", Pt->AcqId, ViMSis, Pt->ResAFrNb[ViMSis] )); } } + } + + if ( VFrNbErr > 0 ) { + + if ( PrintLvl >= 2 ) { + msg (( MSG_OUT, "Warning : FrNb difference AcqId[%.6d]MSisId[0] = %d frames ", Pt->AcqId, Pt->ResAFrNb[0] )); + msg (( MSG_OUT, "Warning : Some MSis 1 have different frames nb !" )); + msg (( MSG_OUT, "" )); + } + + + VRetFunc = 2; // returns 2 because it is Fr nb error + } + + // ----------------------------------------------------- + // HOW TO DETECT ACQ WITH RISK OF PROBLEM - END + // ----------------------------------------------------- + + + + // Checking loop + + VFrWoTrailCnt = 0; + VFrTruncCnt = 0; + VFrOvfFlagsCnt = 0; + + + VMaxFrSz = 0; + VMaxFrMSis = -1; + + + for ( ViMSis = 0; ViMSis < MIS1__BT_MAX_REAL_MSIS_NB_ACQ; ViMSis++ ) { + + // Scan frames + + // Forces fr nb to check => same for each MSis 1 + + if ( ForceFrNbToCheck > 0 ) { + VFrNb = ForceFrNbToCheck; + } + + // Gets fr nb to check from data stream => each MSsi 1 can have a different fr nb + else { - if ( PrintLvl == 3 ) { - msg (( MSG_OUT, "FrCnt : AcqId[%.6d]MSisId[%d] FrId[%.6d]: FrCnt = %d", Pt->AcqId, MSisId, ViFr, VPtFrH->FrCnt )); - } + VFrNb = Pt->ResAFrNb[ViMSis]; } + + VFrNb = 999; - ++VFrCntExpected; + for ( ViFr = 0; ViFr < VFrNb; ViFr++ ) { + + if ( VAPtFrH[ViMSis]->NoTrailer == 1 ) { + + VFrWoTrailCnt++; + + if ( PrintLvl >= 2 ) { + msg (( MSG_OUT, "No trailer AcqId = %.6d, MSisId = %d, FrId = %.4d", Pt->AcqId, ViMSis, ViFr )); + } + + // 10/10/2021 debug : Print frames without trailer if FrNo in normal Acq range 0..FrNbInAcq - 1 + + if ( ViFr < Pt->ParFrNbInSrcAcq ) { + msg (( MSG_OUT, "======================> No trailer AcqId = %.6d AND FrId < %.4d, MSisId = %d, FrId = %.4d", Pt->AcqId, Pt->ParFrNbInSrcAcq, ViMSis, ViFr )); + } + + + } // End if ( VAPtFrH[ViMSis]->NoTrailer == 1 ) + + + if ( VAPtFrH[ViMSis]->Truncated == 1 ) { + + VFrTruncCnt++; + + if ( PrintLvl >= 2 ) { + msg (( MSG_OUT, "Fr truncated AcqId = %.6d, MSisId = %d, FrId = %.4d", Pt->AcqId, ViMSis, ViFr )); + } + + // 10/10/2021 debug : Print frames truncated if FrNo in normal Acq range 0..FrNbInAcq - 1 + + if ( ViFr < Pt->ParFrNbInSrcAcq ) { + msg (( MSG_OUT, "======================> Fr truncated AcqId = %.6d AND FrId < %.4d, MSisId = %d, FrId = %.4d - FrNb in Acq = %d", Pt->AcqId, Pt->ParFrNbInSrcAcq, ViMSis, ViFr, Pt->ParFrNbInSrcAcq )); + } - } // End for ( ViFr ) + // 10/10/2021 debug : Print frames truncated if "Acq is not at risk" = all MSis 1 have same nb of frames + + if ( VFrNbErr == 0 ) { + msg (( MSG_OUT, "======================> Fr truncated AcqId = %.6d AND ALL MSis same fr nb, MSisId = %d, FrId = %.4d", Pt->AcqId, ViMSis, ViFr )); + } + + + } // End if ( VAPtFrH[ViMSis]->FrTruncated == 1 ) + + + + // 09/10/2021 + // Emul OVF to check code + // + // if ( (Pt->AcqId % 10 == 0) && (ViMSis == 0) && (ViFr == 0) ) { + // VAPtFrH[ViMSis]->MSisFrTrail.F.Flags = 1; + // } + + + // 09/10/2021 + + if ( VAPtFrH[ViMSis]->MSisFrTrail.F.Flags != 0 ) { + + VFrOvfFlagsCnt++; + + if ( PrintLvl >= 2 ) { + msg (( MSG_OUT, "Fr with OVF flag(s) set AcqId = %.6d, MSisId = %d, FrId = %.4d, Flags = %X [H]", Pt->AcqId, ViMSis, ViFr, VAPtFrH[ViMSis]->MSisFrTrail.F.Flags )); + } + + } // End if VAPtFrH[ViMSis]->MSisFrTrail.F.Flags != 0 ) + + + // Chck fr size + + + // msg (( MSG_OUT, "Fr size = %.4d : AcqId = %.6d, MSisId = %d, FrId = %.4d", VAPtFrH[ViMSis]->FrDataSzW16, Pt->AcqId, ViMSis, ViFr )); // 10/10/2021 + + if ( VAPtFrH[ViMSis]->FrDataSzW16 > VMaxFrSz) { + VMaxFrSz = VAPtFrH[ViMSis]->FrDataSzW16; + VMaxFrMSis = ViMSis; + } + + + VAPtFrH[ViMSis]++; + + } // End for ( ViFr ) + + + } // End for ( ViMSis ) + + + VFrWoTrailOrTruncNb = VFrWoTrailCnt + VFrTruncCnt; + // Prints - if ( PrintLvl >= 1 ) { + if ( (PrintLvl >= 1) && (VFrWoTrailOrTruncNb > 0) ) { msg (( MSG_OUT, "" )); - msg (( MSG_OUT, "------------------------------------------------------" )); - msg (( MSG_OUT, "Test FrCnt : AcqId[%.6d]MSisId[%d] on %d frames : %d errors", Pt->AcqId, MSisId, VFrNb, VErrCnt )); - msg (( MSG_OUT, "------------------------------------------------------" )); + msg (( MSG_OUT, "-------------------------------------------------------------------------------------" )); + msg (( MSG_OUT, "Test frames truncated, no trailer : AcqId[%.6d] on %d frames : %d fr wo trailer, %d fr truncated", Pt->AcqId, VFrNb, VFrWoTrailCnt, VFrTruncCnt )); + msg (( MSG_OUT, "-------------------------------------------------------------------------------------" )); msg (( MSG_OUT, "" )); } - + if ( PrintLvl >= 2 ) { + msg (( MSG_OUT, "" )); + msg (( MSG_OUT, "-------------------------------------------------------------------------------------" )); + msg (( MSG_OUT, "Test frames truncated, max fr sz : AcqId[%.6d] on %d frames ", Pt->AcqId, VFrNb )); + msg (( MSG_OUT, "Max frame size = %d W16 on MSis No %d", VMaxFrSz, VMaxFrMSis )); + msg (( MSG_OUT, "-------------------------------------------------------------------------------------" )); + msg (( MSG_OUT, "" )); + } + + // Returns result - if ( PtErrNb != NULL ) { - *PtErrNb = VErrCnt; + if ( PtFrNoTrail != NULL ) { + *PtFrNoTrail = VFrWoTrailCnt; } - if ( VErrCnt > 0 ) { - return (1); + if ( PtFrTruncNb != NULL ) { + *PtFrTruncNb = VFrTruncCnt; } - return (0); + + if ( PtFrOvfFlagsNb != NULL ) { + *PtFrOvfFlagsNb = VFrOvfFlagsCnt; + } + + + if ( VFrWoTrailOrTruncNb > 0 ) { + VRetFunc = 1; + } + + + if ( PtMaxFrSz != NULL ) { + *PtMaxFrSz = VMaxFrSz; + } + + + if ( PtMaxFrMSis!= NULL ) { + *PtMaxFrMSis = VMaxFrMSis; + } + + + return ( VRetFunc ); } + + /* DOC_FUNC_BEGIN */ /** =================================================================================== -* \fn : SInt32 MIS1__BT_FAcqDecCheckFrCnt6MSis ( MIS1__TBtAcqDec* Pt, UInt8 PrintLvl, UInt32* PtErrNb ) +* \fn : SInt32 MIS1__BT_FAcqDecCheckTruncFr6MSis_v090621 ( MIS1__TBtAcqDec* Pt, UInt8 PrintLvl, UInt32* PtFrNoTrail, UInt32* PtFrTruncNb ) * : -* \brief : Check frame counter on 6 x MSis = Check if it increases without missing codes 1 \n +* \brief : Check if frames have a trailer \n * * \param : Pt - Pointer to AcqDec * * \param : PritnLvl - Print level 0 = no, 1 = Final result, 2 = Each error, 3 = Print frame counter of all frames * -* \param : PtErrNb - Pointer to an errors counter, set to NULL if not used +* \param : PtFrNoTrail - Pointer to return nb of frames without trailer due to header detected before trailer, set to NULL if not used * +* \param : PtFrTruncNb - Pointer to return nb of frames truncated due to either MSis 1 problem or fr cut at end of Acq by DAQ * * \return : Error code -* : 1 - Frame counter error(s) +* : 2 - Frames nb error => After frames decoding 6 x MSis contain not the same number of frames +* : 1 - There are frames without trailer du to earlier header of frames truncated (with to trailer alos ;-) in the Acq, but all MSis 1 have the same fr nb * : 0 - OK * : < 0 - SW error * : @@ -22192,8 +27161,9 @@ SInt32 MIS1__BT_FAcqDecCheckFrCntOneMSis ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UI * : * bug : * : -* \date : Date : 28/05/2021 -* \date : Doc date : 28/05/2021 +* \date : Date : 08/06/2021 +* \date : Rev : 09/06/2021 - UInt32* PtFrNoTrail, UInt32* PtFrTruncNb +* \date : Doc date : 08/06/2021 * \author : Name : Gilles CLAUS * \author : E-mail : gilles.claus@iphc.cnrs.fr * \author : Labo : IPHC @@ -22203,23 +27173,25 @@ SInt32 MIS1__BT_FAcqDecCheckFrCntOneMSis ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UI /* DOC_FUNC_END */ -SInt32 MIS1__BT_FAcqDecCheckFrCnt6MSis ( MIS1__TBtAcqDec* Pt, UInt8 PrintLvl, UInt32* PtErrNb ) { +SInt32 MIS1__BT_FAcqDecCheckTruncFr6MSis_v090621 ( MIS1__TBtAcqDec* Pt, UInt8 PrintLvl, UInt32* PtFrNoTrail, UInt32* PtFrTruncNb ) { SInt32 VRet; SInt32 VFrNb; SInt32 ViFr; - SInt8 ViMSis; + SInt8 ViMSis; UInt32 VFrCntBase; UInt32 VFrCntExpected; MIS1__TBtFrDecHead* VAPtFrH[MIS1__BT_MAX_REAL_MSIS_NB_ACQ]; - SInt32 VErrCnt; - UInt8 VFrNbErr; + SInt32 VFrWoTrailCnt; + SInt32 VFrTruncCnt; + SInt32 VFrWoTrailOrTruncNb; + UInt8 VFrNbErr; // Check param err_retnull ( Pt, (ERR_OUT,"Abort Pt == NULL") ); - + // Get ptr on frames header @@ -22227,12 +27199,16 @@ SInt32 MIS1__BT_FAcqDecCheckFrCnt6MSis ( MIS1__TBtAcqDec* Pt, UInt8 PrintLvl, UI VAPtFrH[ViMSis] = &Pt->ResAAFrHead[ViMSis][0]; // Get ptr on fr 0 } + + // ----------------------------------------------------- + // HOW TO DETECT ACQ WITH RISK OF PROBLEM - BEGIN + // ----------------------------------------------------- // Check if each MSis 1 contains the same frames nb // Takes MSis no 0 as reference for frames nb VFrNb = Pt->ResAFrNb[0]; - + VFrNbErr = 0; for ( ViMSis = 1; ViMSis < MIS1__BT_MAX_REAL_MSIS_NB_ACQ; ViMSis++ ) { @@ -22241,71 +27217,101 @@ SInt32 MIS1__BT_FAcqDecCheckFrCnt6MSis ( MIS1__TBtAcqDec* Pt, UInt8 PrintLvl, UI ++VFrNbErr; msg (( MSG_OUT, "FrNb difference AcqId[%.6d]MSisId[%d] = %d frames ", Pt->AcqId, ViMSis, Pt->ResAFrNb[ViMSis] )); } - + } if ( VFrNbErr > 0 ) { - msg (( MSG_OUT, "FrNb difference AcqId[%.6d]MSisId[0] = %d frames ", Pt->AcqId, Pt->ResAFrNb[0] )); + msg (( MSG_OUT, "Error : Frames trailer check aborted due to frames nb <> between MSis 1 !" )); + msg (( MSG_OUT, "Error : FrNb difference AcqId[%.6d]MSisId[0] = %d frames ", Pt->AcqId, Pt->ResAFrNb[0] )); msg (( MSG_OUT, "Error : Some MSis 1 have different frames nb !" )); - return (1); - } - - - // Take MSis 0 FrCnt as reference + msg (( MSG_OUT, "" )); + + // Returns result + + if ( PtFrNoTrail != NULL ) { + *PtFrNoTrail = 0; // Returns 0 because fr nb <>, and test on trailer not done + } + + if ( PtFrTruncNb != NULL ) { + *PtFrTruncNb = 0; // Returns 0 because fr nb <>, and test on fr truncated not done + } + + return (2); // returns 2 because it is Fr nb error + } - VFrCntBase = VAPtFrH[0]->FrCnt; - VFrCntExpected = VFrCntBase; + // ----------------------------------------------------- + // HOW TO DETECT ACQ WITH RISK OF PROBLEM - END + // ----------------------------------------------------- + + // Checking loop - VErrCnt = 0; + VFrWoTrailCnt = 0; + VFrTruncCnt = 0; - for ( ViFr = 0; ViFr < VFrNb; ViFr++ ) { + for ( ViMSis = 0; ViMSis < MIS1__BT_MAX_REAL_MSIS_NB_ACQ; ViMSis++ ) { + + // Scan frames - for ( ViMSis = 0; ViMSis < MIS1__BT_MAX_REAL_MSIS_NB_ACQ; ViMSis++ ) { - - VAPtFrH[ViMSis] = &Pt->ResAAFrHead[ViMSis][ViFr]; + for ( ViFr = 0; ViFr < VFrNb; ViFr++ ) { - if ( VAPtFrH[ViMSis]->FrCnt != VFrCntExpected ) { + if ( VAPtFrH[ViMSis]->NoTrailer == 1 ) { - ++VErrCnt; + VFrWoTrailCnt++; + + if ( PrintLvl >= 2 ) { + msg (( MSG_OUT, "$$ No trailer AcqId = %.6d, MSisId = %d, FrId = %.4d", Pt->AcqId, ViMSis, ViFr )); + } + + } // End if ( VAPtFrH[ViMSis]->NoTrailer == 1 ) + + if ( VAPtFrH[ViMSis]->Truncated == 1 ) { + + VFrTruncCnt++; + if ( PrintLvl >= 2 ) { - msg (( MSG_OUT, "FrCnt error : AcqId[%.6d]MSisId[%d] FrId[%.6d] : FrCnt = %d <> Expected = %d", Pt->AcqId, ViMSis, ViFr, VAPtFrH[ViMSis]->FrCnt, VFrCntExpected )); + msg (( MSG_OUT, "$ Fr truncated AcqId = %.6d, MSisId = %d, FrId = %.4d", Pt->AcqId, ViMSis, ViFr )); } + + + } // End if ( VAPtFrH[ViMSis]->FrTruncated == 1 ) - } - } // End for ( ViMSis ) + } // End for ( ViFr ) - if ( PrintLvl == 3 ) { - msg (( MSG_OUT, "FrCnt : AcqId[%.6d] FrId[%.6d] : 0 = %.6d, 1 = %.6d, 2 = %.6d, 3 = %.6d, 4 = %.6d, 5 = %.6d", Pt->AcqId, ViFr, VAPtFrH[0]->FrCnt, VAPtFrH[1]->FrCnt, VAPtFrH[2]->FrCnt, VAPtFrH[3]->FrCnt, VAPtFrH[4]->FrCnt, VAPtFrH[5]->FrCnt )); - } - - ++VFrCntExpected; - - } // End for ( ViFr ) + } // End for ( ViMSis ) + + + VFrWoTrailOrTruncNb = VFrWoTrailCnt + VFrTruncCnt; + // Prints - if ( PrintLvl >= 1 ) { + if ( (PrintLvl >= 1) && (VFrWoTrailOrTruncNb > 0) ) { msg (( MSG_OUT, "" )); - msg (( MSG_OUT, "------------------------------------------------------" )); - msg (( MSG_OUT, "Test FrCnt : AcqId[%.6d] on %d frames : %d errors", Pt->AcqId, VFrNb, VErrCnt )); - msg (( MSG_OUT, "------------------------------------------------------" )); + msg (( MSG_OUT, "-------------------------------------------------------------------------------------" )); + msg (( MSG_OUT, "Test frames truncated, no trailer : AcqId[%.6d] on %d frames : %d fr wo trailer, %d fr truncated", Pt->AcqId, VFrNb, VFrWoTrailCnt, VFrTruncCnt )); + msg (( MSG_OUT, "-------------------------------------------------------------------------------------" )); msg (( MSG_OUT, "" )); } // Returns result - if ( PtErrNb != NULL ) { - *PtErrNb = VErrCnt; + if ( PtFrNoTrail != NULL ) { + *PtFrNoTrail = VFrWoTrailCnt; } - if ( VErrCnt > 0 ) { + if ( PtFrTruncNb != NULL ) { + *PtFrTruncNb = VFrTruncCnt; + } + + + if ( VFrWoTrailOrTruncNb > 0 ) { return (1); } @@ -22315,7 +27321,6 @@ SInt32 MIS1__BT_FAcqDecCheckFrCnt6MSis ( MIS1__TBtAcqDec* Pt, UInt8 PrintLvl, UI - /* DOC_FUNC_BEGIN */ /** =================================================================================== diff --git a/code/include/mimo_daq_lib/msis1_data.def b/code/include/mimo_daq_lib/msis1_data.def index ed40e9f..6b1b15c 100644 --- a/code/include/mimo_daq_lib/msis1_data.def +++ b/code/include/mimo_daq_lib/msis1_data.def @@ -1,799 +1,805 @@ - -/** -* ---------------------------------------------------------------------------------- -* \file X:\lib\com\maps\msis1\data\msis1_data.def -* \brief Goal : Macros definition of Mimosis 1 lib -* \brief -* \brief -* \version : 1.0 -* \date Prj date : 03/05/2019 -* \date File date : 03/05/2019 -* \date Doc date : 03/05/2019 -* \author : Gilles CLAUS -* \author : gilles.claus@iphc.cnrs.fr -* \author : CNRS - IN2P3 - IPHC 23 Rue du Loess 67037 STYRASBOURG -* -* Remark : None -* -* ---------------------------------------------------------------------------------- -* License : GNU General Public License -* -* ---------------------------------------------------------------------------------- -*/ - - -#ifndef MIMOSIS1_DEF -#define MIMOSIS1_DEF - - - - -// =================================================================================== -// * Simple / short macros (comment not processed by DOXYGEN) -// * -// =================================================================================== - -// =================================================================================== -// * \brief general data stream macros -// * -// =================================================================================== - - -/** -=================================================================================== -* \def MIS1__CC_DATA_FORMAT_SINCE_V211 -* -* \brief Must be define for DAQ SW version >= 211, undefined otherwise \n -* \brief It must be specified in DAQ and run file reader applications \n -* \brief \n -* \brief It is a bit complicated to explain ... \n -* \brief \n -* \brief DAQ versions <= 210 use DAQ MSis 1 (X:\lib\win\daq_mimosis1) for buffers \n -* \brief handling and data saving on disk. But this lib is designed for buffers size \n -* \brief specified in W64, if it is not an integer W64 number, data saving to disk \n -* \brief will be corrupted. It is not a problem for RAW data which are N x W128, but \n -* \brief for processed data, like DEC format. This problem has beend etected during \n -* \brief DAQ app dev, in order to test DAQ, the record MIS1__TPixXY, MIS1__TDecFrPixHeader \n -* \brief sizes have been adjusted to be an integer W64 number (fields size, padding) \n * \brief -* \brief this configuration is used if MIS1__CC_DATA_FORMAT_SINCE_V211 is DISABLED -* \brief -* \brief DAQ versions >= 211 solve this problem by using a new library buffers files \n * \brief -* \brief (X:\lib\com\buffers_files) whihc handles buffers, files as W8, this configuration \n -* \brief is used if MIS1__CC_DATA_FORMAT_SINCE_V211 is ENABLED -* \brief -* \brief -* -* G.CLAUS 15/06/2020 -* -=================================================================================== -*/ - - -// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -// WARNING : This CC directive must be defined in applications app.def file, NOT HERE -// It is here - in commnet - to remeber you that it MUST be defined or NOT in applications -// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -// -// #define MIS1__CC_DATA_FORMAT_SINCE_V211 /*! Must be set or not in function of DAQ app version */ -// -// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - - -/** -=================================================================================== -* \def MIS1_DEF_ERR_LOG_FILE -* -* \brief Default errors log file name -* -* G.CLAUS 01/07/2020 -* -=================================================================================== -*/ - -#define MIS1_DEF_ERR_LOG_FILE "c:/tmp/msis1_data_err.txt" - - -/** -=================================================================================== -* \def MIS1_DEF_LOG_LVL_ERRORS -* -* \brief Default errors log level -* -* G.CLAUS 01/07/2020 -* -=================================================================================== -*/ - -#define MIS1_DEF_LOG_LVL_ERRORS ERR_LOG_LVL_WARNINGS_ERRORS - - -/** -=================================================================================== -* \def MIS1__MAX_WARN_ERR_REC -* -* \brief Mimosis 1 maximum error / warnign record nb -* -* G.CLAUS 24/02/2021 -* -=================================================================================== -*/ - - -#define MIS1__MAX_WARN_ERR_REC 1000 - - -/** -=================================================================================== -* \def MIS1__MAX_OUT_NB -* -* \brief Mimosis 1 maximum outputs number = 8 -* -* G.CLAUS 14/11/2019 -* -=================================================================================== -*/ - -#define MIS1__MAX_OUT_NB 8 /*! Mimosis 1 maximum outputs number */ - - -/** -=================================================================================== -* \def MIS1__MAT_NB -* -* \brief Mimosis 1 matices nb = 8 -* -* G.CLAUS 14/05/021 -* -=================================================================================== -*/ - -#define MIS1__MAT_NB 4 /*! Mimosis 1 matices nb = 8 */ - - - -/** -=================================================================================== -* \def MIS1__COL_NB -* -* \brief Mimosis 1 columns number = 1024 -* -* G.CLAUS 14/05/2019 -* -=================================================================================== -*/ - -#define MIS1__COL_NB 1024 /*! Mimosis 1 columns number */ - - -//// - -/** -=================================================================================== -* \def MIS1__COL_PER_PE -* -* \brief Mimosis 1 columns number per priority encoder = 2 -* -* G.CLAUS 29/05/2019 -* -=================================================================================== -*/ - -#define MIS1__COL_PER_PE 2 /*! Mimosis 1 columns number per priority encoder */ - - -/** -=================================================================================== -* \def MIS1__STR_COL_LIST_MAX_SZ -* -* \brief Maximum length of string used to print columns list or pixels stateof one line -* -* G.CLAUS 23/05/2019 -* -=================================================================================== -*/ - -#define MIS1__STR_COL_LIST_MAX_SZ (MIS1__COL_NB * 15) /*! Maw lenght of columns list string */ - - -/** -=================================================================================== -* \def MIS1__ROW_NB -* -* \brief Mimosis 1 rows number = 504 -* -* G.CLAUS 14/05/2019 -* -=================================================================================== -*/ - -#define MIS1__ROW_NB 504 /*! Mimosis 1 rows number */ - - -/** -=================================================================================== -* \def MIS1__ROW_NB -* -* \brief Mimosis 1 pixels number = 1024 * 504 = 516 096 -* -* G.CLAUS 22/05/2019 -* -=================================================================================== -*/ - -#define MIS1__PIX_NB (MIS1__COL_NB * MIS1__ROW_NB) /*! Mimosis 1 pixels number */ - - -/** -=================================================================================== -* \def MIS1__PE_NB -* -* \brief Mimosis 1 PE total number for the whole matrix -* -* G.CLAUS 22/05/2019 -* -=================================================================================== -*/ - -#define MIS1__PE_NB (MIS1__COL_NB / 2) /*! Mimosis 1 PE total number */ - - -/** -=================================================================================== -* \def MIS1__PE_PER_REG -* -* \brief Mimosis 1 PE number per region = 8 -* -* G.CLAUS 14/05/2019 -* -=================================================================================== -*/ - -#define MIS1__PE_PER_REG 8 /*! Mimosis 1 PE number per region */ - - -/** -=================================================================================== -* \def MIS1__PE_PER_SREG -* -* \brief Mimosis 1 PE number per super region = 32 -* -* G.CLAUS 22/05/2019 -* -=================================================================================== -*/ - -#define MIS1__PE_PER_SREG (MIS1__PE_PER_REG * 4) /*! Mimosis 1 PE number per super region */ - -/** -=================================================================================== -* \def MIS1__COL_PER_REG -* -* \brief Mimosis 1 columns number per region = 16 -* -* G.CLAUS 29/05/2019 -* -=================================================================================== -*/ - -#define MIS1__COL_PER_REG 16 /*! Mimosis 1 columns number per region */ - - -/** -=================================================================================== -* \def MIS1__COL_PER_SREG -* -* \brief Mimosis 1 columns number per super region = 64 -* -* G.CLAUS 29/05/2019 -* -=================================================================================== -*/ - -#define MIS1__COL_PER_SREG 64 /*! Mimosis 1 columns number per region */ - - -/** -=================================================================================== -* \def MIS1__DS_MAX_REGION_NB -* -* \brief Maximum region nb in data stream, known value on 07/05/2019 is 64 -* -* It is used to define the size of the pointer array on the regions + data blocs -* contained in one frame. One frame mean data stream between header and trailer -* it can be longer than Mimosis frame readout time = 5 us. -* -* G.CLAUS 07/05/2019 -* -=================================================================================== -*/ - -#define MIS1__DS_MAX_REGION_NB 64 /*! Maximum region nb in data stream / */ - -/** -=================================================================================== -* \def MIS1__DS_FR_HEADER_SZ_W16 -* -* \brief Frame header size in W16 fields units, known value on 07/05/2019 is 8 -* -* It idefines the array field size of the frame header union -* -* G.CLAUS 07/05/2019 -* -=================================================================================== -*/ - -#define MIS1__DS_FR_HEADER_SZ_W16 8 - -/** -=================================================================================== -* \def MIS1__DS_REG_HEADER_SZ_W16 -* -* \brief Region header size in W16 fields units, known value on 07/05/2019 is 2 -* -* It idefines the array field size of the region header union -* -* G.CLAUS 07/05/2019 -* -=================================================================================== -*/ - -// #define MIS1__DS_REG_HEADER_SZ_W16 2 // Seems to be not needed, regsion header sz = 1 W16 - - - -/** -=================================================================================== -* \def MIS1__DS_TOT_FRAME_SZ_W128 -* -* \brief Maximum size in W128 of one frame (header, data, iddle, checksum, trailer) -* -* G.CLAUS 02/07/2019 -* -=================================================================================== -*/ - -// #define MIS1__DS_TOT_FRAME_SZ_W128 (100 * 8) - -// 02/06/2020 - Increase max frame length, following discussion with FM -// -// Max 5 us frame size = 100 W128 -// Data frame can run over 8 x 5 us frames => x 8 -// x 8 has to be checked with FM later - -// 17/07/2020 -// Set again max frame length to 100 W128 and not 800 W128 because -// - DAQ FW doesn't work if block size read by sw < 256 W64, therefore in case of small -// frame length (few data), fr nb / acq must be increased, and this is not possible max fr size -// = 800 W128 because buffers allocation will fail. -// - Max frame size = 100 W128 allows for ~ 800 pixels / frame, which in enough for tests - -#define MIS1__DS_TOT_FRAME_SZ_W128 100 - - -/** -=================================================================================== -* \def MIS1__DS_TOT_FRAME_SZ_W64 -* -* \brief Maximum size in W64 of one frame (header, data, iddle, checksum, trailer) -* -* G.CLAUS 06/12/2019 -* -=================================================================================== -*/ - -#define MIS1__DS_TOT_FRAME_SZ_W64 MIS1__DS_TOT_FRAME_SZ_W128 * 2 - - -/** -=================================================================================== -* \def MIS1__DS_TOT_FRAME_SZ_W32 -* -* \brief Maximum size in W32 of one frame (header, data, iddle, checksum, trailer) -* -* G.CLAUS 06/12/2019 -* -=================================================================================== -*/ - -#define MIS1__DS_TOT_FRAME_SZ_W32 MIS1__DS_TOT_FRAME_SZ_W128 * 4 - - -/** -=================================================================================== -* \def MIS1__DS_TOT_FRAME_SZ_W16 -* -* \brief Maximum size in W16 of one frame (header, data, iddle, checksum, trailer) -* -* G.CLAUS 02/07/2019 -* -=================================================================================== -*/ - -#define MIS1__DS_TOT_FRAME_SZ_W16 MIS1__DS_TOT_FRAME_SZ_W128 * 8 - - -/** -=================================================================================== -* \def MIS1__FRAME_PIX_LIST_MAX_PIX_NB -* -* \brief Maximum number of pixels in MIS1__TFrPixList -* -* G.CLAUS 08/06/2020 -* -=================================================================================== -*/ - -#define MIS1__FRAME_PIX_LIST_MAX_PIX_NB 800 - - -/** -=================================================================================== -* \def MIS1__DS_TOT_FRAME_SZ_W8 -* -* \brief Maximum size in W8 of one frame (header, data, iddle, checksum, trailer) -* -* G.CLAUS 06/12/2019 -* -=================================================================================== -*/ - -#define MIS1__DS_TOT_FRAME_SZ_W8 MIS1__DS_TOT_FRAME_SZ_W128 * 16 - - -// =================================================================================== -// * Simple / short macros (comment not processed by DOXYGEN) -// * -// =================================================================================== - - -// =================================================================================== -// * \brief Macro tags to indentify the type of W16 in data stream -// * -// =================================================================================== - - -/** -=================================================================================== -* \enum MIS1__EDsTag -* -* \brief Tags to identify the type of W16 in data stream -* -* -* G.CLAUS 06/05/2019 -* -=================================================================================== -*/ - -typedef enum { - - MIS1__DS_TAG_EMPTY = 0XFCAA, /*!< Data stream word tag (b15b00) indicating an empty W16 */ - MIS1__DS_TAG_HEADER = 0XFE00, /*!< Data stream word tag (b15b08) indicating a header W16 */ - MIS1__DS_TAG_TRAILER = 0XFF00, /*!< Data stream word tag (b15b08) indicating a trailer W16 */ - MIS1__DS_TAG_REGION = 0XFD00, /*!< Data stream word tag (b15b08) indicating a region header w16 */ - MIS1__DS_TAG_SPARE_1 = 0XFC00, /*!< Data stream word tag (b15b08) indicating a spare W16 No 1 */ - MIS1__DS_TAG_SPARE_2 = 0XFD8, /*!< Data stream word tag (b15b07) indicating a spare W16 No 2 */ - -} MIS1__EDsTag; - - - -/** -=================================================================================== -* \def MIS1__ -* -* \brief Maximum size in W64 of one frame (header, data, iddle, checksum, trailer) -* -* G.CLAUS 09/04/2020 -* -=================================================================================== -*/ - -#define MIS1__MAX_W64_NB_PER_FR MIS1__DS_TOT_FRAME_SZ_W64 // Before 02/06/2020 =>200 - -#define MIS1__MAX_FR_NB_PER_ACQ 8100 // Before 26/02/21 => 1010, Before 02/06/2020 => 1010, before 17/07/2020 => 110 - -#define MIS1__MAX_BUFFERED_ACQ_NB 110 // Before 08/06/20 => 1000 03/06/2020 => Can be reduced if nedded, because max ~ 30-100 acq bufferised - -#define MIS1__MAX_W64_PER_ACQ (MIS1__MAX_FR_NB_PER_ACQ * MIS1__MAX_W64_NB_PER_FR) - - -/** -=================================================================================== -* \def MIS1__MAX_OUT_NB -* -* \brief Mimosis 1 maximum outputs number = 8 -* -* G.CLAUS 16/06/2020 -* -=================================================================================== -*/ - -#define MIS1__RUN_CONF_FFORMAT_TAG 0x5ABCDE00 /*! Conf file tag, low 8 bits = can be use for format version */ - -#define MIS1__RUN_STATUS_FFORMAT_TAG 0x1633CA00 /*! Status file tag, low 8 bits = can be use for format version */ - - -/** -=================================================================================== -* \def MIS1__MAX_RUN_FILES -* -* \brief Maximum number of TRunFiles items in MIS1__VGARunFile array -* -* G.CLAUS 25/05/2020 -* -=================================================================================== -*/ - -#define MIS1__MAX_RUN_FILES 10 - - -#define MIS1__MAX_OBUFF_PER_RUN_FILES 6 // Raw index and data - - -// =================================================================================== -// * Complex macros (comment not processed by DOXYGEN) -// * -// =================================================================================== - - -/** -=================================================================================== -* \def MIS1__MACRO_COMPLICATED_TO_EXPLAIN -* -* \brief Short macro explanation, must fit in one line -* -* Longer macro explaction, can take -* ... -* ... -* ... -* can take many lines -* -* G.CLAUS 11/04/2019 -* -=================================================================================== -*/ - - -#define MIS1__MACRO_COMPLICATED_TO_EXPLAIN 100 - -/** -=================================================================================== -* \def MIS1__CAR_MAX_STEP_NB -* -* \brief Maximum number of steps for characterization = nb of thresholds in a scan -* -* G.CLAUS 18/06/2020 -* -=================================================================================== -*/ - -#define MIS1__CAR_MAX_STEP_NB 60 // Before 16/11/2020 50 - - -/** -=================================================================================== -* \def MIS1__CAR_MAX_SUB_STEP_NB -* -* \brief Maximum number of sub steps for characterization, one sub step = one group \n -* of pixels selected (the whole matrix can't be selected at one time) -* -* G.CLAUS 18/06/2020 -* -=================================================================================== -*/ - -#define MIS1__CAR_MAX_SUB_STEP_NB 505 - - -/** -=================================================================================== -* \def MSIS1__CAR_NB_MAX_TH_REG -* -* \brief Maximum number of bias registers to configure one step of threshol scan -* -* G.CLAUS 18/06/2020 -* -=================================================================================== -*/ - -#define MSIS1__CAR_NB_MAX_BIAS_REG 4 - - -/** -=================================================================================== -* \def MIS1__CAR_MSIS1_MAX_REG_NB -* -* \brief Maximum number of MSis1 registers (DAC, etc), stored for each characterization step \n -* DAC nb = 15 + 2 pulse length = 17 => Use 32 regsitsers -* -* G.CLAUS 07/10/2020 -* -=================================================================================== -*/ - -#define MIS1__CAR_MSIS1_MAX_REG_NB 32 - - - -/** -=================================================================================== -* \def MIS1__CAR_MSIS1_MAX_SCAN_PAR_NB -* -* \brief Maximum number of MSis1 scannning parameters, set to 6 -* -* G.CLAUS 07/10/2020 -* -=================================================================================== -*/ - -#define MIS1__CAR_MSIS1_MAX_SCAN_PAR_NB 6 - - -/** -=================================================================================== -* \def MIS1__WE_MAX_MSIS_NB -* -* \brief Maximum number of MSis1 for MIS1__TCCarWarnErr class -* -* G.CLAUS 26/02/2021 -* -=================================================================================== -*/ - -#define MIS1__WE_MAX_MSIS_NB 6 - -/** -=================================================================================== -* \enum MIS1__EWarnErr -* -* \brief Tags to identify warnign, errors -* -* -* G.CLAUS 26/02/2021 -* -=================================================================================== -*/ - -typedef enum { - - MIS1__WE_RECORD_EMPTY, /*!< Record is empty = not used */ - MIS1__WE_SW_ERR, /*!< SW acq truncated */ - MIS1__WE_SW_REG_OVF, /*!< SW region overflow */ - MIS1__WE_SW_ACQ_TRUNC, /*!< SW acq truncated */ - MIS1__WE_MSIS_FR_OVF, /*!< MSis 1 frame overflow (flags bits of trailer field) */ - MIS1__WE_NB - -} MIS1__EWarnErr; - - -/** -=================================================================================== -* \def MIS1__CAR_MSIS1_MAX_SCAN_PAR_NB -* -* \brief Maximum number of MSis1 scannning parameters, set to 6 -* -* G.CLAUS 26/02/2021 -* -=================================================================================== -*/ - -#define MIS1__MAX_CAR_WARN_ERR_NB 10000 - - - -// =================================================================================== -// COnstant for MSis 1 beam tests -// -// -// -// G.CLAUS 21/05/2021 -// -// =================================================================================== - - - -#ifndef MIS1__TBtRunRead_DEF_ERR_LOG_FILE - #define MIS1__TBtRunRead_DEF_ERR_LOG_FILE "C:/iphc/C4PI/sw/log/err_MIS1__TBtRunRead.txt" // 21/05/2021 -#endif - -//#ifndef MIS1__TBtRunRead_DEF_MSG_LOG_FILE -// #define MIS1__TBtRunRead_DEF_MSG_LOG_FILE "C:/iphc/C4PI/sw/log/msg_MIS1__TBtRunRead.txt" // 21/05/2021 -//#endif - - -#define MIS1__BT_REC_TAG_BEGIN 0x66778800 // Record beginning tag = first W32 of a record - // 0x667788 = fixed part - // 00 = Data format version, OR done with function parameter => LET IT TO 00 in MIS1__BT_REC_TAG_BEGIN !!! - -#define MIS1__BT_REC_TAG_ENDIAN 0x11223344 // Record endian tag = Secoond W32 of a record, if used - - -#define MIS1__BT_MAX_ACQ_PER_FILE 120 - - -// File format version - -#define MIS1__BT_RUN_CONF_FILE_FORMAT 1 // Run conf file format version - -#define MIS1__BT_RUN_RD_FILE_FORMAT 1 // Run RD = Raw Data, file format version -#define MIS1__BT_RUN_RDI_FILE_FORMAT 1 // Run RDI = Raw Data Index, file format version - -#define MIS1__BT_RUN_TD_FILE_FORMAT 1 // Run TD = Trigger Data, file format version -#define MIS1__BT_RUN_TDI_FILE_FORMAT 1 // Run TDI = Trigger Data Index, file format version - - -#define MIS1__BT_SUP_FRAME_FACTOR 8 // Super frame multiplicator or factor, one frame can bu up to MIS1__BT_SUP_FRAME_FACTOR normal frame size - -#define MIS1__BT_TOT_FRAME_SZ_W128 (25 * MIS1__BT_SUP_FRAME_FACTOR) // 100 W16 / OUT x 2 OUT = 200 W16 = 25 W128 to be checked !!! // 31/05/2021 => X 8 - -#define MIS1__BT_TOT_FRAME_SZ_W64 (MIS1__BT_TOT_FRAME_SZ_W128 * 2) -#define MIS1__BT_TOT_FRAME_SZ_W32 (MIS1__BT_TOT_FRAME_SZ_W128 * 4) -#define MIS1__BT_TOT_FRAME_SZ_W16 (MIS1__BT_TOT_FRAME_SZ_W128 * 8) -#define MIS1__BT_TOT_FRAME_SZ_W8 (MIS1__BT_TOT_FRAME_SZ_W128 * 16) - - -#define MIS1__BT_MAX_MSIS_NB_ACQ 8 - -#define MIS1__BT_MAX_REAL_MSIS_NB_ACQ 6 - - - -#define MIS1__BT_MAX_TRIG_NB_PER_ACQ 4095 - -// Fixed Record Size (FRS) parameters - -#define MIS1__BT_FRS_MAX_FR_NB_PER_ACQ 1000 // Max allowed = 3000, more => linker bug, static structure too big - -#define MIS1__BT_FRS_MAX_ACQ_DATA_SZ_W8 (MIS1__BT_MAX_MSIS_NB_ACQ * MIS1__BT_FRS_MAX_FR_NB_PER_ACQ * MIS1__BT_TOT_FRAME_SZ_W8) - -#define MIS1__BT_FRS_MAX_ACQ_DATA_SZ_W16 (MIS1__BT_FRS_MAX_ACQ_DATA_SZ_W8 / 2) - -#define MIS1__BT_FRS_MAX_ACQ_DATA_SZ_W32 (MIS1__BT_FRS_MAX_ACQ_DATA_SZ_W8 / 4) - -#define MIS1__BT_FRS_MAX_ACQ_DATA_SZ_W64 (MIS1__BT_FRS_MAX_ACQ_DATA_SZ_W8 / 8) - - -// Variable Record Size Size (VRS) parameters - - -#define MIS1__BT_VRS_MAX_FR_NB_PER_ACQ 6000 // 7000 // 10000 - -#define MIS1__BT_VRS_MAX_ACQ_DATA_SZ_W8 (MIS1__BT_MAX_MSIS_NB_ACQ * MIS1__BT_VRS_MAX_FR_NB_PER_ACQ * MIS1__BT_TOT_FRAME_SZ_W8) - -#define MIS1__BT_VRS_MAX_ACQ_DATA_SZ_W16 (MIS1__BT_VRS_MAX_ACQ_DATA_SZ_W8 / 2) - -#define MIS1__BT_VRS_MAX_ACQ_DATA_SZ_W32 (MIS1__BT_VRS_MAX_ACQ_DATA_SZ_W8 / 4) - -#define MIS1__BT_VRS_MAX_ACQ_DATA_SZ_W64 (MIS1__BT_VRS_MAX_ACQ_DATA_SZ_W8 / 8) - - -// 24/05/2021 Decoded frames, acq - -#define MIS1__BT_FR_DEC_MAX_TRIG_NB 2 -#define MIS1__BT_FR_DEC_MAX_PIX_NB (200 * 8) // 2 out/MSis 1 => 2 x 100 = 200 W16 / MSis / fr => Max 200 pixels / fr - - -#define MIS1__TBtRunRead_CHECK_RET_S32 { \ - \ - if ( _RunConfLoaded < 1 ) { \ - err_retfail ( -1, (ERR_OUT,"Abort => No run loaded !") ); \ - } \ - \ - err_retfail ( _LastError, (ERR_OUT,"Abort => Due to previous error not cleared !") ); \ -} - - - -#define MIS1__TBtRunRead_CHECK_RET_NULL { \ -\ - if ( _RunConfLoaded < 1 ) { \ - err_retfailnull ( -1, (ERR_OUT,"Abort => No run loaded !") ); \ - } \ - \ - err_retfailnull ( _LastError, (ERR_OUT,"Abort => Due to previous error not cleared !") ); \ - } - - - - + +/** +* ---------------------------------------------------------------------------------- +* \file X:\lib\com\maps\msis1\data\msis1_data.def +* \brief Goal : Macros definition of Mimosis 1 lib +* \brief +* \brief +* \version : 1.0 +* \date Prj date : 03/05/2019 +* \date File date : 03/05/2019 +* \date Doc date : 03/05/2019 +* \author : Gilles CLAUS +* \author : gilles.claus@iphc.cnrs.fr +* \author : CNRS - IN2P3 - IPHC 23 Rue du Loess 67037 STYRASBOURG +* +* Remark : None +* +* ---------------------------------------------------------------------------------- +* License : GNU General Public License +* +* ---------------------------------------------------------------------------------- +*/ + + +#ifndef MIMOSIS1_DEF +#define MIMOSIS1_DEF + + + +// #define MIS1__CC_DECODE_FR_STRICT + + +// =================================================================================== +// * Simple / short macros (comment not processed by DOXYGEN) +// * +// =================================================================================== + +// =================================================================================== +// * \brief general data stream macros +// * +// =================================================================================== + + +/** +=================================================================================== +* \def MIS1__CC_DATA_FORMAT_SINCE_V211 +* +* \brief Must be define for DAQ SW version >= 211, undefined otherwise \n +* \brief It must be specified in DAQ and run file reader applications \n +* \brief \n +* \brief It is a bit complicated to explain ... \n +* \brief \n +* \brief DAQ versions <= 210 use DAQ MSis 1 (X:\lib\win\daq_mimosis1) for buffers \n +* \brief handling and data saving on disk. But this lib is designed for buffers size \n +* \brief specified in W64, if it is not an integer W64 number, data saving to disk \n +* \brief will be corrupted. It is not a problem for RAW data which are N x W128, but \n +* \brief for processed data, like DEC format. This problem has beend etected during \n +* \brief DAQ app dev, in order to test DAQ, the record MIS1__TPixXY, MIS1__TDecFrPixHeader \n +* \brief sizes have been adjusted to be an integer W64 number (fields size, padding) \n * \brief +* \brief this configuration is used if MIS1__CC_DATA_FORMAT_SINCE_V211 is DISABLED +* \brief +* \brief DAQ versions >= 211 solve this problem by using a new library buffers files \n * \brief +* \brief (X:\lib\com\buffers_files) whihc handles buffers, files as W8, this configuration \n +* \brief is used if MIS1__CC_DATA_FORMAT_SINCE_V211 is ENABLED +* \brief +* \brief +* +* G.CLAUS 15/06/2020 +* +=================================================================================== +*/ + + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// WARNING : This CC directive must be defined in applications app.def file, NOT HERE +// It is here - in commnet - to remeber you that it MUST be defined or NOT in applications +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// +// #define MIS1__CC_DATA_FORMAT_SINCE_V211 /*! Must be set or not in function of DAQ app version */ +// +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + +// #define MIS1__CC_USE_BT_FBtDecStdPixMSis2Dbg // Defined => Use function MIS1__BT_FBtDecStdPixMSis2Dbg (...) for MSis 2 cluster decoding, messages printing can be enabled / disble via MIS1__BT_FBtDecStdPixEnDbg () + // Undefined => Use function MIS1__BT_FBtDecStdPixMSis2(...) which is fatser but doesn't provide debug print + +/** +=================================================================================== +* \def MIS1_DEF_ERR_LOG_FILE +* +* \brief Default errors log file name +* +* G.CLAUS 01/07/2020 +* +=================================================================================== +*/ + +#define MIS1_DEF_ERR_LOG_FILE "c:/tmp/msis1_data_err.txt" + + +/** +=================================================================================== +* \def MIS1_DEF_LOG_LVL_ERRORS +* +* \brief Default errors log level +* +* G.CLAUS 01/07/2020 +* +=================================================================================== +*/ + +#define MIS1_DEF_LOG_LVL_ERRORS ERR_LOG_LVL_WARNINGS_ERRORS + + +/** +=================================================================================== +* \def MIS1__MAX_WARN_ERR_REC +* +* \brief Mimosis 1 maximum error / warnign record nb +* +* G.CLAUS 24/02/2021 +* +=================================================================================== +*/ + + +#define MIS1__MAX_WARN_ERR_REC 1000 + + +/** +=================================================================================== +* \def MIS1__MAX_OUT_NB +* +* \brief Mimosis 1 maximum outputs number = 8 +* +* G.CLAUS 14/11/2019 +* +=================================================================================== +*/ + +#define MIS1__MAX_OUT_NB 8 /*! Mimosis 1 maximum outputs number */ + + +/** +=================================================================================== +* \def MIS1__MAT_NB +* +* \brief Mimosis 1 matices nb = 8 +* +* G.CLAUS 14/05/021 +* +=================================================================================== +*/ + +#define MIS1__MAT_NB 4 /*! Mimosis 1 matices nb = 8 */ + + + +/** +=================================================================================== +* \def MIS1__COL_NB +* +* \brief Mimosis 1 columns number = 1024 +* +* G.CLAUS 14/05/2019 +* +=================================================================================== +*/ + +#define MIS1__COL_NB 1024 /*! Mimosis 1 columns number */ + + +//// + +/** +=================================================================================== +* \def MIS1__COL_PER_PE +* +* \brief Mimosis 1 columns number per priority encoder = 2 +* +* G.CLAUS 29/05/2019 +* +=================================================================================== +*/ + +#define MIS1__COL_PER_PE 2 /*! Mimosis 1 columns number per priority encoder */ + + +/** +=================================================================================== +* \def MIS1__STR_COL_LIST_MAX_SZ +* +* \brief Maximum length of string used to print columns list or pixels stateof one line +* +* G.CLAUS 23/05/2019 +* +=================================================================================== +*/ + +#define MIS1__STR_COL_LIST_MAX_SZ (MIS1__COL_NB * 15) /*! Maw lenght of columns list string */ + + +/** +=================================================================================== +* \def MIS1__ROW_NB +* +* \brief Mimosis 1 rows number = 504 +* +* G.CLAUS 14/05/2019 +* +=================================================================================== +*/ + +#define MIS1__ROW_NB 504 /*! Mimosis 1 rows number */ + + +/** +=================================================================================== +* \def MIS1__ROW_NB +* +* \brief Mimosis 1 pixels number = 1024 * 504 = 516 096 +* +* G.CLAUS 22/05/2019 +* +=================================================================================== +*/ + +#define MIS1__PIX_NB (MIS1__COL_NB * MIS1__ROW_NB) /*! Mimosis 1 pixels number */ + + +/** +=================================================================================== +* \def MIS1__PE_NB +* +* \brief Mimosis 1 PE total number for the whole matrix +* +* G.CLAUS 22/05/2019 +* +=================================================================================== +*/ + +#define MIS1__PE_NB (MIS1__COL_NB / 2) /*! Mimosis 1 PE total number */ + + +/** +=================================================================================== +* \def MIS1__PE_PER_REG +* +* \brief Mimosis 1 PE number per region = 8 +* +* G.CLAUS 14/05/2019 +* +=================================================================================== +*/ + +#define MIS1__PE_PER_REG 8 /*! Mimosis 1 PE number per region */ + + +/** +=================================================================================== +* \def MIS1__PE_PER_SREG +* +* \brief Mimosis 1 PE number per super region = 32 +* +* G.CLAUS 22/05/2019 +* +=================================================================================== +*/ + +#define MIS1__PE_PER_SREG (MIS1__PE_PER_REG * 4) /*! Mimosis 1 PE number per super region */ + +/** +=================================================================================== +* \def MIS1__COL_PER_REG +* +* \brief Mimosis 1 columns number per region = 16 +* +* G.CLAUS 29/05/2019 +* +=================================================================================== +*/ + +#define MIS1__COL_PER_REG 16 /*! Mimosis 1 columns number per region */ + + +/** +=================================================================================== +* \def MIS1__COL_PER_SREG +* +* \brief Mimosis 1 columns number per super region = 64 +* +* G.CLAUS 29/05/2019 +* +=================================================================================== +*/ + +#define MIS1__COL_PER_SREG 64 /*! Mimosis 1 columns number per region */ + + +/** +=================================================================================== +* \def MIS1__DS_MAX_REGION_NB +* +* \brief Maximum region nb in data stream, known value on 07/05/2019 is 64 +* +* It is used to define the size of the pointer array on the regions + data blocs +* contained in one frame. One frame mean data stream between header and trailer +* it can be longer than Mimosis frame readout time = 5 us. +* +* G.CLAUS 07/05/2019 +* +=================================================================================== +*/ + +#define MIS1__DS_MAX_REGION_NB 64 /*! Maximum region nb in data stream / */ + +/** +=================================================================================== +* \def MIS1__DS_FR_HEADER_SZ_W16 +* +* \brief Frame header size in W16 fields units, known value on 07/05/2019 is 8 +* +* It idefines the array field size of the frame header union +* +* G.CLAUS 07/05/2019 +* +=================================================================================== +*/ + +#define MIS1__DS_FR_HEADER_SZ_W16 8 + +/** +=================================================================================== +* \def MIS1__DS_REG_HEADER_SZ_W16 +* +* \brief Region header size in W16 fields units, known value on 07/05/2019 is 2 +* +* It idefines the array field size of the region header union +* +* G.CLAUS 07/05/2019 +* +=================================================================================== +*/ + +// #define MIS1__DS_REG_HEADER_SZ_W16 2 // Seems to be not needed, regsion header sz = 1 W16 + + + +/** +=================================================================================== +* \def MIS1__DS_TOT_FRAME_SZ_W128 +* +* \brief Maximum size in W128 of one frame (header, data, iddle, checksum, trailer) +* +* G.CLAUS 02/07/2019 +* +=================================================================================== +*/ + +// #define MIS1__DS_TOT_FRAME_SZ_W128 (100 * 8) + +// 02/06/2020 - Increase max frame length, following discussion with FM +// +// Max 5 us frame size = 100 W128 +// Data frame can run over 8 x 5 us frames => x 8 +// x 8 has to be checked with FM later + +// 17/07/2020 +// Set again max frame length to 100 W128 and not 800 W128 because +// - DAQ FW doesn't work if block size read by sw < 256 W64, therefore in case of small +// frame length (few data), fr nb / acq must be increased, and this is not possible max fr size +// = 800 W128 because buffers allocation will fail. +// - Max frame size = 100 W128 allows for ~ 800 pixels / frame, which in enough for tests + +#define MIS1__DS_TOT_FRAME_SZ_W128 100 + + +/** +=================================================================================== +* \def MIS1__DS_TOT_FRAME_SZ_W64 +* +* \brief Maximum size in W64 of one frame (header, data, iddle, checksum, trailer) +* +* G.CLAUS 06/12/2019 +* +=================================================================================== +*/ + +#define MIS1__DS_TOT_FRAME_SZ_W64 MIS1__DS_TOT_FRAME_SZ_W128 * 2 + + +/** +=================================================================================== +* \def MIS1__DS_TOT_FRAME_SZ_W32 +* +* \brief Maximum size in W32 of one frame (header, data, iddle, checksum, trailer) +* +* G.CLAUS 06/12/2019 +* +=================================================================================== +*/ + +#define MIS1__DS_TOT_FRAME_SZ_W32 MIS1__DS_TOT_FRAME_SZ_W128 * 4 + + +/** +=================================================================================== +* \def MIS1__DS_TOT_FRAME_SZ_W16 +* +* \brief Maximum size in W16 of one frame (header, data, iddle, checksum, trailer) +* +* G.CLAUS 02/07/2019 +* +=================================================================================== +*/ + +#define MIS1__DS_TOT_FRAME_SZ_W16 MIS1__DS_TOT_FRAME_SZ_W128 * 8 + + +/** +=================================================================================== +* \def MIS1__FRAME_PIX_LIST_MAX_PIX_NB +* +* \brief Maximum number of pixels in MIS1__TFrPixList +* +* G.CLAUS 08/06/2020 +* +=================================================================================== +*/ + +#define MIS1__FRAME_PIX_LIST_MAX_PIX_NB 800 + + +/** +=================================================================================== +* \def MIS1__DS_TOT_FRAME_SZ_W8 +* +* \brief Maximum size in W8 of one frame (header, data, iddle, checksum, trailer) +* +* G.CLAUS 06/12/2019 +* +=================================================================================== +*/ + +#define MIS1__DS_TOT_FRAME_SZ_W8 MIS1__DS_TOT_FRAME_SZ_W128 * 16 + + +// =================================================================================== +// * Simple / short macros (comment not processed by DOXYGEN) +// * +// =================================================================================== + + +// =================================================================================== +// * \brief Macro tags to indentify the type of W16 in data stream +// * +// =================================================================================== + + +/** +=================================================================================== +* \enum MIS1__EDsTag +* +* \brief Tags to identify the type of W16 in data stream +* +* +* G.CLAUS 06/05/2019 +* +=================================================================================== +*/ + +typedef enum { + + MIS1__DS_TAG_EMPTY = 0XFCAA, /*!< Data stream word tag (b15b00) indicating an empty W16 */ + MIS1__DS_TAG_HEADER = 0XFE00, /*!< Data stream word tag (b15b08) indicating a header W16 */ + MIS1__DS_TAG_TRAILER = 0XFF00, /*!< Data stream word tag (b15b08) indicating a trailer W16 */ + MIS1__DS_TAG_REGION = 0XFD00, /*!< Data stream word tag (b15b08) indicating a region header w16 */ + MIS1__DS_TAG_SPARE_1 = 0XFC00, /*!< Data stream word tag (b15b08) indicating a spare W16 No 1 */ + MIS1__DS_TAG_SPARE_2 = 0XFD8, /*!< Data stream word tag (b15b07) indicating a spare W16 No 2 */ + +} MIS1__EDsTag; + + + +/** +=================================================================================== +* \def MIS1__ +* +* \brief Maximum size in W64 of one frame (header, data, iddle, checksum, trailer) +* +* G.CLAUS 09/04/2020 +* +=================================================================================== +*/ + +#define MIS1__MAX_W64_NB_PER_FR MIS1__DS_TOT_FRAME_SZ_W64 // Before 02/06/2020 =>200 + +#define MIS1__MAX_FR_NB_PER_ACQ 8100 // Before 26/02/21 => 1010, Before 02/06/2020 => 1010, before 17/07/2020 => 110 + +#define MIS1__MAX_BUFFERED_ACQ_NB 110 // Before 08/06/20 => 1000 03/06/2020 => Can be reduced if nedded, because max ~ 30-100 acq bufferised + +#define MIS1__MAX_W64_PER_ACQ (MIS1__MAX_FR_NB_PER_ACQ * MIS1__MAX_W64_NB_PER_FR) + + +/** +=================================================================================== +* \def MIS1__MAX_OUT_NB +* +* \brief Mimosis 1 maximum outputs number = 8 +* +* G.CLAUS 16/06/2020 +* +=================================================================================== +*/ + +#define MIS1__RUN_CONF_FFORMAT_TAG 0x5ABCDE00 /*! Conf file tag, low 8 bits = can be use for format version */ + +#define MIS1__RUN_STATUS_FFORMAT_TAG 0x1633CA00 /*! Status file tag, low 8 bits = can be use for format version */ + + +/** +=================================================================================== +* \def MIS1__MAX_RUN_FILES +* +* \brief Maximum number of TRunFiles items in MIS1__VGARunFile array +* +* G.CLAUS 25/05/2020 +* +=================================================================================== +*/ + +#define MIS1__MAX_RUN_FILES 10 + + +#define MIS1__MAX_OBUFF_PER_RUN_FILES 6 // Raw index and data + + +// =================================================================================== +// * Complex macros (comment not processed by DOXYGEN) +// * +// =================================================================================== + + +/** +=================================================================================== +* \def MIS1__MACRO_COMPLICATED_TO_EXPLAIN +* +* \brief Short macro explanation, must fit in one line +* +* Longer macro explaction, can take +* ... +* ... +* ... +* can take many lines +* +* G.CLAUS 11/04/2019 +* +=================================================================================== +*/ + + +#define MIS1__MACRO_COMPLICATED_TO_EXPLAIN 100 + +/** +=================================================================================== +* \def MIS1__CAR_MAX_STEP_NB +* +* \brief Maximum number of steps for characterization = nb of thresholds in a scan +* +* G.CLAUS 18/06/2020 +* +=================================================================================== +*/ + +#define MIS1__CAR_MAX_STEP_NB 60 // Before 16/11/2020 50 + + +/** +=================================================================================== +* \def MIS1__CAR_MAX_SUB_STEP_NB +* +* \brief Maximum number of sub steps for characterization, one sub step = one group \n +* of pixels selected (the whole matrix can't be selected at one time) +* +* G.CLAUS 18/06/2020 +* +=================================================================================== +*/ + +#define MIS1__CAR_MAX_SUB_STEP_NB 505 + + +/** +=================================================================================== +* \def MSIS1__CAR_NB_MAX_TH_REG +* +* \brief Maximum number of bias registers to configure one step of threshol scan +* +* G.CLAUS 18/06/2020 +* +=================================================================================== +*/ + +#define MSIS1__CAR_NB_MAX_BIAS_REG 4 + + +/** +=================================================================================== +* \def MIS1__CAR_MSIS1_MAX_REG_NB +* +* \brief Maximum number of MSis1 registers (DAC, etc), stored for each characterization step \n +* DAC nb = 15 + 2 pulse length = 17 => Use 32 regsitsers +* +* G.CLAUS 07/10/2020 +* +=================================================================================== +*/ + +#define MIS1__CAR_MSIS1_MAX_REG_NB 32 + + + +/** +=================================================================================== +* \def MIS1__CAR_MSIS1_MAX_SCAN_PAR_NB +* +* \brief Maximum number of MSis1 scannning parameters, set to 6 +* +* G.CLAUS 07/10/2020 +* +=================================================================================== +*/ + +#define MIS1__CAR_MSIS1_MAX_SCAN_PAR_NB 6 + + +/** +=================================================================================== +* \def MIS1__WE_MAX_MSIS_NB +* +* \brief Maximum number of MSis1 for MIS1__TCCarWarnErr class +* +* G.CLAUS 26/02/2021 +* +=================================================================================== +*/ + +#define MIS1__WE_MAX_MSIS_NB 6 + +/** +=================================================================================== +* \enum MIS1__EWarnErr +* +* \brief Tags to identify warnign, errors +* +* +* G.CLAUS 26/02/2021 +* +=================================================================================== +*/ + +typedef enum { + + MIS1__WE_RECORD_EMPTY, /*!< Record is empty = not used */ + MIS1__WE_SW_ERR, /*!< SW acq truncated */ + MIS1__WE_SW_REG_OVF, /*!< SW region overflow */ + MIS1__WE_SW_ACQ_TRUNC, /*!< SW acq truncated */ + MIS1__WE_MSIS_FR_OVF, /*!< MSis 1 frame overflow (flags bits of trailer field) */ + MIS1__WE_NB + +} MIS1__EWarnErr; + + +/** +=================================================================================== +* \def MIS1__CAR_MSIS1_MAX_SCAN_PAR_NB +* +* \brief Maximum number of MSis1 scannning parameters, set to 6 +* +* G.CLAUS 26/02/2021 +* +=================================================================================== +*/ + +#define MIS1__MAX_CAR_WARN_ERR_NB 10000 + + + +// =================================================================================== +// COnstant for MSis 1 beam tests +// +// +// +// G.CLAUS 21/05/2021 +// +// =================================================================================== + + + +#ifndef MIS1__TBtRunRead_DEF_ERR_LOG_FILE + #define MIS1__TBtRunRead_DEF_ERR_LOG_FILE "C:/iphc/C4PI/sw/log/err_MIS1__TBtRunRead.txt" // 21/05/2021 +#endif + +#ifndef MIS1__TBtRunRead_DEF_MSG_LOG_FILE + #define MIS1__TBtRunRead_DEF_MSG_LOG_FILE "C:/iphc/C4PI/sw/log/msg_MIS1__TBtRunRead.txt" // 21/05/2021 +#endif + + +#define MIS1__BT_REC_TAG_BEGIN 0x66778800 // Record beginning tag = first W32 of a record + // 0x667788 = fixed part + // 00 = Data format version, OR done with function parameter => LET IT TO 00 in MIS1__BT_REC_TAG_BEGIN !!! + +#define MIS1__BT_REC_TAG_ENDIAN 0x11223344 // Record endian tag = Secoond W32 of a record, if used + + +#define MIS1__BT_MAX_ACQ_PER_FILE 120 + + +// File format version + +#define MIS1__BT_RUN_CONF_FILE_FORMAT 1 // Run conf file format version + +#define MIS1__BT_RUN_RD_FILE_FORMAT 1 // Run RD = Raw Data, file format version +#define MIS1__BT_RUN_RDI_FILE_FORMAT 1 // Run RDI = Raw Data Index, file format version + +#define MIS1__BT_RUN_TD_FILE_FORMAT 1 // Run TD = Trigger Data, file format version +#define MIS1__BT_RUN_TDI_FILE_FORMAT 1 // Run TDI = Trigger Data Index, file format version + + +#define MIS1__BT_SUP_FRAME_FACTOR 8 // Super frame multiplicator or factor, one frame can be up to MIS1__BT_SUP_FRAME_FACTOR normal frame size + +#define MIS1__BT_TOT_FRAME_SZ_W128 (25 * MIS1__BT_SUP_FRAME_FACTOR) // 100 W16 / OUT x 2 OUT = 200 W16 = 25 W128 to be checked !!! // 31/05/2021 => X 8 + +#define MIS1__BT_TOT_FRAME_SZ_W64 (MIS1__BT_TOT_FRAME_SZ_W128 * 2) +#define MIS1__BT_TOT_FRAME_SZ_W32 (MIS1__BT_TOT_FRAME_SZ_W128 * 4) +#define MIS1__BT_TOT_FRAME_SZ_W16 (MIS1__BT_TOT_FRAME_SZ_W128 * 8) +#define MIS1__BT_TOT_FRAME_SZ_W8 (MIS1__BT_TOT_FRAME_SZ_W128 * 16) + + +#define MIS1__BT_MAX_MSIS_NB_ACQ 8 + +#define MIS1__BT_MAX_REAL_MSIS_NB_ACQ 6 + + + +#define MIS1__BT_MAX_TRIG_NB_PER_ACQ 4095 + +// Fixed Record Size (FRS) parameters + +#define MIS1__BT_FRS_MAX_FR_NB_PER_ACQ 1000 // Max allowed = 3000, more => linker bug, static structure too big + +#define MIS1__BT_FRS_MAX_ACQ_DATA_SZ_W8 (MIS1__BT_MAX_MSIS_NB_ACQ * MIS1__BT_FRS_MAX_FR_NB_PER_ACQ * MIS1__BT_TOT_FRAME_SZ_W8) + +#define MIS1__BT_FRS_MAX_ACQ_DATA_SZ_W16 (MIS1__BT_FRS_MAX_ACQ_DATA_SZ_W8 / 2) + +#define MIS1__BT_FRS_MAX_ACQ_DATA_SZ_W32 (MIS1__BT_FRS_MAX_ACQ_DATA_SZ_W8 / 4) + +#define MIS1__BT_FRS_MAX_ACQ_DATA_SZ_W64 (MIS1__BT_FRS_MAX_ACQ_DATA_SZ_W8 / 8) + + +// Variable Record Size Size (VRS) parameters + + +#define MIS1__BT_VRS_MAX_FR_NB_PER_ACQ 7000 // 6000 on 06/06/2021 => run read lib compiled with 6000 but DAQ DLL requires to be compile with 7000 because 7000 hard coded in LV + // 7000 // 10000 + +#define MIS1__BT_VRS_MAX_ACQ_DATA_SZ_W8 (MIS1__BT_MAX_MSIS_NB_ACQ * MIS1__BT_VRS_MAX_FR_NB_PER_ACQ * MIS1__BT_TOT_FRAME_SZ_W8) + +#define MIS1__BT_VRS_MAX_ACQ_DATA_SZ_W16 (MIS1__BT_VRS_MAX_ACQ_DATA_SZ_W8 / 2) + +#define MIS1__BT_VRS_MAX_ACQ_DATA_SZ_W32 (MIS1__BT_VRS_MAX_ACQ_DATA_SZ_W8 / 4) + +#define MIS1__BT_VRS_MAX_ACQ_DATA_SZ_W64 (MIS1__BT_VRS_MAX_ACQ_DATA_SZ_W8 / 8) + + +// 24/05/2021 Decoded frames, acq + +#define MIS1__BT_FR_DEC_MAX_TRIG_NB 2 +#define MIS1__BT_FR_DEC_MAX_PIX_NB (200 * 8) // 2 out/MSis 1 => 2 x 100 = 200 W16 / MSis / fr => Max 200 pixels / fr + + +#define MIS1__TBtRunRead_CHECK_RET_S32 { \ + \ + if ( _RunConfLoaded < 1 ) { \ + err_retfail ( -1, (ERR_OUT,"Abort => No run loaded !") ); \ + } \ + \ + err_retfail ( _LastError, (ERR_OUT,"Abort => Due to previous error not cleared !") ); \ +} + + + +#define MIS1__TBtRunRead_CHECK_RET_NULL { \ +\ + if ( _RunConfLoaded < 1 ) { \ + err_retfailnull ( -1, (ERR_OUT,"Abort => No run loaded !") ); \ + } \ + \ + err_retfailnull ( _LastError, (ERR_OUT,"Abort => Due to previous error not cleared !") ); \ + } + + + + #endif \ No newline at end of file diff --git a/code/include/mimo_daq_lib/msis1_data.typ b/code/include/mimo_daq_lib/msis1_data.typ index c39468d..9c92fef 100644 --- a/code/include/mimo_daq_lib/msis1_data.typ +++ b/code/include/mimo_daq_lib/msis1_data.typ @@ -2740,6 +2740,10 @@ typedef struct { UInt32 FrCnt; /*!< Frame counter extracted from MSisFrHead */ SInt32 Errors; /*!< Errors detected in frame, 0 = None, < 0 SW error in data decoding, > 0 Msis HW error, ovf etc => Values are defined by MIS1__TBtFrError */ + + UInt8 NoTrailer; /*!< 08/06/2021 : 0 => Normal frame, 1 => Frame without trailer */ + UInt8 Truncated; /*!< 09/06/2021 : 0 => Normal frame, 1 => Frame truncated = no trailer, MSis 1 bug or last frame of Acq longer than 5 us */ + SInt32 FrDataSzW16; /*!< Size of frame data part in W16 => Without header and trailer, < 0 => not calculated / error */ SInt32 FirstDataW16Pos; /*!< Position of first W16 of frame in MIS1__TBtAcqW16A.AAMsis[MSisId][W16Id], unit = W16, < 0 => not calculated / error */ @@ -2782,6 +2786,8 @@ typedef struct { SInt32 ResAPixNb [MIS1__BT_MAX_REAL_MSIS_NB_ACQ]; /*!< Counter fired pixels, index is [MSisId] */ + SInt32 ResAFrNbOvfFlags [MIS1__BT_MAX_REAL_MSIS_NB_ACQ]; /*!< Array of frames nb with overflow flags sets in trailer - 09/10/2021 */ + MIS1__TBtFrDecHead ResAAFrHead[MIS1__BT_MAX_REAL_MSIS_NB_ACQ][MIS1__BT_VRS_MAX_FR_NB_PER_ACQ]; /*!< Array of frames header, indexes are [MSisId][FrameId] */ diff --git a/code/include/mimo_daq_lib/msis1_data_exp.h b/code/include/mimo_daq_lib/msis1_data_exp.h index e93e587..b5699fc 100644 --- a/code/include/mimo_daq_lib/msis1_data_exp.h +++ b/code/include/mimo_daq_lib/msis1_data_exp.h @@ -35,8 +35,20 @@ SInt32 MIS1__TBtRunRead_FErrLogUsrPrint ( char Type, char* ErrLocation, char* Er SInt32 MIS1__TBtRunRead_FMsgLogUsrPrint ( char* Msg ); +// 17/06/2024 + +SInt32 MIS1__FSetMSisVersion ( SInt8 Version ); +SInt32 MIS1__FGetMSisVersion ( ); + +double MIS1__BT_FBtDecodeFrMSis2 ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, SInt8 PrintLvl ); +double MIS1__BT_FBtDecodeFrMSis1 ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, SInt8 PrintLvl ); + + + // 22/05/2021 +SInt32 MIS1__BT_FBtDecStdPixEnDbg ( SInt8 PrintLvl ); + MIS1__TBtAcqW16A* MIS1__BT_FBtAcqW16AAlloc ( UInt8 Alloc, UInt32* PtRecSz ); SInt32 MIS1__BT_FBtAcqW16AFree ( MIS1__TBtAcqW16A* PtRec ); @@ -49,10 +61,10 @@ SInt32 MIS1__BT_FBtAcqW16APrintMSisU16 ( MIS1__TBtAcqW16A* Pt, UInt8 MIS1__TBtAcqDec* MIS1__BT_FBtAcqDecAlloc ( UInt8 Alloc, UInt32* PtRecSz ); SInt32 MIS1__BT_FBtAcqDecFree ( MIS1__TBtAcqDec* PtRec ); -double MIS1__BT_FBtDecodeFrLight ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, UInt8 PrintLvl ); +double MIS1__BT_FBtDecodeFrLight ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, SInt8 PrintLvl ); SInt32 MIS1__BT_FBtDecodeFrGetWarnErr ( UInt8 Reset ); -double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, UInt8 PrintLvl ); +double MIS1__BT_FBtDecodeFr ( MIS1__TBtAcqW16A* PtSrc, MIS1__TBtAcqDec* PtDest, SInt8 MSisId, SInt32 FrNb, UInt8 MeasExecTime, SInt8 PrintLvl ); SInt32 MIS1__BT_FFrDecHeadPrint ( MIS1__TBtFrDecHead* Pt, UInt8 PrintMode ); SInt32 MIS1__BT_FAcqDecPrintGen ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UInt8 PrintMode ); SInt32 MIS1__BT_FAcqDecPrintPix ( MIS1__TBtAcqDec* Pt, SInt8 MSisId, UInt32 FrId, UInt32 MaxPixToPrint, UInt8 PrintMode ); diff --git a/code/src/.DS_Store b/code/src/.DS_Store new file mode 100644 index 0000000..11b2fbb Binary files /dev/null and b/code/src/.DS_Store differ diff --git a/code/src/BoardReaderMIMOSIS.cxx b/code/src/BoardReaderMIMOSIS.cxx index da53168..0445016 100644 --- a/code/src/BoardReaderMIMOSIS.cxx +++ b/code/src/BoardReaderMIMOSIS.cxx @@ -4,11 +4,30 @@ // Dedicated to decode output files from the PXI acquisition system // dedicated to MIMOSIS sensors // +// Use Gilles Claus library to decode rawdata file, see code/inculde/mimo_daq_lib // ///////////////////////////////////////////////////////////// // // created JB, 2021/04/21 -// Last Modified: +// Last Modified: Ziad, 2024/06/27 +/* Added MIMOSIS21 Version setting */ +// This class enables the decoding of MIMOSIS1 sensor data +// * Two main methods are used for decoding: +// - DecodeNextEvent: enables the scanning of the acquisitions and get the pointer of the current acquisition. +// - DecodeFrame: enables to add the pixel values corresponding to the current considered frame. +// +// * Two treatment modes are available: wih trigger (TriggerMode: 1) and without the trigger (TriggerMode: 0). +// - TriggerMode is set in the configuration file. +// - In case of no TriggerMode, all the frames are decoded. +// - In case of TriggerMode (1), fFramesPerTrigger frames are decoded starting at fTriggerOffset from the TriggerID: +// -> example: if fTriggerOffset = 1, fFramesPerTrigger = 3 and TriggerID = 300 => Decoded frames: 301, 302, 303 +// -> fTriggerOffset and fFramesPerTrigger are set in the configuration file BUT considered only if TriggerMode: 1 +// -> if TriggerMode: 0, fTriggerOffset and fFramesPerTrigger have default values, respectively 0 and 1. +// +// * A SafeAcquisitionMode is possible and set by user with the parameters: fEventBuildingMode (0: risky, 1: safe). +// - Test is done in method isAcqSafe() checks if acquisition is safe to consider for decoding. +// - On 2021/06/15 the criteria of safe acquisition is that it has the same number of frames in all sensors. + #define AP 0 #include "TCanvas.h" #include "TApplication.h" @@ -59,7 +78,6 @@ MIS1__TBtRunRead* APP_VGPtRunRead; MIS1__TBtAcqRawRec* APP_VGPtAcqSrc; // 26/05/2021 V1.1 // Pointer on current acq of run = source Acq to be decoded - MIS1__TBtAcqW16A* APP_VGPtAcqW16A; // 26/05/2021 V1.1 // AcqW16A record = Flex RIO data reoorganized // Contains Acq data reordered in order to have one array of W16 for each MSis1 @@ -81,7 +99,7 @@ int BoardReaderMIMOSIS::test() { // ---------------------------------------------------------------- // Variables - // ---------------------------------------------------------------- + // -------------------------------------------------------------- SInt32 VRet; // Error code returned by functions ( 0 => ok, < 0 => error ) @@ -253,10 +271,8 @@ int BoardReaderMIMOSIS::test() { printf ( "\n" ); printf ( "MIS1__TBtRunRead class creation done :-) \n" ); printf ( "\n" ); - - - - // ---------------------------------------------------------------- + + //----------------------------------------------------------------- // Error messages logging configuration // ---------------------------------------------------------------- // @@ -316,7 +332,18 @@ int BoardReaderMIMOSIS::test() { printf ( "Messages log file => %s \n", APP_VGPtRunRead->FMsgLogSetFilename () ); printf ( "============================================================= \n" ); printf ( "\n" ); - + + // ---------------------------------------------------------------- + // Configure MSis version + // + // => This is better to do it after error and log file configuration + // => If this function is not called, by default MSis 1 is configured + // + // ---------------------------------------------------------------- + + // 21/06/2024 + MIS1__FSetMSisVersion ( 21 ); // Possible values are 1, 2, 21 + // ---------------------------------------------------------------- // Allocate record to convert one Acq @@ -545,9 +572,6 @@ int BoardReaderMIMOSIS::test() { } - - - // ---------------------------------------------------------------- // Decode first Acq of run // Only for foirst MSis, a loop must done to convert all MSis @@ -579,7 +603,8 @@ int BoardReaderMIMOSIS::test() { // Convert FleRIO memory image to list of W16 for each MSis - VRet = MIS1__BT_FBtAcqW16AFill ( APP_VGPtAcqSrc , APP_VGPtAcqW16A, -1 /* FrNb, -1 => All */, 0 /* MeasExecTime */, 0 /* PrintLvl */, 80 /* FuncVers */ ); // A partir de là on peut lire des pixels. + VRet = MIS1__BT_FBtAcqW16AFill ( APP_VGPtAcqSrc , APP_VGPtAcqW16A, -1 /* FrNb, -1 => All */, 0 /* MeasExecTime */, 0 /* PrintLvl */, 80 /* FuncVers */ ); + // A partir de là on peut lire des pixels. // Error @@ -907,29 +932,45 @@ int BoardReaderMIMOSIS::test() { } //------------------------------------------+----------------------------------- -//BoardReaderMIMOSIS::BoardReaderMIMOSIS(int boardNumber, int runNumber, int nSensors, int triggerMode, int eventBuildingMode, int headerSize, int trailerSize, int endianness) { -BoardReaderMIMOSIS::BoardReaderMIMOSIS(int boardNumber, char* dataPath, int runNumber, int nSensors, int triggerMode, int eventBuildingMode, int headerSize, int trailerSize, int endianness) { -// Board creator - // ==> OF COURSE the list of arguments might be changed if needed! <== +//BoardReaderMIMOSIS::BoardReaderMIMOSIS(int boardNumber, char* dataPath, int runNumber, int nSensors, int triggerMode, int triggerOffset, int framesPerTrigger, int mergingFrameMode, int framesToMerge, int eventBuildingMode, int endianness) { +BoardReaderMIMOSIS::BoardReaderMIMOSIS(int boardNumber, char* dataPath, int runNumber, int nSensors, int triggerMode, int triggerOffset, int framesPerTrigger, int framesToMerge, int eventBuildingMode, int endianness) { + // Board creator + // Load the rawdata file + // + // Ziad, 2021 int VParHdPrintTriggers = 5; // Nb of triggers to print -1 => All, 0 => None, N > 0 => N first triggers int VParHdPrintFrCnt = 3; // Print frame counter of 6 x MSis 1 over N frames, -1 => All frames, 0 => None, N > 0 => N first frames int VParHdPrintFiredPixels = 1; // Print fired pixels (per MSis1, per submatrices), 0 => No, 1 => Print, NOT CALCULATD NOW on 19/05/2021 - - fDebugLevel = 0; // Used for printing info later + NbFiredPixPerFrame = (int *) calloc (1000, sizeof(int)) ; // ZE 2021/10/10/ Get the number of fired pixels per frame + + fDebugLevel = 0; // Used for printing info later fBoardNumber = boardNumber; fRunNumber = runNumber; fNSensors = nSensors; fTriggerMode = triggerMode; + fFramesToMerge = framesToMerge; + // fMergingFrameMode = mergingFrameMode; fEventBuildingMode = eventBuildingMode; - fSizeOfHeader = headerSize; - fSizeOfTrailer = trailerSize; fEndianness = endianness; + fTriggerOffset = 0; + fFramesPerTrigger = 1; + if (fTriggerMode == 1){ // Values for fTriggerOffset and fFramesPerTrigger are set by user only if TriggerMode = 1 + // if TriggerMode = 0, fTriggerOffset and fFramesPerTrigger are set to default values, + // respectively 0 and 1. + fTriggerOffset = triggerOffset; + fFramesPerTrigger = framesPerTrigger; + } + // if (fMergingFrameMode == 1) fFramesToMerge = framesToMerge; + + fVetoOverflow = false; // set later by SetVetoPixel fisfirstAcq = true; - + fisAcqSafe = true; // ZE, 2021/06/14 we start assuming the current acquisition is not risky + fBadDecFrameCounter = 0; + fTruncatedAcqCounter = 0; fReachEndOfRun = 0; @@ -951,35 +992,54 @@ BoardReaderMIMOSIS::BoardReaderMIMOSIS(int boardNumber, char* dataPath, int runN cout << "*****************************************" << endl; cout << "Creating a BoardReaderMIMOSIS" << endl; cout << " * board nb: " << fBoardNumber << endl; + cout << " * runNumber : " << runNumber << endl; cout << " * nb of sensors: " << fNSensors << endl; cout << " * trigger mode: " << fTriggerMode << endl; + cout << " * trigger offset : " << fTriggerOffset << endl; + cout << " * frames per trigger : " << fFramesPerTrigger << endl; + cout << " * number of frames to Merge once hits found : " << fFramesToMerge << endl; cout << " * event building mode: " << fEventBuildingMode << endl; - cout << " * event header & trailer sizes: " << fSizeOfHeader << " & " << fSizeOfTrailer << endl; cout << " * Endiannes: " << fEndianness << " => " << (fEndianness==0?"NO SWAP":"SWAP") << endl; cout << " * usage of veto for event with overflow: " << fVetoOverflow << " => " << (fVetoOverflow?"YES":"NO") << endl; + cout << " * dataPath : " << dataPath << endl; // Initialization fCurrentFileNumber = 0; // See also AddFileList fNoMoreFile = false; fCurrentEventNumber = 0; fCurrentTriggerNumber = 0; + fFramesCounterInTrigger = 0; fTriggerCount = 0; fFrameCount = 0; + fNbMergedFrame = 0; fNEventsWithOverflow = 0; fCurrentAcqNumber = -1; fCurrentFrameNumber = 0; + fnbTrg = 0; + fendTrg = 0; + + // Initialization of the number of fired pixels per frame + //for (int i = 0; i < 1000; i ++) NbFiredPixPerFrame[i] = 0; - // Initialization of Current Acquisition Number and Current Frame Number - - // ---------------------------------------------------------------- - // Class creation - // ---------------------------------------------------------------- + // ---------------------------------------------------------------- + // Configure MSis version + // + // => This is better to do it after error and log file configuration + // => If this function is not called, by default MSis 1 is configured + // + // ---------------------------------------------------------------- + + // 21/06/2024 + MIS1__FSetMSisVersion ( 21 ); // Possible values are 1, 2, 21 + // ---------------------------------------------------------------- + // Reading Class creation + // ---------------------------------------------------------------- MIS1__TBtRunCnfRec* VPtRunConf = NULL; // Pointer to run conf record MIS1__TBtAcqRawRec* VPtAcq = NULL; // Pointer to current Acq - - APP_VGPtRunRead = new MIS1__TBtRunRead(); + APP_VGPtRunRead = new MIS1__TBtRunRead(); + if ( APP_VGPtRunRead == NULL ) { printf ( "\n" ); printf ( "ERROR : Creation of MIS1__TBtRunRead failed ! \n" ); @@ -990,7 +1050,7 @@ BoardReaderMIMOSIS::BoardReaderMIMOSIS(int boardNumber, char* dataPath, int runN printf ( "\n" ); // Initialisation required by DAQ library - APP__TContext* VPtCont = &APP__VGContext; + //APP__TContext* VPtCont = &APP__VGContext; //ZE 2021/06/09 not used in BoardReaderMIMOSIS char msgFile[100], errFile[100]; // JB 2011/06/28 // int runNumber ; @@ -999,10 +1059,17 @@ BoardReaderMIMOSIS::BoardReaderMIMOSIS(int boardNumber, char* dataPath, int runN sprintf( errFile, "Results/%d/err_run%d.txt", runNumber, runNumber); sprintf(errFile,"%s", fTool.LocalizeDirName( errFile)); // JB 2011/07/07 + cout << " * msgFile : " << msgFile << " errFile = " << errFile << endl; + // ZE 2021/06/01 access configuration file VRet = APP_VGPtRunRead->FRunConf ( dataPath, runNumber, 0 /* PrintRunHeader */, MIS1__BT_RUN_RD_FILE_FORMAT ); - + if( VRet<0 ) { + cout << endl << "ERROR: cannot configure run -> return of RunConf = " << VRet << endl; + cout << " Consult " << errFile << " to investigate." << endl << endl; + return; + } + ERR_FBegin ( ( APP_VGErrFileLogLvl != 0 ) /* Enable */, errFile ); ERR_FSetFileLogLevel ( APP_VGErrFileLogLvl ); ERR_FSetUserLogLevel ( APP_VGErrUserLogLvl ); @@ -1013,7 +1080,9 @@ BoardReaderMIMOSIS::BoardReaderMIMOSIS(int boardNumber, char* dataPath, int runN // ZE 2021/06/03 two following steps to get the number of frames per acquisition VPtRunConf = APP_VGPtRunRead->FRunHeaderGet ( 1 /* Print */ ); + fnbFrPerAcq = VPtRunConf->FrNbPerAcq ; + cout << " * Number of Frames per Acq : " << fnbFrPerAcq << endl; // In case of more info required in log_msg and log_err use the syntax below /* @@ -1031,8 +1100,9 @@ BoardReaderMIMOSIS::BoardReaderMIMOSIS(int boardNumber, char* dataPath, int runN if ( VRet < 0 ) { printf ( "\n" ); - printf ( "Configure Acq header printing option has failed \n" ); + printf ( "ERROR: Configure Acq header printing option has failed \n" ); printf ( "\n" ); + return; } // AcqW16A record @@ -1071,19 +1141,19 @@ BoardReaderMIMOSIS::BoardReaderMIMOSIS(int boardNumber, char* dataPath, int runN // OK - if(fDebugLevel>1) { + //if(fDebugLevel>1) { printf ( "\n" ); printf ( "Allocation of AcqDec of %.1f MB ... \n", VAcqDecSz / 1024. / 1024. ); printf ( "Max frames nb / Acq = %d \n", MIS1__BT_VRS_MAX_FR_NB_PER_ACQ ); printf ( "Max pixels nb / Frame = %d \n", MIS1__BT_FR_DEC_MAX_PIX_NB ); - printf ( "Done :-) \n" ); - printf ( "\n" ); - } + //printf ( "Done :-) \n" ); + //printf ( "\n" ); + //} - - + + cout << "*****************************************" << endl; cout << " < BoardReaderMIMOSIS constructor DONE > " << endl; - + cout << "*****************************************" << endl; } //------------------------------------------+----------------------------------- @@ -1141,122 +1211,6 @@ BoardReaderMIMOSIS::~BoardReaderMIMOSIS() } -// -------------------------------------------------------------------------------------- -bool BoardReaderMIMOSIS::AddFileList(string prefixFileName, int startIndex, int endIndex, string suffixFileName) { - // Try opening each input files built from name=prefix+index+suffix - // Keep only the good one - // Work also for a single file with startIndex=endIndex - // - // Return true if at least one file can be opened - - bool rc = true; - std::string fileName; - - if(fDebugLevel) { - cout << "BoardReaderMIMOSIS::AddFileList => Adding files with indexes from " << startIndex << " to " << endIndex; - cout << " prefix=" << prefixFileName << ", suffix=" << suffixFileName << endl; - } - - // Try each filename looping on indexes, and keep in the list only the good ones - for (size_t iFile = startIndex; iFile <= endIndex; iFile++) { - fileName = prefixFileName + "_" + std::to_string(iFile) + suffixFileName; - if(fDebugLevel>1) cout << " trying file " << fileName << endl; - fRawFileStream.open( fileName); - if( fRawFileStream.fail() ) { - cout << endl << "ERROR BoardReaderMIMOSIS " << fBoardNumber << " file " << fileName << " does not exist!!" << endl; - fRawFileStream.close(); - rc = false; - } - else{ - fListInputFileNames.push_back( fileName); - cout << " BoardReaderMIMOSIS " << fBoardNumber << " New file " << fileName << ", total of " << fListInputFileNames.size() << " files." << endl; - fRawFileStream.close(); - } - } - - // If there is only one file, try a filename without an index - if ( !rc && endIndex==startIndex ) { - fileName = prefixFileName + suffixFileName; - if(fDebugLevel>1) cout << " trying file " << fileName << endl; - fRawFileStream.open( fileName); - if( fRawFileStream.fail() ) { - cout << endl << " ERROR BoardReaderMIMOSIS " << fBoardNumber << " file " << fileName << " does not exist!!" << endl; - fRawFileStream.close(); - rc = false; - } - else{ - fListInputFileNames.push_back( fileName); - cout << " BoardReaderMIMOSIS " << fBoardNumber << " New file " << fileName << ", total of " << fListInputFileNames.size() << " files." << endl; - fRawFileStream.close(); - } - } - - cout << "#files OK = " << fListInputFileNames.size() << " out of " << endIndex-startIndex+1 << endl; - - // if at least one file is OK, reopens the very first file - if ( fListInputFileNames.size() == 0 ) { - fNoMoreFile = true; - return false; - } - - fCurrentFileNumber = 0; - return LookUpRawFile(); - -} - -// -------------------------------------------------------------------------------------- -bool BoardReaderMIMOSIS::LookUpRawFile() { - // Try to open the next rawdata file - - // If the stream is open, close it - if( fRawFileStream.is_open() ) { - CloseRawFile(); - fCurrentFileNumber++; - } - - // Try to go to the next file, if any are left - if( fCurrentFileNumber < fListInputFileNames.size() ) { - if(fDebugLevel) cout << " --> BoardReaderMIMOSIS " << fBoardNumber << " New file to read " << fCurrentFileNumber << " < " << fListInputFileNames.size() << "." << endl; - return OpenRawFile(); - } - else { // Otherwise no more file, end the reading - cout << " -+-+- INFO BoardReaderMIMOSIS " << fBoardNumber << ": No more files to read " << fCurrentFileNumber << " >= " << fListInputFileNames.size() << " closing!" << endl; - fNoMoreFile = true; - return false; - } - -} - -// -------------------------------------------------------------------------------------- -bool BoardReaderMIMOSIS::OpenRawFile() { - // Open the next rawdata file - - fRawFileStream.open( fListInputFileNames[fCurrentFileNumber]); - bool b = fRawFileStream.fail(); - if (b == 0) { - cout << " -+-+- INFO BoardReaderMIMOSIS " << fBoardNumber << ": File " << fListInputFileNames[fCurrentFileNumber] << " opened." << endl; - } - else { - cout << " -/-/- INFO BoardReaderMIMOSIS " << fBoardNumber << ": File " << fListInputFileNames[fCurrentFileNumber] << " not opened, rc = " << b << "." << endl; - } - return !b; - -} - -// -------------------------------------------------------------------------------------- -bool BoardReaderMIMOSIS::CloseRawFile() { - // Closes a File of a Run - - fRawFileStream.close(); - bool b = fRawFileStream.fail(); - if (b == 0) - cout << " -+-+- INFO BoardReaderMIMOSIS " << fBoardNumber << ": File " << fCurrentFileNumber << " closed " << endl; - else - cout << " -/-/- INFO BoardReaderMIMOSIS " << fBoardNumber << ": File " << fCurrentFileNumber << " not closed, rc = " << b << "(eof="<< fRawFileStream.eof() << ", bad="<< fRawFileStream.bad() <<"." << endl; - return b; - -} - // -------------------------------------------------------------------------------------- bool BoardReaderMIMOSIS::HasData( ) { @@ -1273,6 +1227,7 @@ bool BoardReaderMIMOSIS::HasData( ) { // -+-+- Initialization bool eventOK = true; // we start with a good event by default + // fCurrentEvent = NULL; // Allow to know wether data are correct fListOfTriggers.clear(); // and clear the vectors fListOfTimestamps.clear(); @@ -1285,9 +1240,9 @@ bool BoardReaderMIMOSIS::HasData( ) { } if( DecodeNextEvent() ) { - + if(fDebugLevel>1) PrintEventHeader(); - + fCurrentEvent = new BoardReaderEvent( fCurrentEventNumber, fBoardNumber, 0, &fListOfPixels); // run number set to 0 for now fCurrentEvent->SetListOfTriggers( &fListOfTriggers); fCurrentEvent->SetListOfFrames( &fListOfFrames); @@ -1310,6 +1265,7 @@ bool BoardReaderMIMOSIS::HasData( ) { return eventOK; } + //------------------------------------------+----------------------------------- bool BoardReaderMIMOSIS::DecodeNextEvent() { // THIS IS THE MAIN PLACE FOR ROMA's WORK! @@ -1318,12 +1274,16 @@ bool BoardReaderMIMOSIS::DecodeNextEvent() { // there is still something to read in the current file // or if the next file should be open (LookUpRawFile()) // or if there is nothing to read anymore ==> ready = false + // This method operates in TriggerMode: 0 => Send all frames to be decoded in DecodeFrame() method + // ---------------------if TriggerMode: 1 => Send fFramesPerTrigger starting at fTriggerOffset from TriggerID to DecodeFrame() method SInt32 VRet; // Error code returned by functions ( 0 => ok, < 0 => error ) - - + MIS1__TBtAcqRawRec* VPtAcq ; // Pointer to current Acq - + MIS1__TBtAcqRawHead* VPtAcqHead; // Pointer to current Acq Header + MIS1__TBtTrigRec* VGPtTrig; // Pointer to triggers of current Acquisition + + // UInt32 VAcqW16ASz; // 26/05/2021 V1.1 // Size of AcqW16A record = Flex RIO data reoorganized // Contains Acq data reordered in order to have one array of W16 for each MSis1 @@ -1335,47 +1295,119 @@ bool BoardReaderMIMOSIS::DecodeNextEvent() { // Size of AcqDec record = Decoded acquisition // Contains decoded pixels + info on Acq, Frames : reggions nb, fired pixels nb, etc ... + SInt32 nbTrg; UInt8 VResReachEndOfRun = (UInt8) fReachEndOfRun; - // Decoding status bool ready = false; - if(fDebugLevel>2) printf( " BoardReaderMIMOSIS board %d::DecodeNextEvent() trying with event %d\n", fBoardNumber, fCurrentEventNumber); - + if(fDebugLevel>1) printf( " BoardReaderMIMOSIS board %d::DecodeNextEvent() trying with event %d (current Acq=%d, frame=%d)\n", fBoardNumber, fCurrentEventNumber, fCurrentAcqNumber, fCurrentFrameNumber); + + switch (fTriggerMode) { + case 0: + // Check if first Acquisition or if CurrentFrameNumber less than fnbFrPerAcq; fnbFrPerAcq is not mandatory equal to MIS1__BT_VRS_MAX_FR_NB_PER_ACQ if ((fCurrentFrameNumber % fnbFrPerAcq == 0) || (fCurrentFrameNumber % MIS1__BT_VRS_MAX_FR_NB_PER_ACQ == 0)) { - + if (fisfirstAcq == true) { - cout << "Getting the pointer for the first acquisition " << endl; - VPtAcq = APP_VGPtRunRead->FAcqFirst ( 0 /* ChkAcqHead */, 1 /* PrintAcqHead */ ); + if(fDebugLevel>1) cout << "BoardReaderMIMOSIS Getting the pointer for the first acquisition " << endl; + + VPtAcq = APP_VGPtRunRead->FAcqFirst ( 0 /* ChkAcqHead */, 0 /* PrintAcqHead */ ); + + if (! isAcqSafe()){ + printf(" The Acquisition %d is risky due to different number of frames in sensors \n", fCurrentAcqNumber); + fTruncatedAcqCounter ++; + } + else fisAcqSafe = true; + fCurrentAcqNumber ++; fisfirstAcq = false; fCurrentFrameNumber = 0; // ZE 2021/06/04 - } + + } + else { - printf (" Changing to NextAcq % d since fCurrentFrameNumber = % d \n", fCurrentAcqNumber + 1, fCurrentFrameNumber); - VPtAcq = APP_VGPtRunRead->FAcqNext ( 0 /* ChkAcqHead */, 1 /* PrintAcqHead */, &VResReachEndOfRun ); - fCurrentAcqNumber ++; - fCurrentFrameNumber = 0; // ZE 2021/06/04 + //Check if the current Acquisition was truncated before accessing and processing next one. + + if(fDebugLevel>1) + printf (" BoardReaderMIMOSIS Changing to NextAcq % d since fCurrentFrameNumber = % d \n", fCurrentAcqNumber + 1, fCurrentFrameNumber); + + VPtAcq = APP_VGPtRunRead->FAcqNext ( 0 /* ChkAcqHead */, 0 /* PrintAcqHead */, &VResReachEndOfRun ); + + if (! isAcqSafe()){ + printf(" The Acquisition %d is risky due to different number of frames in sensors \n", fCurrentAcqNumber); + fTruncatedAcqCounter ++; + } + else fisAcqSafe = true; + + fCurrentAcqNumber ++; + fCurrentFrameNumber = 0; // ZE 2021/06/04 } } - fReachEndOfRun = (int) VResReachEndOfRun; - - if(fDebugLevel>1) { - printf("fReachEndOfRun = %d ", fReachEndOfRun); - printf("\n"); + break; + + case 1 : + + if (fCurrentTriggerNumber == fnbTrg) { + + if (fisfirstAcq == true) { + + // Added by Z.E for COSY BEAM TEST to monitor the numbers of triggers + // cout << "COSY " << fCurrentAcqNumber << " " << fnbTrg << endl; + //cout << "Acquistion number : " << fCurrentAcqNumber << " --> Number of triggers : " << fnbTrg << endl; + + if(fDebugLevel>1) + cout << "BoardReaderMIMOSIS Getting the pointer for the first acquisition " << endl; + + VPtAcq = APP_VGPtRunRead->FAcqFirst ( 0 /* ChkAcqHead */, 0 /* PrintAcqHead */ ); + + if (! isAcqSafe()){ + printf(" The Acquisition %d is risky due to different number of frames in sensors \n", fCurrentAcqNumber); + fTruncatedAcqCounter ++; + } + else fisAcqSafe = true; + + fCurrentAcqNumber ++; + fCurrentTriggerNumber = 0; + fFramesCounterInTrigger= 0; + fisfirstAcq = false; + } + else { + //cout << "Acquistion number : " << fCurrentAcqNumber << " --> Number of triggers : " << fnbTrg << endl; + //cout << "COSY " << fCurrentAcqNumber << " " << fnbTrg << endl; + //Check if the current Acquisition was truncated before accessing and processing next one. + + if(fDebugLevel>1) + printf (" BoardReaderMIMOSIS Changing to NextAcq % d since fCurrentTriggerNumber = % d \n", fCurrentAcqNumber + 1, fCurrentTriggerNumber); + //printf(" Getting Pointer for Next Acq : %d \n", fCurrentAcqNumber); + + VPtAcq = APP_VGPtRunRead->FAcqNext ( 0 /* ChkAcqHead */, 0 /* PrintAcqHead */, &VResReachEndOfRun ); + + if (! isAcqSafe()){ + printf(" The Acquisition %d is risky due to different number of frames in sensors \n", fCurrentAcqNumber); + fTruncatedAcqCounter ++; + } + else fisAcqSafe = true; + + fCurrentAcqNumber ++; + fCurrentTriggerNumber = 0; + fFramesCounterInTrigger= 0; + + } + } + break; } - + // Get a pointer for the first Acquisition APP_VGPtAcqSrc = (MIS1__TBtAcqRawRec*) APP_VGPtRunRead->FAcqGetPt (); + if ( APP_VGPtAcqSrc == NULL ) { printf ( "\n" ); - printf ( "Get a pointer on first Acq of run has failed ! \n" ); + printf ( "WARNING: BoardReaderMIMOSIS Get a pointer on first Acq of run has failed ! \n" ); printf ( "\n" ); return (-1); } @@ -1384,11 +1416,12 @@ bool BoardReaderMIMOSIS::DecodeNextEvent() { if(fDebugLevel>1) { printf ( "\n" ); - printf ( "Get a pointer on first Acq of run done ! \n" ); + printf ( " BoardReaderMIMOSIS Get a pointer on first Acq of run done ! \n" ); printf ( "\n" ); } } + /* if ( 1 ) { memset ( APP_VGPtAcqW16A, 0, sizeof (MIS1__TBtAcqW16A) ); @@ -1402,7 +1435,7 @@ bool BoardReaderMIMOSIS::DecodeNextEvent() { if ( VRet < 0 ) { - printf ( "Filling AcqW16A failed ! \n" ); + printf ( "WARNING: BoardReaderMIMOSIS Filling AcqW16A failed ! \n" ); printf ( "\n" ); return (-1); @@ -1410,94 +1443,142 @@ bool BoardReaderMIMOSIS::DecodeNextEvent() { else if(fDebugLevel>1) { printf ( "\n" ); - printf ( "Filling AcqW16A done ! \n" ); + printf ( " BoardReaderMIMOSIS Filling AcqW16A done ! \n" ); printf ( "\n" ); } - // ZE 2021/06/02, just for test. Has to write a method specific to TAF - //VRet = MIS1__BT_FAcqDecPrintGen ( APP_VGPtAcqDec, 0 /* MSIsId 0 to 5 */, 0 /* PrintMode */ ); - - // Gilles's method rewritten for TAF in DecodeFrame() method - //VRet = MIS1__BT_FAcqDecPrintPix ( APP_VGPtAcqDec, 0 /* MSIsId 0 to 5 */, ViFr, VPrintMaxPix, 0 /* PrintMode */ ); + if (fTriggerMode == 0) { + fNbMergedFrame ++; + DecodeFrame (); + } + + else { + + VPtAcqHead = &(APP_VGPtAcqW16A->AcqRawHead); + VGPtTrig = &(VPtAcqHead->Trigs); + fnbTrg = VPtAcqHead->Trigs.TrigNb; + // cout << "Acquistion number : " << fCurrentAcqNumber << " --> Number of triggers : " << VPtAcqHead->Trigs.TrigNb << endl; + + fCurrentFrameNumber = (VGPtTrig->ATrig[fCurrentTriggerNumber])/100 + fFramesCounterInTrigger + fTriggerOffset; + if (fDebugLevel > 1) + VRet = MIS1__BT_FTrigRecPrint ( fnbTrg, VGPtTrig); // Function described in line file msis1_data.c, line 1531 + + fNbMergedFrame ++; DecodeFrame(); - - if (fReachEndOfRun > 0){ + } + + if (VResReachEndOfRun > 0) { ready = false; - printf(" End Of Run Reached --> fReachEndOfRun = % d \n", fReachEndOfRun); + printf(" End Of Run Reached --> VResReachEndOfRun = % d \n", VResReachEndOfRun); printf(" Number of processed events/acquisitions : %d \n ", fCurrentAcqNumber ); } - - + return ready; - + } //------------------------------------------+----------------------------------- -bool BoardReaderMIMOSIS::DecodeFrame() { - - SInt32 VRet; - - MIS1__TPixXY VPix; - SInt32 VPrintMaxPix = 100; - - // ZE 2021/06/02. This is Gilles's standalone methode. Had to write a method specific to TAF. - //VRet = MIS1__BT_FAcqDecPrintPix ( APP_VGPtAcqDec, 0 /* MSIsId 0 to 5 */, frameID, VPrintMaxPix, 0 /* PrintMode */ ); - - /* - fListOfTriggers.push_back( fCurrentEventNumber); - fListOfTimestamps.push_back( 0); - fListOfFrames.push_back( fCurrentEventNumber); - */ - // ZE 2021/06/03. Loop over sensors to decode pixels of current frame. - for ( int MSisId = 0; MSisId < fNSensors; MSisId++ ) { +void BoardReaderMIMOSIS::DecodeFrame() { - - VRet = MIS1__BT_FBtDecodeFr ( APP_VGPtAcqW16A, APP_VGPtAcqDec, MSisId, fCurrentFrameNumber, 0 /* MeasExecTime */, 0 /* PrintLvl */ ); - - if ( VRet < 0 ) { - printf ( "Decoding MSis data failed for Sensor : %d and FrameNb : %d \n", MSisId, fCurrentFrameNumber ); - printf ( "\n" ); - fBadDecFrameCounter ++; - return (-1); - } - VRet = MIS1__BT_FAcqDecPrintGen ( APP_VGPtAcqDec, MSisId, 0 /* PrintMode */ ); - - if ( VRet < 0 ) { - printf ( "Printing info of decoded Acq failed for sensor : % d :-( \n", MSisId ); - printf ( "\n" ); - return (-1); + // This method enables to decode the frame of the current considered acquisition + // If fEventBuildingBoardMode : 0 => All the frames are decoded. + // If fEventBuildingBoardMode : 1 => Only safe frames are decoded. + // If fTriggerMode : 0, all the frames are decoded. + // If fTriggerMode : 1, fFramesPerTrigger starting at fTriggerOffset from TriggerID are decoded. + SInt32 VRet; + + + MIS1__TPixXY VPix; + + fFrameCount ++; + + NbFiredPixPerFrame[fCurrentFrameNumber] = 0; + + if (fDebugLevel > 1) + printf("Decoding Frame %d in Acquisition %d associated to trigger number %d from %d triggers\n", fCurrentFrameNumber, fCurrentAcqNumber, fCurrentTriggerNumber, fnbTrg); + for ( int MSisId = 0; MSisId < fNSensors; MSisId++ ) { + + VRet = MIS1__BT_FBtDecodeFr ( APP_VGPtAcqW16A, APP_VGPtAcqDec, MSisId, fCurrentFrameNumber, 0 /* MeasExecTime */, 0 /* PrintLvl */ ); + + if ( VRet < 0 ) { + printf ( "WARNING: Decoding MSis data failed for Sensor : %d and FrameNb : %d in Acquisition : %d \n", MSisId, fCurrentFrameNumber, fCurrentAcqNumber ); + printf ( "\n" ); + fBadDecFrameCounter ++; + // return (-1); } - - // Decode pixels only for frames with FiredPixNb > 0 - if ( APP_VGPtAcqDec->ResAAFrHead[MSisId][fCurrentFrameNumber].FiredPixNb > 0 ) { - - if (fDebugLevel > 3) { - if (fCurrentFrameNumber >= APP_VGPtAcqDec->ResAFrNb[MSisId]) //ZE 2021/06/04 Check if frameID > nbFramesPerAcq - - printf("fCurrentFrameNumber %d Exceeded the number of frames %d for sensor %d \n ", fCurrentFrameNumber, APP_VGPtAcqDec->ResAFrNb[MSisId], MSisId); - printf(" nbFiredPix : %.4d in AcqID : %.4d - frID : %.4d - SensorID : %.4d \n ", APP_VGPtAcqDec->ResAAFrHead[MSisId][fCurrentFrameNumber].FiredPixNb, fCurrentAcqNumber, fCurrentFrameNumber, MSisId ); - } - - for ( int ViPix = 0; ViPix < APP_VGPtAcqDec->ResAAFrHead[MSisId][fCurrentFrameNumber].FiredPixNb; ViPix++ ) { - - VPix = APP_VGPtAcqDec->ResAAAFrPix[MSisId][fCurrentFrameNumber][ViPix]; - - if (fDebugLevel > 3) { - printf(" Pixel [%.4d] : Y = %.4d - X = %.4d - frameID = %d \n ", ViPix, VPix.C.y, VPix.C.x, fCurrentFrameNumber ); - printf(" \n "); - } - AddPixel( MSisId, 1, VPix.C.y ,VPix.C.x ); + + // Z.E 2021/10/11 print adress of frame header + /* + if (!isAcqSafe()){ + printf("##################################################################################\n"); + printf("Acq ID : %d Frame ID : %d Sensor ID : %d \n", fCurrentAcqNumber, fCurrentFrameNumber, MSisId ); + printf("Address in hexadecimal : %x", (APP_VGPtAcqDec->ResAAFrHead[MSisId][fCurrentFrameNumber]).MSisFrHead.F.W0H ); + printf(" %x", (APP_VGPtAcqDec->ResAAFrHead[MSisId][fCurrentFrameNumber]).MSisFrHead.F.FC3 ); + printf(" %x", (APP_VGPtAcqDec->ResAAFrHead[MSisId][fCurrentFrameNumber]).MSisFrHead.F.FC2 ); + printf(" %x", (APP_VGPtAcqDec->ResAAFrHead[MSisId][fCurrentFrameNumber]).MSisFrHead.F.FC1 ); + printf(" %x", (APP_VGPtAcqDec->ResAAFrHead[MSisId][fCurrentFrameNumber]).MSisFrHead.F.FC0 ); + printf("\n"); + } + */ + // Decode pixels only for frames with FiredPixNb > 0 and not truncated acquisition + if (( APP_VGPtAcqDec->ResAAFrHead[MSisId][fCurrentFrameNumber].FiredPixNb > 0) && (isAcqSafe())) { + // if ( APP_VGPtAcqDec->ResAAFrHead[MSisId][fCurrentFrameNumber].FiredPixNb > 0) { + NbFiredPixPerFrame[fCurrentFrameNumber] += APP_VGPtAcqDec->ResAAFrHead[MSisId][fCurrentFrameNumber].FiredPixNb; // ZE 2021/10/10 Increment the number of fired pixels per frame + if (fDebugLevel > 3) { + if (fCurrentFrameNumber >= APP_VGPtAcqDec->ResAFrNb[MSisId]) //ZE 2021/06/04 Check if frameID > nbFramesPerAcq + + printf("fCurrentFrameNumber %d Exceeded the number of frames %d for sensor %d \n ", fCurrentFrameNumber, APP_VGPtAcqDec->ResAFrNb[MSisId], MSisId); + printf(" nbFiredPix : %.4d in AcqID : %.4d - frID : %.4d - SensorID : %.4d \n ", APP_VGPtAcqDec->ResAAFrHead[MSisId][fCurrentFrameNumber].FiredPixNb, fCurrentAcqNumber, fCurrentFrameNumber, MSisId ); + } - }// End of Loop over pixels in a sensor for the current frame - - } // End of if condition : FiredPixNb > 0 + for ( int ViPix = 0; ViPix < APP_VGPtAcqDec->ResAAFrHead[MSisId][fCurrentFrameNumber].FiredPixNb; ViPix++ ) { + + VPix = APP_VGPtAcqDec->ResAAAFrPix[MSisId][fCurrentFrameNumber][ViPix]; + + if (fDebugLevel > 3) { + // printf(" Pixel [%.4d] : Y = %.4d - X = %.4d - frameID = %d \n ", ViPix, VPix.C.y, VPix.C.x, fCurrentFrameNumber ); + printf(" Pixel [%.4d] : X = %.4d - Y = %.4d - frameID = %d \n ", ViPix, VPix.C.x, VPix.C.y, fCurrentFrameNumber ); + } + + AddPixel( MSisId, 1, VPix.C.y ,VPix.C.x ); + + }// End of Loop over pixels in a sensor for the current frame + + } // End of if condition : FiredPixNb > 0 + + + }// End of Loop over sensors + + if (fTriggerMode == 0) + fCurrentFrameNumber ++ ; + else + { + fFramesCounterInTrigger ++; + if (fFramesCounterInTrigger % fFramesPerTrigger == 0){ + fCurrentTriggerNumber ++; + fTriggerCount ++; + fFramesCounterInTrigger = 0; + } + } + + if ((fCurrentFrameNumber 0 ) && (fNbMergedFrame < fFramesToMerge) && isAcqSafe()) { + if (fDebugLevel > 3) { + printf("----------------------------------\n"); + printf("Number of Fired Pixels in current frame %d : %d \n",fCurrentFrameNumber-1, NbFiredPixPerFrame[fCurrentFrameNumber-1]); + printf("Merging frame %d into frame %d \n", fCurrentFrameNumber, fCurrentFrameNumber - 1); + } + fNbMergedFrame ++; + if (fDebugLevel > 3) + printf("Number of Merged Frames : %d \n",fNbMergedFrame); + DecodeFrame(); - }// End of Loop over sensors + } + else + fNbMergedFrame = 0; - fCurrentFrameNumber ++ ; - + } @@ -1543,17 +1624,57 @@ void BoardReaderMIMOSIS::SkipNextEvent() { } +// -------------------------------------------------------------------------------------- +// ZE, 2021/06/15 +bool BoardReaderMIMOSIS::isAcqSafe() { + // This method tests whether the acquisition is safe (i.e not truncated) + // This applies to Acquisition with the same number of frames in sensors + // if fEventBuildingMode = 0, all acquisitions are considered and no risk test performed. + SInt32 VRet; + fisAcqSafe = true; + UInt8 FrIdInDs = APP_VGPtAcqDec->ResAAFrHead[0][0].MSisFrHead.F.FC0; + + if (fEventBuildingMode == 1){ // fEventBuildingMode = 0, consider all acquisitions ; fEventBuildingMode = 1, keep only safe acquisitions + for (int MSisId = 0; MSisId < fNSensors; MSisId ++){ + VRet = MIS1__BT_FBtDecodeFr ( APP_VGPtAcqW16A, APP_VGPtAcqDec, MSisId, -1, 0 /* MeasExecTime */, 0 /* PrintLvl */ ); + if (MSisId > 0){ + if (APP_VGPtAcqDec->ResAFrNb[MSisId] != APP_VGPtAcqDec->ResAFrNb[MSisId-1]) // ZE, 2021/10/12 Acqusition is safety when all the sensors have the same number of frames + { + // printf(" Acquisition %d is risky due to different number of frames in sensors \n", fCurrentAcqNumber); + fisAcqSafe = false; + } + /* + if ((APP_VGPtAcqDec->ResAAFrHead[MSisId][0].MSisFrHead.F.FC0 != FrIdInDs)) + { + // printf(" Acquisition %d is risky due to shifted frames \n", fCurrentAcqNumber); + fisAcqSafe = false; + } + */ + } + } // End of loop over sensors + } // End of test over EventBuilding Mode + return fisAcqSafe; +} + + // -------------------------------------------------------------------------------------- void BoardReaderMIMOSIS::PrintStatistics(ostream &stream) { // Print statistics on all the events read by this board - + for (int i = 0; i < 1000; i ++){ + // cout << "FiredPixels in frame " << i << " : " << NbFiredPixPerFrame[i]; + // cout << NbFiredPixPerFrame[i]; + // cout << endl; + } + stream << "***********************************************" << endl; stream << " Board MIMOSIS " << fBoardNumber << " found:" << endl; stream << fTriggerCount << " triggers read overall," << endl; stream << fCurrentEventNumber << " events in total," << endl; stream << fNEventsWithOverflow << " events with an overflow (veto overflow " << fVetoOverflow << ")," << endl; stream << fFrameCount << " frames read overall " << endl; - stream << fBadDecFrameCounter << " frames with decoding errors. " << endl; + stream << fBadDecFrameCounter << " frames with decoding errors " << endl; + stream << fTruncatedAcqCounter << " Truncated Acquisitions " << endl; + stream << fCurrentAcqNumber << " Total Acquisitions Number. " << endl; stream << "***********************************************" << endl; } diff --git a/code/src/DAcq.cxx b/code/src/DAcq.cxx index 28fcdcf..4f0284e 100644 --- a/code/src/DAcq.cxx +++ b/code/src/DAcq.cxx @@ -41,6 +41,7 @@ // Last Modified: JB 2018/02/11 InitTimeRefInfo -> updated 2018/03/21 // Last Modified: JB 2020/02/17 Introduction of vetoPixdl for VMEBoardreader // Last Modofies: JB 2021/05/01 Adding BoardReaderMIMOSIS +// Last Modified: ZE 2021/11/22 AddingMergingFrameMode //*-- Modified : IG //*-- Copyright: RD42 @@ -478,18 +479,18 @@ DAcq::DAcq(DSetup& c) // -+-+- MIMOSIS modules case 13: - //cout << "ZIAD --> Module Type : " << 13 << endl; fUseTimestamp[mdt-1][mdl-1] = kFALSE; fMSIS[iModule] = new BoardReaderMIMOSIS( iModule, - fc->GetRunPar().DataPath, // ZE 2021/06/01 - fRunNumber, //ZE 2021/05/28 - fc->GetModulePar(mdt).Inputs, - fc->GetAcqPar().TriggerMode, - fc->GetModulePar(mdt).EventBuildingBoardMode, - fc->GetAcqPar().EventHeaderSize, - fc->GetAcqPar().EventTrailerSize, - fc->GetAcqPar().BinaryCoding); - + fc->GetRunPar().DataPath, + fRunNumber, + fc->GetModulePar(mdt).Inputs, + fc->GetAcqPar().TriggerMode, + fc->GetAcqPar().TriggerOffset, + fc->GetAcqPar().FramesPerTrigger, + // fc->GetAcqPar().MergingFrameMode, + fc->GetAcqPar().FramesToMerge, //Added by ZE on 2021/11/22 + fc->GetModulePar(mdt).EventBuildingBoardMode, + fc->GetAcqPar().BinaryCoding); fMSIS[iModule]->SetDebugLevel( fDebugAcq); /* fMSIS[iModule]->SetVetoPixel( fc->GetRunPar().NoiseRun); diff --git a/code/src/DCut.cxx b/code/src/DCut.cxx index 6ddaad5..a884e27 100644 --- a/code/src/DCut.cxx +++ b/code/src/DCut.cxx @@ -70,7 +70,7 @@ DCut::DCut(DPlane& aPlane) if (fDebugCut) cout << " fClusterLimit=" << (*fClusterLimit)(0) << ", " << (*fClusterLimit)(1) << endl; // slightly modified JB 2009/09/23 - fStripsInClusterArea = ceil( ((*fClusterLimit)(0)*2./tPitch(0)+1) * ((*fClusterLimit)(1)*2./tPitch(1)+1) ); + fStripsInClusterArea = ceil( ((*fClusterLimit)(0)*2./tPitch(0)+1) * ((*fClusterLimit)(1)*2./tPitch(1)+1) ); // fStripsInClusterArea = (Int_t)( ((*fClusterLimit)(0)*2./tPitch(0)) * ((*fClusterLimit)(1)*2./tPitch(1)) );//VR 2014/07/12 if (fDebugCut) cout << " fStripsInClusterArea= " << fStripsInClusterArea << endl; diff --git a/code/src/DEvent.cxx b/code/src/DEvent.cxx index d361150..343c6f2 100644 --- a/code/src/DEvent.cxx +++ b/code/src/DEvent.cxx @@ -258,6 +258,18 @@ void DEvent::AddTransparentPlane(DPlane& aPlane, DTrack& aTrack, DHit& aHit, Boo } +// Added ZE 2021/09/28 +//______________________________________________________________________________ +// +void DEvent::AddTransparentPlane(DPlane& aPlane, DTrack& aTrack, DTracker &aTracker) +{ + + TClonesArray &tData = *fT1Planes; + + new(tData[fT1PlanesN++]) DTransparentPlane(aPlane, aTrack, aTracker); + +} + //______________________________________________________________________________ // void DEvent::SetHeader(const Int_t aNEvent, @@ -546,14 +558,6 @@ DAuthenticPlane::DAuthenticPlane(DPlane& aPlane, Int_t aNEvent) : TObject() } -//______________________________________________________________________________ -// -DTransparentPlane::DTransparentPlane(DPlane& aPlane, DTrack& aTrack, DTracker &aTracker) : TObject() -{ - - DTransparentPlane( aPlane, aTrack, *(aPlane.GetPrincipalHit()), kFALSE, aTracker); - -} //______________________________________________________________________________ // DTransparentPlane::DTransparentPlane(DPlane& aPlane, DTrack& aTrack, DHit& aHit, Bool_t hitAssociated, DTracker &aTracker) : TObject() @@ -627,8 +631,9 @@ DTransparentPlane::DTransparentPlane(DPlane& aPlane, DTrack& aTrack, DHit& aHit, // Compare position with nearest hit reconstructed // Hit number is set <0 if hit was used to fit track + if( &aHit ) { // JB 2009/06/26 - if(fDebugEvent) printf(" DTransparentPlane::DTransparentPlane hit pos u,v=(%.1f, %.1f), number %d from %d, with %d strips, charge = %f, qseed = %f\n", aHit.GetPositionUhit(), aHit.GetPositionVhit(), aHit.GetNumber(), aPlane.GetHitsN(), aHit.GetStripsInCluster(), aHit.GetClusterPulseSum(), aHit.GetPulseHeight(0)); + if(fDebugEvent) printf(" DTransparentPlane::DTransparentPlane hit pos u,v=(%.1f, %.1f), number %d from %d, with %d strips, charge = %f, qseed = %f\n", aHit.GetPositionUhit(), aHit.GetPositionVhit(), aHit.GetNumber(), aPlane.GetHitsN(), aHit.GetStripsInCluster(), aHit.GetClusterPulseSum(), aHit.GetPulseHeight(0)); Tud = aHit.GetPositionUhit() - Tu; Tvd = aHit.GetPositionVhit() - Tv; ThN = aPlane.GetHitsN(); @@ -725,3 +730,75 @@ DTransparentPlane::DTransparentPlane(DPlane& aPlane, DTrack& aTrack, DHit& aHit, } + +//______________________________________________________________________________ +// +DTransparentPlane::DTransparentPlane(DPlane& aPlane, DTrack& aTrack, DTracker &aTracker) : TObject() +{ + + // Basic storage of a track associated with a hit. + // With this method, the track is not systematically associated to the so called "Principal" hit. + // + // JB, September 2007 + // Modified to get rid of call to DStrip class, JB 2009/05/12 and 2009/06/26 + // Modified to store # hits in the track, JB 2009/09/08 + // Modified for readout conditional variables, JB 2011/06/17 + // Modified to indicate if hit is associated to track or not, JB 2014/08/29 + // Modified to replace track by subtrack if any, JB 2014/12/15 + + TString tPurpose = aPlane.GetPlanePurpose() ; + + Tpk = aPlane.GetPlaneNumber(); + TtN = aPlane.GetTracker()->GetTracksN(); // JB 2009/06/26 + if(fDebugEvent) printf(" DTransparentPlane::DTransparentPlane adding track %d, with plane %d\n", aTrack.GetNumber(), aPlane.GetPlaneNumber()); + + // track information + Ttk = aTrack.GetNumber(); + TtHn = aTrack.GetHitsNumber(); // JB 2009/09/08 + // Consider the subtrack rather than the full track if it exists + DR3 trackPos; + DTrack *aSubTrack; + if( aTracker.GetNPlanesForSubTrack()>1 ) { + aSubTrack = (DTrack*)(aTracker.GetSubTrack( Ttk)); + trackPos = aSubTrack->Intersection(&aPlane); // subtrack position in device frame (uvw) +// DR3 fullTrackPos = aTrack.Intersection(&aPlane); +// printf(" Subtrack %d pos (%.2f, %.2f) versus full track %d pos (%.2f, %.2f)\n", aSubTrack->GetNumber(), trackPos(0), trackPos(1), aTrack.GetNumber(), fullTrackPos(0), fullTrackPos(1)); + } + else { + trackPos = aTrack.Intersection(&aPlane); // track position in device frame (uvw) + } + Tu = trackPos(0); + Tv = trackPos(1); + TDOX = aTrack.GetDeltaOrigineX() ; + TDOY = aTrack.GetDeltaOrigineY() ; + Tx = aTrack.GetLinearFit().GetOrigin()(0); + Ty = aTrack.GetLinearFit().GetOrigin()(1); + Tz = aTrack.GetLinearFit().GetOrigin()(2); + Tdx = aTrack.GetLinearFit().GetSlopeZ()(0); + Tdy = aTrack.GetLinearFit().GetSlopeZ()(1); + Tchi2 = aTrack.GetChiSquare(); + Tchi2u = aTrack.GetChiSquareU(); + Tchi2v = aTrack.GetChiSquareV(); + TvertexU = aTrack.GetVertexX(); // LC 201212/17 + TvertexV = aTrack.GetVertexY(); + TvertexW = aTrack.GetVertexZ(); + + if(fDebugEvent) printf(" DTransparentPlane::DTransparentPlane pos u,v=(%.1f, %.1f), x,y=(%.1f, %.1f), slope=(%.3f, %.3f), chi2=%f\n", Tu, Tv, Tx, Ty, Tdx, Tdy, Tchi2); + + DR3 tSlopeInPlane; + tSlopeInPlane = aPlane.TrackerToPlane( aTrack.GetLinearFit().GetSlopeZ() ); + Tdu = tSlopeInPlane(0); + Tdv = tSlopeInPlane(1); + + //RDM250909 begin initialization + + Tud = 9999.; + Tvd = 9999.; + ThN = 0; + Thk = 0; + TsN = 0; + Tqc = 0; + Tq0 = 0; + //RDM250909 end initialization + +} diff --git a/code/src/DHit.cxx b/code/src/DHit.cxx index 6fc859c..6a4de4d 100644 --- a/code/src/DHit.cxx +++ b/code/src/DHit.cxx @@ -128,7 +128,7 @@ DHit::DHit(DR3 &aPosition, DPlane& aPlane, Int_t aHitNumber) fStoNover2 = 0; // MB/12/11/2010 fIsFromPreviousEvent = 0;// VR 2014.08.28 fTimestamp = 0; // JB 2015/05/25 - } + } // Hit Monte Carlo fIfMonteCarlo = 0; @@ -1975,10 +1975,10 @@ Bool_t DHit::Analyse( Int_t aPixelIndexInList, std::vector *aListOfPixe // Last Modified, JB 2013/11/08 store initial seed information // Last Modified, VR 2014/07/12 Condition to look for a new seed change : cogRow type Int_t -> Double_t // Modified: JB 2015/05/26 to introduce timestamps and TimeLimit - + + if(fDebugHit>2) cout << "DHit:: Starting Analyze of potential hit nb " << fHitNumber << endl; fFound = kFALSE; // JB 2009/05/22 fPSeed = aListOfPixels->at( aPixelIndexInList); - DPixel *aNeighbour; DPixel *aPixel=NULL; Bool_t pixelTwice = kFALSE; // test if a pixel is present twice in the neighbour list @@ -1987,9 +1987,8 @@ Bool_t DHit::Analyse( Int_t aPixelIndexInList, std::vector *aListOfPixe Int_t tStripIndex; Int_t tStripsInClusterPossible = 0; // remove a warning //Int_t tPixelIndexList[500]; - Int_t tTimeLimit = fPlane->GetTimeLimit(); // 2015/05/26 - + fPositionHitCG->Zero(); // clear the position fPositionHitEta->Zero(); fPositionHitEta22->Zero(); // JB 2010/12/8 @@ -1999,7 +1998,7 @@ Bool_t DHit::Analyse( Int_t aPixelIndexInList, std::vector *aListOfPixe fSeedU = fPSeed->GetPosition()(0); fSeedV = fPSeed->GetPosition()(1); fIndexSeed = fPSeed->GetPixelIndex(); - + Int_t seedRow = fPSeed->GetPixelLine(); Int_t seedCol = fPSeed->GetPixelColumn(); Double_t cogRow = fPSeed->GetPixelLine(); //VR 2014/07/12 @@ -2019,6 +2018,7 @@ Bool_t DHit::Analyse( Int_t aPixelIndexInList, std::vector *aListOfPixe fClusterNoiseAverage = (fPSeed->GetNoise())*(fPSeed->GetNoise()); // => so it's only a seed strip in the beginning fStripsInClusterFound = 1; fPSeed->SetFound(kTRUE); + if (fStripsInClusterDemanded >0) { // exact number demanded tStripsInClusterPossible = fStripsInClusterDemanded; @@ -2042,16 +2042,26 @@ Bool_t DHit::Analyse( Int_t aPixelIndexInList, std::vector *aListOfPixe fStripDistanceU[0] = 0.; // distance seed to seed = 0. fStripDistanceV[0] = 0.; // distance seed to seed = 0. fStoNover2 = 0; // MB/12/11/2010 + //=============== // associate neighbouring pixels to seed one //=============== - if(fDebugHit>1) printf(" DHit:Analyse seed pixel index %d (%d in list, r%d, c%d) (q=%f, time=%d) with possibly %d neighbours\n", fIndexSeed, aPixelIndexInList, fPSeed->GetPixelLine(), fPSeed->GetPixelColumn(), fPSeed->GetPulseHeight(), fPSeed->GetTimestamp(), tStripsInClusterPossible); + if(fDebugHit>1) printf(" DHit:Analyse hit nb %d with seed pixel index %d (%d in list, r%d, c%d) (q=%f, time=%d) with possibly %d neighbours\n", fHitNumber, fIndexSeed, aPixelIndexInList, fPSeed->GetPixelLine(), fPSeed->GetPixelColumn(), fPSeed->GetPulseHeight(), fPSeed->GetTimestamp(), tStripsInClusterPossible); tStripIndex = 1; // start with the first neighbour, in the geometric ordered neighbourhood, avoid 0 because it is the seed itself! for (Int_t iPix = 0; iPix < (Int_t)aListOfPixels->size(); iPix++){ // loop over hit pixels aNeighbour = aListOfPixels->at(iPix); + + // Test that the pixel is actually different from the seed + // (could happen in case of bad DAQ behaviour) + // If it happens, set as true but ignore as neighbour + if( aNeighbour->GetPixelIndex() == fPSeed->GetPixelIndex() ) { + aNeighbour->SetFound(kTRUE); + if( fDebugHit>1) printf(" neighbour %d at index %d (r%d, c%d) is identical as seed at index %d => set as found and ignore!\n", tStripIndex, aNeighbour->GetPixelIndex(), aNeighbour->GetPixelLine(), aNeighbour->GetPixelColumn(), fPSeed->GetPixelIndex()); + } + // Test if the pixel can be associated to the seed // inside the geometrical cluster limits // and also in the time limit using the timestamp (which are all 0 if unavailable). @@ -2077,7 +2087,7 @@ Bool_t DHit::Analyse( Int_t aPixelIndexInList, std::vector *aListOfPixe // pixelTwice = kTRUE; // break; //} - pixelTwice &= aNeighbour->GetPixelIndex() == aPixel->GetPixelIndex(); + pixelTwice |= aNeighbour->GetPixelIndex() == aPixel->GetPixelIndex(); } // end loop on currently found pixels if( !pixelTwice ) { // if pixel is not counted twice @@ -2162,7 +2172,7 @@ Bool_t DHit::Analyse( Int_t aPixelIndexInList, std::vector *aListOfPixe //============= // order pixels //============= - Int_t *nOfneighbours = new Int_t[fStripsInClusterFound]; + Int_t *nOfneighbours; // For analog readout // re-order pixels from the highest charge to the lowest @@ -2187,6 +2197,7 @@ Bool_t DHit::Analyse( Int_t aPixelIndexInList, std::vector *aListOfPixe // Redefine the seed as the one with the highest number of direct neighbours // This is only needed when the dynamic seed reallocation is not used // JB 2011/07/21 + nOfneighbours = new Int_t[fStripsInClusterFound]; DPixel *aPixel=NULL, *bPixel=NULL; for( Int_t iPix=0; iPix *aListOfPixe } if( fDebugHit>2 ) { - printf(" DHit:Analyse seed is now pixel %d in list, index %d, with %d direct neighbours\n", tPixelIndexList[ 0], fIndexSeed, nOfneighbours[ iSeed]); + printf(" DHit:Analyse seed is now pixel %d in list, index %d, with %d direct neighbours\n", tPixelIndexList[ 0], fIndexSeed, fStripsInClusterFound); } } // end if binary readout @@ -2520,7 +2531,7 @@ Bool_t DHit::Analyse( Int_t aPixelIndexInList, std::vector *aListOfPixe } // end if !valid else if(fDebugHit>1) { - printf(" hit selected with %d pixels\n", fStripsInClusterFound); + printf(" hit nb %d selected with %d pixels\n", fHitNumber, fStripsInClusterFound); } return valid; diff --git a/code/src/DPlane.cxx b/code/src/DPlane.cxx index 44418e0..019ba49 100644 --- a/code/src/DPlane.cxx +++ b/code/src/DPlane.cxx @@ -3720,7 +3720,7 @@ void DPlane::find_hits(){ // All pusleheight is 1 so all pixels are seed candidates // JB 2009/08/21 else if ( fAnalysisMode==3 ){ - if( fDebugPlane>3) printf("DPlane: finding hits try pixel %d with Pulseheight %f\n", tci, fListOfPixels->at(tci)->GetPulseHeight()); + if( fDebugPlane>3) printf("DPlane(%d): finding hits (current index %d) try pixel %d with Pulseheight %f\n", fPlaneNumber, fHitsN, tci, fListOfPixels->at(tci)->GetPulseHeight()); seed = tci; break; @@ -3742,7 +3742,7 @@ void DPlane::find_hits(){ if( seed > -1 ) { // if a seed is defined - if( fDebugPlane>1 ) printf("DPlane: finding hits found potential seed pixel %d with pulse %.3f and SN %.3f ( %f)\n", seed, fListOfPixels->at(seed)->GetPulseHeight(), fListOfPixels->at(seed)->GetPulseHeightToNoise(), fCut->GetSeedPulseHeightToNoise()); + if( fDebugPlane>1 ) printf("DPlane(%d): finding hits (current index %d) found potential seed pixel %d with pulse %.3f and SN %.3f ( %f), already found=%d\n", fPlaneNumber, fHitsN, seed, fListOfPixels->at(seed)->GetPulseHeight(), fListOfPixels->at(seed)->GetPulseHeightToNoise(), fCut->GetSeedPulseHeightToNoise(), tested[seed]); fListOfPixels->at(seed)->SetFound(kTRUE); // mark the strip as found tested[seed] = kTRUE; // mark the strip as already tested for seed @@ -3763,7 +3763,7 @@ void DPlane::find_hits(){ bool IsBigCluster = false; int MaxClusterSize = fc->GetPlanePar(fPlaneNumber).MaxNStrips; hitOK = fHit[fHitsN]->Analyse_Iterative( GetStrip( stPhys),IsBigCluster,MaxClusterSize); - if(IsBigCluster) cout << " DHit: Found the big cluster at Evt " << fSession->GetCurrentEventNumber()-1 << endl << endl; + if(IsBigCluster) cout << " DPlane::find_hits: Found the big cluster at Evt " << fSession->GetCurrentEventNumber()-1 << endl << endl; } else { //Reseach region clustering algorith as default: @@ -3775,14 +3775,14 @@ void DPlane::find_hits(){ else { if(fHitFinder == 0) { //Reseach region clustering algorith - hitOK = fHit[fHitsN]->Analyse( seed, fListOfPixels); + hitOK = fHit[fHitsN]->Analyse( seed, fListOfPixels); } else if(fHitFinder == 1) { //Iterative clustering algorithm bool IsBigCluster = false; int MaxClusterSize = fc->GetPlanePar(fPlaneNumber).MaxNStrips; hitOK = fHit[fHitsN]->Analyse_Iterative( seed, fListOfPixels,IsBigCluster,MaxClusterSize); - if(IsBigCluster) cout << " DHit: Found the big cluster at Evt " << fSession->GetCurrentEventNumber()-1 << endl << endl; + if(IsBigCluster) cout << " DPlane::find_hits:: Found the big cluster at Evt " << fSession->GetCurrentEventNumber()-1 << endl << endl; } else if(fHitFinder == 2){ // Compare the distance from real center of gravity to the pixel position with a search radius to associate this pixel @@ -3846,7 +3846,7 @@ void DPlane::find_hits(){ delete[] tested; // reduce memory leakage, BH 2013/08/21 - if( fDebugPlane>1 ) printf(" %d hits found\n", fHitsN); + if( fDebugPlane>1 ) printf(" ==> DPlane(%d)::find_hits %d hits found\n", fPlaneNumber, fHitsN); return; diff --git a/code/src/DSession.cxx b/code/src/DSession.cxx index 7435899..908cf5f 100644 --- a/code/src/DSession.cxx +++ b/code/src/DSession.cxx @@ -23,6 +23,7 @@ // Last Modified: JB 2014/08/29 FillTree // Last Modified: BB 2015/11/18 Modification of FillTree to avoid a Break segmentation // Last Modified: JB 2021/05/01 Propagate potential sourcePath set via command line +// Last Modified: ZE 2021/09/30 AddTransparentPlane in case of no hit in the plane //////////////////////////////////////////////////////////// // Class Description of DSession // @@ -338,7 +339,7 @@ Bool_t DSession::NextRawEvent( Int_t aTrigger) if (GetStatus()==0 && fTracker->GetPlanesStatus() ){ // Moved from Loop(), JB 2009/05/26 SetStatus(fTracker->GetPlanesStatus()) ; } - + // display current event number with variable frequency Int_t frequency = 1; // added by JB, April 2008 if( fDebugSession) { cout << endl << endl; } @@ -671,10 +672,12 @@ void DSession::FillTree() do{ tTrack = fTracker->GetTrack(iteratorTrack); tHit = fTracker->nearest_hit( tTrack, pl, hitAssociated); // nearest hit, JB 2009/07/17 - if( fDebugSession>1 ) printf("DSession::FillTree got track %d, %s hit %d\n", tTrack->GetNumber(), hitAssociated?"associated":"nearest", tHit?tHit->GetNumber():0); // JB 2014,08/29 + if( fDebugSession>1 ) + printf("DSession::FillTree got track %d, %s hit %d, plane %d \n", tTrack->GetNumber(), hitAssociated?"associated":"nearest", tHit?tHit->GetNumber():0, pl); // JB 2014,08/29 if(tHit != nullptr){ // BB 2015/11/18 : assuming that we add a transparent plane only when there is a hit, otherwise go to the next event fEvent->AddTransparentPlane(*tPlane, *tTrack, *tHit, hitAssociated, *fTracker ); // store track along with nearest hit } + else fEvent->AddTransparentPlane(*tPlane, *tTrack, *fTracker ); // ZE on 2021/09/28, Add a transparent plane also for plane with no hit iteratorTrack++; }while(iteratorTrack <= tracksN); // end loop on tracks } // end condition added for calibration diff --git a/code/src/DSetup.cxx b/code/src/DSetup.cxx index 50513de..9b485f1 100644 --- a/code/src/DSetup.cxx +++ b/code/src/DSetup.cxx @@ -51,6 +51,7 @@ // Last Modified: JB 2017/11/20 ReadDAQBoardParameters for zero suppression option // Last Modified: JB 2018/07/04 ReadRunParameters, added PixelGainRun parameter // Last Modified: JB 2021/05/01 Handle source path as datapath +// Last Modified: ZE 2021/11/09 Add Merging Frame Mode and Number of Frames to Merge /////////////////////////////////////////////////////////////// // Class Description of DSetup // @@ -540,8 +541,10 @@ // EventHeaderSize = [MANDATORY] (int) {0} event header size in Bytes // EventTrailerSize = [MANDATORY] (int) {4} event trailer size in Bytes // TriggerMode = [MANDATORY] (int) method to deal with trigger info -// -// +// TriggerOffset = [MANDATORY] (int) number of frames after the trigger where to start decoding. If (0) then start reading from the trigger +// FramesPerTrigger = [MANDATORY] (int) number of frames to be considered for decoding per trigger +// MergingFrameMode = [MANDATORY] (in) method to deal with MergingFrameMode (Activate : 1, Desactivate : 0) +// FramesToMerge = [MANDATORY] (int) number of frames to Merge // ############################################################################# // Parameter for Final Analysis @@ -2266,6 +2269,10 @@ void DSetup::ReadDAQParameters() AcqParameter.ModuleTypes = -1; AcqParameter.BinaryCoding = -1; AcqParameter.TriggerMode = 0; + AcqParameter.TriggerOffset = 0; + AcqParameter.FramesPerTrigger = 0; + AcqParameter.MergingFrameMode = 0; + AcqParameter.FramesToMerge = 0; AcqParameter.EventBuildingMode = 1; //SS 2011.11.14. Setting EventBuildingMode=1 by default. It can be changed during initialisation of the session or from the config file sprintf(AcqParameter.TimeRefFile, ""); // JB 2018/02/11 AcqParameter.IfExternalTimeRef = 0; @@ -2295,7 +2302,19 @@ void DSetup::ReadDAQParameters() else if( ! strcmp( fFieldName, "TriggerMode" ) ) { read_item(AcqParameter.TriggerMode); } - else if( ! strcmp( fFieldName, "EventBuildingMode" ) ) { + else if( ! strcmp( fFieldName, "TriggerOffset" ) ) { + read_item(AcqParameter.TriggerOffset); + } + else if( ! strcmp( fFieldName, "FramesPerTrigger" ) ) { + read_item(AcqParameter.FramesPerTrigger); + } + else if( ! strcmp( fFieldName, "MergingFrameMode" ) ) { + read_item(AcqParameter.MergingFrameMode); + } + else if( ! strcmp( fFieldName, "FramesToMerge" ) ) { + read_item(AcqParameter.FramesToMerge); + } + else if( ! strcmp( fFieldName, "EventBuildingMode" ) ) { read_item(AcqParameter.EventBuildingMode); } else if( ! strcmp( fFieldName, "TimeRefFile" ) || ! strcmp( fFieldName, "timereffile" ) ) { @@ -2323,6 +2342,10 @@ void DSetup::ReadDAQParameters() cout << " nb of mod types " << AcqParameter.ModuleTypes << endl; cout << " endian coding " << AcqParameter.BinaryCoding << endl; cout << " trigger mode " << AcqParameter.TriggerMode << endl; + cout << " trigger offset " << AcqParameter.TriggerOffset << endl; + cout << " decoded frames per trigger " << AcqParameter.FramesPerTrigger << endl; + cout << " Merging Frame mode " << AcqParameter.MergingFrameMode << endl; + cout << " Frames to Merge " << AcqParameter.FramesToMerge << endl; cout << " event building mode " << AcqParameter.EventBuildingMode << endl; if( AcqParameter.IfExternalTimeRef ) cout << " file for external time ref " << AcqParameter.TimeRefFile << endl; } diff --git a/code/src/MCommands.cxx b/code/src/MCommands.cxx index 5402768..c387bf7 100644 --- a/code/src/MCommands.cxx +++ b/code/src/MCommands.cxx @@ -146,7 +146,8 @@ void MimosaAnalysis::MimosaPro(Int_t MaxEvt, Float_t VCut[NCut] ; //Float_t SignalThreshold; - //Int_t *IndexOfGoodHitsInEvent = new Int_t[CUT_MaxNbOfHits]; + +//Int_t *IndexOfGoodHitsInEvent = new Int_t[CUT_MaxNbOfHits]; Int_t IndexOfGoodHitsInEvent[4000]; // enlarge to 4000, JB 2010/08/27 // Bool_t FillHitSeparationRootFile = kFALSE ;//kTRUE;// kFALSE ; @@ -295,7 +296,7 @@ void MimosaAnalysis::MimosaPro(Int_t MaxEvt, Ngoodhitinevent=0; Ngoodtrackinevent=0; NgoodtrackinDUTinevent=0; - for ( Int_t i=0 ; i<10 ; i++ ) { StatusEvent[i]=0; } + // for ( Int_t i=0 ; i<10 ; i++ ) { StatusEvent[i]=0; } //-- Update display @@ -342,13 +343,17 @@ void MimosaAnalysis::MimosaPro(Int_t MaxEvt, // cout<<"####### evt RealEventNumber, evt-ievt , ievt"<GetFrameNb() : " << Evt->GetFrameNb() << endl; + // cout << "CurrentEventHeader->GetNumberOfFrames() : " << CurrentEventHeader.GetNumberOfFrames() << endl; if(MimoDebug>1) cout << " getting the planes, tracks " << Evt->fT1PlanesN << " and hits" << endl; TClonesArray *Trpl = Evt->GetTransparentPlanes() ; //tracks TClonesArray *Hits = Evt->GetAuthenticHits() ; //hits (all planes) TClonesArray *Planes = Evt->GetAuthenticPlanes() ; //planes Int_t NbOfTrpl = Trpl->GetLast()+1 ; // total # tracks over all planes Int_t NbOfHits = Hits->GetLast()+1 ; // total # hits over all planes - + + // check to avoid crash due to empty event, added by JB, Sept 2008, // cut NbOfHits==0 removed since there may be no hit at all but the event should still be taken into account for efficiency, JB 2012/06/08 if( NbOfTrpl==0 ) { @@ -677,6 +682,7 @@ void MimosaAnalysis::MimosaPro(Int_t MaxEvt, aTrpl = (DTransparentPlane*) Trpl->At(iTrk); if( aTrpl->Tpk != ThePlaneNumber ) continue; // select only tracks in DUT + // cout << "aTrpl->Tpk = " << aTrpl->Tpk << endl; TrackParameters_compute(aTrpl, alignement); // compute tu,tv if( TrackInMimo( GeoMatrixForTrackCut,tu,tv, ThesubmatrixNumber) /* && aTrpl->Tchi2 >= 0. && aTrpl->Tchi2 < TrackChi2Limit */) { @@ -711,7 +717,7 @@ void MimosaAnalysis::MimosaPro(Int_t MaxEvt, aTrpl = (DTransparentPlane*) Trpl->At(iTrk); if( aTrpl->Tpk != ThePlaneNumber ) continue; // select only tracks in DUT - + // cout << "Plane Number : " << ThePlaneNumber << endl; StatusEvent[3]++; // ****************** Filling histos @@ -1054,14 +1060,18 @@ void MimosaAnalysis::MimosaPro(Int_t MaxEvt, //--------------------------------------------------------------- else { // end if no hit matching the track was found nmiss++; + cout << "Event for which a track is missed : " << ievt << endl; + + // cout << " pos " << ahit->Hu << ";" << ahit->Hv << endl; //Generate Break and Segmentation Fault since there is no Hit + /* + cout << "Event for which a track is missed : " << ievt << endl; + if(Ngoodtrackinevent == 1) { + double mycol,mylin; + ComputePixelPosition_UVToColRow(tu,tv,mycol,mylin); + cout << "Evt = " << ievt << " has Inefficient track located at (u,v) = (" << tu << "," << tv << "); (col,lin) = (" << mycol << "," << mylin << ")" << endl; + } - //if(Ngoodtrackinevent == 1) { - //double mycol,mylin; - //ComputePixelPosition_UVToColRow(tu,tv,mycol,mylin); - //cout << "Evt = " << ievt << " has Inefficient track located at (u,v) = (" << tu << "," << tv << "); (col,lin) = (" << mycol << "," << mylin << ")" << endl; - //} - - if(ievt/NofCycle*NofCycle == ievt){ + */ if(ievt/NofCycle*NofCycle == ievt){ cout << " Number of tracks missed = " << nmiss << endl; } @@ -1481,8 +1491,14 @@ void MimosaAnalysis::MimosaPro(Int_t MaxEvt, cout << "-------- Total number of event processed= "<GetSetup()->GetAnalysisPar().DoTelResolutionMC = false; if(fSession->GetSetup()->GetAnalysisPar().DoTelResolutionMC) { @@ -1744,13 +1760,16 @@ void MimosaAnalysis::MimosaPro(Int_t MaxEvt, if (strstr(SaveAlign,"no") || strstr(SaveAlign,"NO")){ csvfile.open ("Main_results.csv",ios::app); TDatime aTime; - csvfile<GetMean()<<","<GetRMS()/sqrt(hnpix_c->GetEntries())<<","; csvfile<GetBinContent(2)/hnpix_c->Integral()<< "," << hnpix_c->GetBinContent(3)/hnpix_c->Integral()<< "," << hnpix_c->GetBinContent(4)/hnpix_c->Integral()<< "," << hnpix_c->GetBinContent(5)/hnpix_c->Integral()<< "," << hnpix_c->GetBinContent(6)/hnpix_c->Integral()<< "," << hnpix_c->GetBinContent(7)/hnpix_c->Integral()<<","<GetBinContent(8)/hnpix_c->Integral()<<","<GetBinContent(9)/hnpix_c->Integral()<<","; //MimosaResolution(); //MimosaResolution is run here in order to add information to the CSV file. csvfile<ProcessLineSync(tafcommand); if(verbose) cout << " ****** " <DSFProduction(%d)", sessinit_DSFProduction_arg); + cout << "tafcommand for DSF : " << tafcommand << endl; + gROOT->ProcessLineSync(tafcommand); + } + + if (sessinit_FakeRate_arg_1 != 0) + { + cout << " ****FakeRate will be launched with : " << sessinit_FakeRate_arg_1 << " events and for plane " << sessinit_FakeRate_arg_2 << endl; + cout << "maxPixPerEvent : " << sessinit_FakeRate_arg_3 << endl; + cout << "maxRateForTruncation : " << sessinit_FakeRate_arg_4 << endl; + cout << "lowestCol : " << sessinit_FakeRate_arg_5 << endl; + cout << "highestCol : " << sessinit_FakeRate_arg_6 << endl; + cout << "lowestRow : " << sessinit_FakeRate_arg_7 << endl; + cout << "highestRow : " << sessinit_FakeRate_arg_8 << endl; + sprintf(tafcommand, "gTAF->GetRaw()->FakeRateBinaryFromRawData(%d,%d,%d,%f,%d,%d,%d,%d)", sessinit_FakeRate_arg_1, sessinit_FakeRate_arg_2, sessinit_FakeRate_arg_3, sessinit_FakeRate_arg_4, sessinit_FakeRate_arg_5, sessinit_FakeRate_arg_6, sessinit_FakeRate_arg_7,sessinit_FakeRate_arg_8); + cout << "tafcommand for FakeRate : " << tafcommand << endl; + gROOT->ProcessLineSync(tafcommand); + } //------------------------------ // launch GUIs //------------------------------ @@ -713,6 +780,7 @@ void TRint::PrintLogo(Bool_t lite) authors.push_back("L.Cousin(1)"); authors.push_back("R.De Masi(1)"); authors.push_back("C.Dritsa(1)"); + authors.push_back("Z.El Bitar(1)"); authors.push_back("M.Gelin(1)"); authors.push_back("Y.Gornoushkin(1)"); authors.push_back("D.Grandjean(1)"); diff --git a/code/src/MRaw.cxx b/code/src/MRaw.cxx index 7bde5fb..d9ea4f1 100644 --- a/code/src/MRaw.cxx +++ b/code/src/MRaw.cxx @@ -229,10 +229,12 @@ void MRaw::PrepareRaw() // bar3->AddButton("JUMP EVENTS","gTAF->GetRaw()->MimosaJump()", "RUN IT AFTER MIMOSA event display"); // bar3->AddButton("RAW CHANNELS", "gTAF->GetRaw()->DisplayRawData(1.)", "Display raw channels per plane and event"); bar3->AddButton("RAW CHANNELS 2D", "gTAF->GetRaw()->DisplayRawData2D()", "Display raw channels per plane and event in 2D"); - bar3->AddButton("CUMULATE RAW CHANNELS 2D", "gTAF->GetRaw()->DisplayCumulatedRawData2D(500)", "Display raw data per plane cumulated over 500 events in 2D"); + bar3->AddButton("CUMULATE RAW CHANNELS 2D", "gTAF->GetRaw()->DisplayCumulatedRawData2D(5000)", "Display raw data per plane cumulated over 500 events in 2D"); bar3->AddButton("HITS 2D", "gTAF->GetRaw()->DisplayHits2D(2,1,0)", "Display hits per plane and event in 2D"); - bar3->AddButton("CUMULATE HITS 2D", "gTAF->GetRaw()->DisplayCumulatedHits2D(500)", "Display hits per plane cumulated over 500 events in 2D"); - bar3->AddButton("CUMUL HITS 2D LADDER (exp)", "gTAF->GetRaw()->DisplayLadderCumulatedHits2D(500)", "Display hits per ladder cumulated over 500 events in 2D"); + bar3->AddButton("CUMULATE HITS 2D", "gTAF->GetRaw()->DisplayCumulatedHits2D(5000)", "Display hits per plane cumulated over 500 events in 2D"); + if( fSession->GetTracker()->GetNumberOfLadders()>0 ) { + bar3->AddButton("CUMUL HITS 2D LADDER (exp)", "gTAF->GetRaw()->DisplayLadderCumulatedHits2D(5000)", "Display hits per ladder cumulated over 500 events in 2D"); + } bar3->AddButton("NOISE MAP", "gTAF->GetRaw()->DisplayNoise()", "Display noise per pixel for each plane"); bar3->AddButton("BINARY FAKE", "gTAF->GetRaw()->FakeRateBinaryFromRawData(100000, 100, 0.01)", "Compute the fake rate for binary output sensors"); diff --git a/config_TEST/mimosis.cfg b/config_TEST/mimosis.cfg index 57211ed..58b4906 100644 --- a/config_TEST/mimosis.cfg +++ b/config_TEST/mimosis.cfg @@ -273,6 +273,8 @@ BinaryCoding: 0 // 0=no trigger, 1=with trigger TriggerMode: 0 +TriggerOffset: 0 +FramesPerTrigger: 1 // -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/config_DUT3/run407.cfg b/config_roma/config_DUT3/run407.cfg new file mode 100644 index 0000000..1bc4ee6 --- /dev/null +++ b/config_roma/config_DUT3/run407.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08965 PositionsY: 0.05907 PositionsZ: -7.50000 +TiltZ: -0.01921 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/config_DUT3/run430.cfg b/config_roma/config_DUT3/run430.cfg new file mode 100644 index 0000000..1bc4ee6 --- /dev/null +++ b/config_roma/config_DUT3/run430.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08965 PositionsY: 0.05907 PositionsZ: -7.50000 +TiltZ: -0.01921 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/config_DUT3/run440.cfg b/config_roma/config_DUT3/run440.cfg new file mode 100644 index 0000000..1bc4ee6 --- /dev/null +++ b/config_roma/config_DUT3/run440.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08965 PositionsY: 0.05907 PositionsZ: -7.50000 +TiltZ: -0.01921 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/config_DUT3/run448.cfg b/config_roma/config_DUT3/run448.cfg new file mode 100644 index 0000000..32f4037 --- /dev/null +++ b/config_roma/config_DUT3/run448.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08984 PositionsY: 0.06126 PositionsZ: -7.50000 +TiltZ: -0.02386 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/config_DUT3/run452.cfg b/config_roma/config_DUT3/run452.cfg new file mode 100644 index 0000000..9dcd185 --- /dev/null +++ b/config_roma/config_DUT3/run452.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08924 PositionsY: 0.06125 PositionsZ: -7.50000 +TiltZ: -0.03081 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/config_DUT3/run453.cfg b/config_roma/config_DUT3/run453.cfg new file mode 100644 index 0000000..1e3a713 --- /dev/null +++ b/config_roma/config_DUT3/run453.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08927 PositionsY: 0.06034 PositionsZ: -7.50000 +TiltZ: -0.03151 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/config_DUT3/run467.cfg b/config_roma/config_DUT3/run467.cfg new file mode 100644 index 0000000..e7971ed --- /dev/null +++ b/config_roma/config_DUT3/run467.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08905 PositionsY: 0.06054 PositionsZ: -7.50000 +TiltZ: -0.03223 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/config_DUT3/run468.cfg b/config_roma/config_DUT3/run468.cfg new file mode 100644 index 0000000..1bc4ee6 --- /dev/null +++ b/config_roma/config_DUT3/run468.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08965 PositionsY: 0.05907 PositionsZ: -7.50000 +TiltZ: -0.01921 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/config_DUT4/run407.cfg b/config_roma/config_DUT4/run407.cfg new file mode 100644 index 0000000..22e5772 --- /dev/null +++ b/config_roma/config_DUT4/run407.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08965 PositionsY: 0.05907 PositionsZ: -7.50000 +TiltZ: -0.01921 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/config_DUT4/run430.cfg b/config_roma/config_DUT4/run430.cfg new file mode 100644 index 0000000..22e5772 --- /dev/null +++ b/config_roma/config_DUT4/run430.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08965 PositionsY: 0.05907 PositionsZ: -7.50000 +TiltZ: -0.01921 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/config_DUT4/run440.cfg b/config_roma/config_DUT4/run440.cfg new file mode 100644 index 0000000..22e5772 --- /dev/null +++ b/config_roma/config_DUT4/run440.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08965 PositionsY: 0.05907 PositionsZ: -7.50000 +TiltZ: -0.01921 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/config_DUT4/run448.cfg b/config_roma/config_DUT4/run448.cfg new file mode 100644 index 0000000..22e5772 --- /dev/null +++ b/config_roma/config_DUT4/run448.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08965 PositionsY: 0.05907 PositionsZ: -7.50000 +TiltZ: -0.01921 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/config_DUT4/run452.cfg b/config_roma/config_DUT4/run452.cfg new file mode 100644 index 0000000..22e5772 --- /dev/null +++ b/config_roma/config_DUT4/run452.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08965 PositionsY: 0.05907 PositionsZ: -7.50000 +TiltZ: -0.01921 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/config_DUT4/run453.cfg b/config_roma/config_DUT4/run453.cfg new file mode 100644 index 0000000..22e5772 --- /dev/null +++ b/config_roma/config_DUT4/run453.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08965 PositionsY: 0.05907 PositionsZ: -7.50000 +TiltZ: -0.01921 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/config_DUT4/run467.cfg b/config_roma/config_DUT4/run467.cfg new file mode 100644 index 0000000..22e5772 --- /dev/null +++ b/config_roma/config_DUT4/run467.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08965 PositionsY: 0.05907 PositionsZ: -7.50000 +TiltZ: -0.01921 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/config_DUT4/run468.cfg b/config_roma/config_DUT4/run468.cfg new file mode 100644 index 0000000..22e5772 --- /dev/null +++ b/config_roma/config_DUT4/run468.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08965 PositionsY: 0.05907 PositionsZ: -7.50000 +TiltZ: -0.01921 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/mimosis-nohitpixels.cfg b/config_roma/mimosis-nohitpixels.cfg new file mode 100644 index 0000000..62b0d65 --- /dev/null +++ b/config_roma/mimosis-nohitpixels.cfg @@ -0,0 +1,367 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1/tests" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 4 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 200 +HotPixelMapFile: "Results/999/hotPixelMap_run999_pl1.root" +FakeRateCut: 0.005 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -22.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 2 +PositionAlgorithm: 1 +PlaneThickness: 200 +HotPixelMapFile: "Results/999/hotPixelMap_run999_pl2.root" +FakeRateCut: 0.005 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -7.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 50 +HotPixelMapFile: "Results/999/hotPixelMap_run999_pl3.root" +FakeRateCut: 0.005 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: 7.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 50 +HotPixelMapFile: "Results/999/hotPixelMap_run999_pl4.root" +FakeRateCut: 0.005 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: 22.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 2 +PositionAlgorithm: 1 +PlaneThickness: 200 +HotPixelMapFile: "Results/999/hotPixelMap_run999_pl5.root" +FakeRateCut: 0.005 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: 37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 2 +PositionAlgorithm: 1 +PlaneThickness: 200 +HotPixelMapFile: "Results/999/hotPixelMap_run999_pl6.root" +FakeRateCut: 0.005 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 3 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15000: +15000: -6200: +6200 +GeoMatrix2: -15000: +15000: -6200: +6200 +GeoMatrix3: -5000: +5000: +5000: +5000 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 128 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 384 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 384 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 128 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/run401.cfg b/config_roma/run401.cfg new file mode 100644 index 0000000..645c379 --- /dev/null +++ b/config_roma/run401.cfg @@ -0,0 +1,355 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 10 + PlanesForTrackMinimum: 4 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 1500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 200 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -22.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 2 +PositionAlgorithm: 1 +PlaneThickness: 200 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -7.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 50 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: 7.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 50 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: 22.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 2 +PositionAlgorithm: 1 +PlaneThickness: 200 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: 37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 2 +PositionAlgorithm: 1 +PlaneThickness: 200 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15000: +15000: -6200: +6200 +GeoMatrix2: -15000: +15000: -6200: +6200 +GeoMatrix3: -5000: +5000: +5000: +5000 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 128 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 384 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 384 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 128 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/run404.cfg b/config_roma/run404.cfg new file mode 100644 index 0000000..8007a1b --- /dev/null +++ b/config_roma/run404.cfg @@ -0,0 +1,355 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 10 + PlanesForTrackMinimum: 4 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 1500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 200 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -22.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 200 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -7.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 2 +PositionAlgorithm: 1 +PlaneThickness: 50 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: 7.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 50 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: 22.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 200 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: 37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 200 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15000: +15000: -6200: +6200 +GeoMatrix2: -15000: +15000: -6200: +6200 +GeoMatrix3: -5000: +5000: +5000: +5000 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 128 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 384 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 384 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 128 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/run405.cfg b/config_roma/run405.cfg new file mode 100644 index 0000000..ebf9d66 --- /dev/null +++ b/config_roma/run405.cfg @@ -0,0 +1,355 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08965 PositionsY: 0.05907 PositionsZ: -7.50000 +TiltZ: -0.01921 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15000: +15000: -6200: +6200 +GeoMatrix2: -15000: +15000: -6200: +6200 +GeoMatrix3: -5000: +5000: +5000: +5000 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 128 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 384 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 384 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 128 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/run405_2.cfg b/config_roma/run405_2.cfg new file mode 100644 index 0000000..86b2641 --- /dev/null +++ b/config_roma/run405_2.cfg @@ -0,0 +1,355 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00598 PositionsY: 0.13820 PositionsZ: -22.50000 +TiltZ: 0.07219 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.09018 PositionsY: 0.06008 PositionsZ: -7.50000 +TiltZ: -0.01337 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00972 PositionsY: -0.03526 PositionsZ: 7.50000 +TiltZ: 0.27589 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02011 PositionsY: 0.02758 PositionsZ: 22.50000 +TiltZ: 0.36374 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14234 PositionsY: -0.05145 PositionsZ: 37.50000 +TiltZ: 0.20116 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15000: +15000: -6200: +6200 +GeoMatrix2: -15000: +15000: -6200: +6200 +GeoMatrix3: -5000: +5000: +5000: +5000 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 128 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 384 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 384 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 128 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/run406.cfg b/config_roma/run406.cfg new file mode 100644 index 0000000..645c379 --- /dev/null +++ b/config_roma/run406.cfg @@ -0,0 +1,355 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 10 + PlanesForTrackMinimum: 4 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 1500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 200 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -22.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 2 +PositionAlgorithm: 1 +PlaneThickness: 200 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -7.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 50 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: 7.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 50 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: 22.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 2 +PositionAlgorithm: 1 +PlaneThickness: 200 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: 37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 2 +PositionAlgorithm: 1 +PlaneThickness: 200 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15000: +15000: -6200: +6200 +GeoMatrix2: -15000: +15000: -6200: +6200 +GeoMatrix3: -5000: +5000: +5000: +5000 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 128 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 384 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 384 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 128 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/run407.cfg b/config_roma/run407.cfg new file mode 100644 index 0000000..1bc4ee6 --- /dev/null +++ b/config_roma/run407.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08965 PositionsY: 0.05907 PositionsZ: -7.50000 +TiltZ: -0.01921 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/run408.cfg b/config_roma/run408.cfg new file mode 100644 index 0000000..25e66bf --- /dev/null +++ b/config_roma/run408.cfg @@ -0,0 +1,360 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08965 PositionsY: 0.05907 PositionsZ: -7.50000 +TiltZ: -0.01921 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +//Full matrix A +GeoMatrix1: -15483: -11612: -6774: +6774 +//Full matrix B +GeoMatrix2: -11612: -0: -6774: +6774 +//Full matrix B narrow +GeoMatrix3: -11450: -150: -6674: +6674 +//Full matrix D +//GeoMatrix4: +11612: +15483: -6774: +6774 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 384 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/run409.cfg b/config_roma/run409.cfg new file mode 100644 index 0000000..645c379 --- /dev/null +++ b/config_roma/run409.cfg @@ -0,0 +1,355 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 10 + PlanesForTrackMinimum: 4 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 1500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 200 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -22.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 2 +PositionAlgorithm: 1 +PlaneThickness: 200 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -7.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 50 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: 7.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 50 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: 22.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 2 +PositionAlgorithm: 1 +PlaneThickness: 200 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: 37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 2 +PositionAlgorithm: 1 +PlaneThickness: 200 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15000: +15000: -6200: +6200 +GeoMatrix2: -15000: +15000: -6200: +6200 +GeoMatrix3: -5000: +5000: +5000: +5000 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 128 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 384 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 384 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 128 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/run430.cfg b/config_roma/run430.cfg new file mode 100644 index 0000000..1bc4ee6 --- /dev/null +++ b/config_roma/run430.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08965 PositionsY: 0.05907 PositionsZ: -7.50000 +TiltZ: -0.01921 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/run440.cfg b/config_roma/run440.cfg new file mode 100644 index 0000000..1bc4ee6 --- /dev/null +++ b/config_roma/run440.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08965 PositionsY: 0.05907 PositionsZ: -7.50000 +TiltZ: -0.01921 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/run448.cfg b/config_roma/run448.cfg new file mode 100644 index 0000000..32f4037 --- /dev/null +++ b/config_roma/run448.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08984 PositionsY: 0.06126 PositionsZ: -7.50000 +TiltZ: -0.02386 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/run452.cfg b/config_roma/run452.cfg new file mode 100644 index 0000000..9dcd185 --- /dev/null +++ b/config_roma/run452.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08924 PositionsY: 0.06125 PositionsZ: -7.50000 +TiltZ: -0.03081 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/run453.cfg b/config_roma/run453.cfg new file mode 100644 index 0000000..1e3a713 --- /dev/null +++ b/config_roma/run453.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08927 PositionsY: 0.06034 PositionsZ: -7.50000 +TiltZ: -0.03151 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/run467.cfg b/config_roma/run467.cfg new file mode 100644 index 0000000..e7971ed --- /dev/null +++ b/config_roma/run467.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08905 PositionsY: 0.06054 PositionsZ: -7.50000 +TiltZ: -0.03223 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/config_roma/run468.cfg b/config_roma/run468.cfg new file mode 100644 index 0000000..1bc4ee6 --- /dev/null +++ b/config_roma/run468.cfg @@ -0,0 +1,361 @@ +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// +// This is a Configuration File for TAF +// The list of all available configuration parameters is in src/DSetup.cxx +// +// created -> 2021/05/01 +// +// MIMOSIS beam test at DESY +// +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Run Parameter +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +BeamTime: "June20" +Signature: "JB" +//DataPath is not necessarily needed if provided via taf command arguments +DataPath: "/work/cmos100/data/DATA_Beam/mimosis1" +NoiseRun: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Tracker +// +// Planes = the # planes in the setup (may encompass several sensors) +// TracksMaximum = the maximum # tracks which will be reconstructed if set to 0, no tracking is performed +// PlanesForTrackMinimum = the minimum # hits required to make a track +// HitsInPlaneTrackMaximum = the max # hits in a plane allowed to consider using its hits for tracking +// SearchHitDistance (um) = the search distance to associate a hit to a track +// HitsInPlaneMaximum = the # hits which will be reconstruted in each plane +// Resolution (um) = the know spatial resolution of the reference planes +// use 4.00 for MIMOSA 26 and 1.00 for MIMOSA 18 +// EventsForAlignmentFit = the # pairs (track-hit) for one iteration of the +// alignment procedure +// TimeLimit = for sensor with timestamping, defines the maximum duration of a +// triggered event +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + + Planes: 6 + TracksMaximum: 30 + PlanesForTrackMinimum: 5 + HitsInPlaneTrackMaximum: 500 + SearchHitDistance: 300. + HitsInPlaneMaximum: 500 + Resolution: 6.00 + EventsForAlignmentFit: 800 + //TimeLimit: 400000 + +// Following two parameters are used only in simulatio for now +BeamType: "electron" +BeamMomentum: 5.0 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Detector Planes used in this run +// +// Inputs = number of inputs needed to build all the channels, +// -> for each input, precise +// ModuleType = module type +// ModuleNumber = id in the set of modules of this type +// InputNumber = id of the input of this module used +// ChannelNumber = channel shift so that plane_channel_nb = input_channel_nb + ChannelNumber +// Channels = number of channels to read from this input +// Name = just for display for now +// Purppose = just for display for now +// Readout = controls the type of raw data +// 0 -> not read, +// 1 data not sparsified, +// 100 sparsified data. +// AnalysisMode = controls the analysis +// 0 -> data read but no clustering, +// 1 -> strips, +// 2 -> pixels with analog output, +// 3 -> pixels with binary output. +// PositionsXYZ = positioni (mm) of the center of the plane, changed by the alignment procedure +// TiltZYX = rotation angles, changed by the alignment procedure +// PitchUVW = pitch (mm) in all directions (pitchW=sensitive layer thickness, not used yet) +// Mapping = 1 for position at pixel center +// HotPixelMapFile = ROOT file name with fake rate map, if not empty -> needs FakeRateCut spec +// FakeRateCut = (float) Single pixel fake rate cut +// HitFinder = select the hit finder method, +// 0 -> standard, use ClusterLimitU as maximal distance from pixel to seed pixel +// 1 -> connected pixel +// 2 -> cog based with search radius, use ClusterLimitRadius as max distance from pixel to cluster CoG +// ThreshNeighbourSN = S/N or S cut on all the pixels (seed excluded) of the hit +// ThreshSeedSN = S/N or S cut on the seed pixel of the hit +// ClusterLimitU = maximal distance between the seed pixel and any other pixel in the hit +// ClusterLimitRadius= max distance between the center of gravity and any other pixel in the hit +// Status = controls how this plane is used by the tracking +// 0 = Primary Reference, never aligned and used as track seed, +// 1 = Primary Reference, never aligned and used in tracking (not for seed) +// 2 = Secondary Reference, aligned and used in tracking (not for seed) +// 3 = Device Under Test (DUT), aligned but never used in tracking +// HitPositionAlgorithm = controls how the hit position is estimated from the pixels info +// 1 = Center of Gravity, +// 2 = eta, +// 3 = kappa +// PlaneThickness = (float,um) plane thickness (Si is assumed if not specified otherwise) + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 1 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 1 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.000 PositionsY: 0.000 PositionsZ: -37.50 +TiltZ: 0.000 TiltY: 0.000 TiltX: 0.000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 0 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 2 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 2 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.00599 PositionsY: 0.13801 PositionsZ: -22.50000 +TiltZ: 0.07160 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 3 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 5 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT1" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.08965 PositionsY: 0.05907 PositionsZ: -7.50000 +TiltZ: -0.01921 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 3 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 4 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 6 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "DUT2" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.00943 PositionsY: -0.03687 PositionsZ: 7.50000 +TiltZ: 0.27414 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 5 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 3 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF3" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: -0.02012 PositionsY: 0.02678 PositionsZ: 22.50000 +TiltZ: 0.35957 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Plane 6 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Inputs: 1 +ModuleType: 1 +ModuleNumber: 1 +InputNumber: 4 +ChannelNumber: 0 +Channels: 516096 +Name: "MIMOSIS" +Purpose: "REF4" +Readout: 126 +MimosaType: 36 +AnalysisMode: 3 +PositionsX: 0.14308 PositionsY: -0.05385 PositionsZ: 37.50000 +TiltZ: 0.18199 TiltY: 0.00000 TiltX: 0.00000 +StripsU: 1024 StripsV: 504 StripsW: 1 +PitchU: 0.03024 PitchV: 0.02688 PitchW: 0.000 +Mapping: 1 +HitFinder: 0 +ThreshNeighbourSN: 0. +ThreshSeedSN: 0.5 +MaxNStrips: 25 +MinNStrips: 1 +ClusterLimitU: 0000.061 V: 0000.054 W: 0000.000 +Status: 1 +PositionAlgorithm: 1 +PlaneThickness: 60 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter of the Data Acquisition +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// The number of Module types used, e.g. Sirocco Type A, Sirocco Type B, VXI inputs... +AcqModuleTypes: 1 + +// Endianess, 0= do not swap, 1=swap byte per byte +BinaryCoding: 0 + +// 0=no trigger, 1=with trigger +TriggerMode: 0 + + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameters of the Data Acquisition tools in this run +// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MSIS -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- +Name: "MSIS" +Type: 130 +Devices: 1 +Inputs: 6 +Channels: 516096 +EventBuildingBoardMode: 0 + +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// Parameter for Analysis +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +AnalysisGoal: "track" +MaxNbOfHits: 1550 +MinNbOfHits: 0 +TrackChi2Limit: 2 +Submatrices: 5 +// Submatrix 0 = A+B+C+D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +//Whole matrix +GeoMatrix0: -15483: +15483: -6774: +6774 +//Matrix A without edges +GeoMatrix1: -15300: -11760: -6500: +6500 +//Matrix B without edges +GeoMatrix2: -11460: -150: -6500: +6500 +//Matrix C without edges +GeoMatrix3: +150: +11460: -6500: +6500 +//Matrix D without edges +//GeoMatrix3: +11760: +15300: -6500: +6500 +// Submatrix 1 = A +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -15483: -11612: -5670: +5670 +GeoMatrix2: -15000: -12100: -5000: +5000 +GeoMatrix3: -15000: -12100: +5000: +5000 +// Submatrix 2 = B +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: -11611: -0: -5670: +5670 +GeoMatrix2: -11100: -500: -5000: +5000 +GeoMatrix3: -11100: -500: -5000: +5000 +// Submatrix 3 = C +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +0: +11611: -5670: +5670 +GeoMatrix2: +500: +11100: -5000: +5000 +GeoMatrix3: +500: +11100: -5000: +5000 +// Submatrix 4 = D +PixelSizeU: 30.24 +PixelSizeV: 26.88 +PixelsInRaw: 1024 +PixelsInColumn: 504 +MaxNofPixelsInCluster: 25 +Calibration: 1. +NoiseScope: 0. +GeoMatrix0: -15483: +15483: -6774: +6774 +GeoMatrix1: +11612: +15483: -5670: +5670 +GeoMatrix2: +12100: +15000: -5000: +5000 +GeoMatrix3: +12100: +15000: +5000: +5000 +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- +// End of Configuration File +// -+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+- diff --git a/nohup.out b/nohup.out new file mode 100644 index 0000000..1a4fe34 --- /dev/null +++ b/nohup.out @@ -0,0 +1,217 @@ + ****** + * ROOT arg: exit when finished is asked + * InitSession: a run number is given: 405 + * InitSession: DSFProduction is activated with 10 events + ****** + +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for TNTBoardReader.h + requested to autoload type DR3 +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for TNTBoardReader.h + requested to autoload type DGlobalTools +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for TNTBoardReader.h + requested to autoload type TNTPixel +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for TNTBoardReader.h + requested to autoload type TNTEvent +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for TNTBoardReader.h + requested to autoload type TNTBoardReader +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for PXIBoardReader.h + requested to autoload type PXIPixel +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for PXIBoardReader.h + requested to autoload type PXIEvent +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for PXIBoardReader.h + requested to autoload type PXIBoardReader +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for GIGBoardReader.h + requested to autoload type GIGPixel +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for GIGBoardReader.h + requested to autoload type GIGMonteCarlo +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for GIGBoardReader.h + requested to autoload type GIGEvent +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for GIGBoardReader.h + requested to autoload type GIGBoardReader +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for IMGBoardReader.h + requested to autoload type IMGPixel +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for IMGBoardReader.h + requested to autoload type IMGEvent +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for IMGBoardReader.h + requested to autoload type IMGBoardReader +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for BoardReader.h + requested to autoload type BoardReaderPixel +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for BoardReader.h + requested to autoload type BoardReaderEvent +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for VMEBoardReader.h + requested to autoload type VMEBoardReader +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MCBoardReader.h + requested to autoload type DPixel +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MCBoardReader.h + requested to autoload type DHit +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MCBoardReader.h + requested to autoload type DTrack +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MCBoardReader.h + requested to autoload type DEventMC +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MCBoardReader.h + requested to autoload type DEventHeader +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MCBoardReader.h + requested to autoload type DEvent +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MCBoardReader.h + requested to autoload type DAuthenticHit +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MCBoardReader.h + requested to autoload type DAuthenticPlane +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MCBoardReader.h + requested to autoload type DTransparentPlane +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MCBoardReader.h + requested to autoload type DSession +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MCBoardReader.h + requested to autoload type DSetup +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MCBoardReader.h + requested to autoload type MCBoardReader +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for BoardReaderIHEP.h + requested to autoload type BoardReaderIHEP +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for AliMIMOSA22RawStreamVASingle.h + requested to autoload type AliMIMOSA22RawStreamVASingle +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for DecoderM18.h + requested to autoload type DecoderM18 +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for DecoderGeant.h + requested to autoload type DecoderGeant +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for BoardReaderMIMOSIS.h + requested to autoload type BoardReaderMIMOSIS +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for DAcq.h + requested to autoload type DAcq +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for DTracker.h + requested to autoload type DataPoints +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for DTracker.h + requested to autoload type DPrecAlign +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for DTracker.h + requested to autoload type MiniVector +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for DTracker.h + requested to autoload type DLadder +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for DTracker.h + requested to autoload type DPlane +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for DTracker.h + requested to autoload type DAlign +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for DTracker.h + requested to autoload type DHelix +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for DTracker.h + requested to autoload type DHelixFitter +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for DTracker.h + requested to autoload type DBeaster +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for DTracker.h + requested to autoload type DTracker +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for DStrip.h + requested to autoload type DStrip +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for DLine.h + requested to autoload type DLine +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for DCut.h + requested to autoload type DCut +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for DParticle.h + requested to autoload type DParticle +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MAnalysis.h + requested to autoload type MAlignment +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MAnalysis.h + requested to autoload type MimosaAlignAnalysis +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MAnalysis.h + requested to autoload type MHist +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MAnalysis.h + requested to autoload type MRaw +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MAnalysis.h + requested to autoload type MRax +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MAnalysis.h + requested to autoload type MimosaAnalysis +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MMillepede.h + requested to autoload type MMillepede +Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState: + Missing FileEntry for MGlobalAlign.h + requested to autoload type MimosaGlobalAlign + ------------------------------------------------------------------ + | Welcome to ROOT 6.23/01 https://root.cern | + | (c) 1995-2020, The ROOT Team; conception: R. Brun, F. Rademakers | + | Built for macosx64 on Feb 08 2021, 19:11:00 | + | From heads/master@v6-23-01-RF-binSampling-684-gfc9c2691e4 | + | With Apple clang version 11.0.3 (clang-1103.0.32.62) | + | Try '.help', '.demo', '.license', '.credits', '.quit'/'.q' | + ------------------------------------------------------------------ + + + ****** + * TAF will exit when finished + * Process command: MimosaAnalysis *gTAF = new MimosaAnalysis()Mdict dictionary payload:5:10: fatal error: 'MAnalysis.h' file not found +#include "MAnalysis.h" + ^~~~~~~~~~~~~ +Error in : Error parsing payload code for class MimosaAnalysis with content: + +#line 1 "Mdict dictionary payload" + + +#define _BACKWARD_BACKWARD_WARNING_H +// Inline headers +#include "MAnalysis.h" +#include "MAlign.h" +#include "MHist.h" +#include "MRaw.h" +#include "MRax.h" +#include "MAlignment.h" +#include "MMillepede.h" +#include "MGlobalAlign.h" +#include "MKalmanFilter.h" +#include "MLeastChiSquare.h" + +#undef _BACKWARD_BACKWARD_WARNING_H + +aborting +./script_taf.sh: line 8: 8726 Abort trap: 6 /Users/zelbitar/HEP_SOFT/taf.git/taf.origin/taf/bin/bin/TAF -q -run 405 -dsfp 10 diff --git a/results_ana_M1/Main_results.csv b/results_ana_M1/Main_results.csv new file mode 100644 index 0000000..d548894 --- /dev/null +++ b/results_ana_M1/Main_results.csv @@ -0,0 +1,180 @@ +Thu Oct 7 10:36:40 2021,1021,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_01.root +Thu Oct 7 10:37:14 2021,1021,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_01.root +Thu Oct 7 10:38:48 2021,1021,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_01.root +Thu Oct 7 10:41:31 2021,1021,3,-11100,-500,-5000,5000,13768,14166,97.1905,0.138837,1.90111,0.00878682,,0.405,0.412,0.0871,0.0825,0.0053,0.00429,0.00145,0.000944,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_01.root +Thu Oct 7 10:51:28 2021,1021,3,-11100,-500,-5000,5000,98923,112192,88.173,0.0964106,1.90356,0.00326077,,0.402,0.413,0.0912,0.0806,0.00423,0.00534,0.00147,0.000829,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_01.root +Thu Oct 7 10:59:22 2021,1021,4,-11100,-500,-5000,5000,97847,106617,91.7743,0.0841461,1.5238,0.00237747,,0.583,0.347,0.0367,0.0306,0.00135,0.000849,0.000184,0.000123,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_01.root +Thu Oct 7 12:21:23 2021,1021,3,-11100,-500,-5000,5000,351173,1032405,34.015,0.0466265,1.91391,0.00173625,,0.396,0.417,0.0927,0.0813,0.00451,0.00526,0.00152,0.000894,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_02.root +Thu Oct 7 13:41:05 2021,1021,3,-11100,-500,-5000,5000,99019,112117,88.3176,0.09593,1.90432,0.00326048,,0.402,0.414,0.0914,0.0806,0.00423,0.00535,0.00149,0.00084,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_03.root +Thu Oct 7 13:49:52 2021,1021,3,-11100,-500,-5000,5000,89631,104025,86.1629,0.107057,1.91248,0.00349635,,0.402,0.411,0.0903,0.0827,0.00501,0.00497,0.00167,0.00102,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_04.root +Thu Oct 7 14:12:08 2021,1021,3,-11100,-500,-5000,5000,70986,72617,97.754,0.0549865,1.91236,0.00390599,,0.402,0.412,0.0884,0.0855,0.00521,0.00382,0.00149,0.00114,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_05.root +Thu Oct 7 15:09:36 2021,1021,3,-11100,-500,-5000,5000,35711,36808,97.0197,0.0886321,1.90481,0.00536362,,0.405,0.407,0.0917,0.0837,0.00706,0.00328,0.00199,0.00042,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_011.root +Thu Oct 7 15:41:31 2021,1021,3,-11100,-500,-5000,5000,35120,36198,97.0219,0.0893428,1.90221,0.0053991,,0.405,0.407,0.0912,0.0833,0.00686,0.00339,0.00188,0.000399,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_01.root +Thu Oct 7 15:52:05 2021,1021,3,-11100,-500,-5000,5000,35711,36808,97.0197,0.0886321,1.90481,0.00536362,,0.405,0.407,0.0917,0.0837,0.00706,0.00328,0.00199,0.00042,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_02.root +Thu Oct 7 16:07:38 2021,1021,3,-11100,-500,-5000,5000,35711,36808,97.0197,0.0886321,1.90481,0.00536362,,0.405,0.407,0.0917,0.0837,0.00706,0.00328,0.00199,0.00042,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_02.root +Thu Oct 7 16:10:34 2021,1021,3,-11100,-500,-5000,5000,35711,36808,97.0197,0.0886321,1.90481,0.00536362,,0.405,0.407,0.0917,0.0837,0.00706,0.00328,0.00199,0.00042,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_02.root +Thu Oct 7 16:55:23 2021,1021,3,-11100,-500,-5000,5000,35711,36808,97.0197,0.0886321,1.90481,0.00536362,,0.405,0.407,0.0917,0.0837,0.00706,0.00328,0.00199,0.00042,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_02.root +Thu Oct 7 16:58:40 2021,1021,3,-11100,-500,-5000,5000,1268,1299,97.6135,0.423474,1.90305,0.028348,,0.393,0.436,0.0757,0.0749,0.00789,0.0118,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_02.root +Thu Oct 7 17:02:02 2021,1021,3,-11100,-500,-5000,5000,1268,1299,97.6135,0.423474,1.90305,0.028348,,0.393,0.436,0.0757,0.0749,0.00789,0.0118,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_02.root +Thu Oct 7 17:03:05 2021,1021,3,-11100,-500,-5000,5000,1268,1299,97.6135,0.423474,1.90305,0.028348,,0.393,0.436,0.0757,0.0749,0.00789,0.0118,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_02.root +Thu Oct 7 17:03:40 2021,1021,3,-11100,-500,-5000,5000,2981,3063,97.3229,0.291654,1.94682,0.0189275,,0.394,0.404,0.0859,0.103,0.00503,0.00839,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_02.root +Thu Oct 7 17:04:14 2021,1021,3,-11100,-500,-5000,5000,1441,1490,96.7114,0.462009,1.86057,0.0261505,,0.416,0.427,0.0666,0.0736,0.00694,0.0104,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_02.root +Thu Oct 7 17:04:40 2021,1021,3,-11100,-500,-5000,5000,1290,1328,97.1386,0.457498,1.88766,0.0280542,,0.404,0.429,0.0744,0.0736,0.00775,0.0116,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_02.root +Thu Oct 7 17:05:59 2021,1021,3,-11100,-500,-5000,5000,138,139,99.2806,0.716832,1.78261,0.0643691,,0.37,0.529,0.0507,0.0507,0,0,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_02.root +Thu Oct 7 17:07:18 2021,1021,3,-11100,-500,-5000,5000,138,139,99.2806,0.716832,1.78261,0.0643691,,0.37,0.529,0.0507,0.0507,0,0,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_02.root +Thu Oct 7 17:07:53 2021,1021,3,-11100,-500,-5000,5000,1441,1490,96.7114,0.462009,1.86057,0.0261505,,0.416,0.427,0.0666,0.0736,0.00694,0.0104,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_02.root +Thu Oct 7 17:10:00 2021,1021,3,-11100,-500,-5000,5000,1441,1490,96.7114,0.462009,1.86057,0.0261505,,0.416,0.427,0.0666,0.0736,0.00694,0.0104,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_02.root +Thu Oct 7 17:27:27 2021,1021,3,-11100,-500,-5000,5000,1268,1295,97.9151,0.397042,1.90304,0.028348,,0.394,0.436,0.0757,0.0749,0.00789,0.0118,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_03.root +Thu Oct 7 17:30:21 2021,1021,3,-11100,-500,-5000,5000,1268,1299,97.6135,0.423474,1.90305,0.028348,,0.393,0.436,0.0757,0.0749,0.00789,0.0118,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_04.root +Thu Oct 7 19:03:06 2021,1021,3,-11100,-500,-5000,5000,35120,36198,97.0219,0.0893428,1.90221,0.0053991,,0.405,0.407,0.0912,0.0833,0.00686,0.00339,0.00188,0.000399,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_05.root +Thu Oct 7 22:29:50 2021,1040,3,-11100,-500,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1040_01.root +Thu Oct 7 22:31:46 2021,1040,3,500,11100,-5000,5000,76816,78414,97.9621,0.0504573,1.69205,0.0031402,,0.502,0.374,0.0578,0.0631,0.00143,0.000925,0.0003,9.12e-05,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1040_01.root +Fri Oct 8 10:46:28 2021,1021,2,-11100,-500,-5000,5000,34740,35022,99.1948,0.047756,2.60704,0.00730219,,0.206,0.352,0.18,0.216,0.0145,0.018,0.0059,0.00426,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_013.root +Fri Oct 8 11:03:32 2021,1021,2,-11100,-500,-5000,5000,108779,110174,98.7338,0.0336853,2.57189,0.00405387,,0.217,0.35,0.167,0.227,0.0131,0.0149,0.00452,0.00235,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_01.root +Fri Oct 8 11:14:28 2021,1021,2,-11100,-500,-5000,5000,103950,105255,98.7602,0.0341078,2.56198,0.00414309,,0.219,0.352,0.167,0.224,0.013,0.0142,0.00482,0.00216,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_02.root +Fri Oct 8 11:24:46 2021,1021,2,-11100,-500,-5000,5000,101369,104635,96.8787,0.0537583,2.58001,0.0042192,,0.216,0.347,0.17,0.227,0.0131,0.0146,0.00535,0.00255,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_03.root +Fri Oct 8 13:47:01 2021,1021,2,-11100,-500,-5000,5000,101369,104635,96.8787,0.0537583,2.58001,0.0042192,,0.216,0.347,0.17,0.227,0.0131,0.0146,0.00535,0.00255,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_04.root +Fri Oct 8 14:00:09 2021,1021,2,-11100,-500,-5000,5000,103950,105255,98.7602,0.0341078,2.56198,0.00414309,,0.219,0.352,0.167,0.224,0.013,0.0142,0.00482,0.00216,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_05.root +Fri Oct 8 14:18:04 2021,1021,2,-11100,-500,-5000,5000,108636,109665,99.0617,0.0291134,2.58878,0.0040792,,0.214,0.347,0.168,0.23,0.0133,0.0148,0.0053,0.00304,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_06.root +Fri Oct 8 14:33:31 2021,1021,2,-11100,-500,-5000,5000,99727,100626,99.1066,0.0296634,2.57572,0.00425744,,0.216,0.35,0.17,0.225,0.0131,0.0134,0.00533,0.00306,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_07.root +Fri Oct 8 14:43:03 2021,1021,2,-11100,-500,-5000,5000,101369,104635,96.8787,0.0537583,2.58001,0.0042192,,0.216,0.347,0.17,0.227,0.0131,0.0146,0.00535,0.00255,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_08.root +Fri Oct 8 16:23:27 2021,1053,3,-11100,-500,-5000,5000,43285,45563,95.0003,0.1021,1.65757,0.0040113,,0.508,0.386,0.051,0.0515,0.00164,0.000809,0.000601,0.000116,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1053_01.root +Fri Oct 8 17:23:36 2021,1053,2,-11100,-500,-5000,5000,32880,34452,95.4371,0.112427,2.61598,0.00746576,,0.209,0.343,0.167,0.239,0.0128,0.0161,0.00508,0.00301,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1053_02.root +Fri Oct 8 17:43:49 2021,1053,2,-11100,-500,-5000,5000,36115,37624,95.9893,0.101156,2.5919,0.00695362,,0.208,0.355,0.164,0.234,0.0114,0.0183,0.00418,0.00224,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1053_03.root +Fri Oct 8 17:51:11 2021,1053,5,-11100,-500,-5000,5000,34398,35594,96.6399,0.095514,2.52499,0.0070134,,0.224,0.348,0.183,0.211,0.0104,0.0122,0.00425,0.00198,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1053_04.root +Fri Oct 8 17:58:51 2021,1053,5,-11100,-500,-5000,5000,31489,32693,96.3173,0.104162,2.60808,0.0076256,,0.207,0.349,0.17,0.236,0.012,0.0148,0.00489,0.00216,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1053_05.root +Fri Oct 8 18:06:10 2021,1053,5,-11100,-500,-5000,5000,31489,32693,96.3173,0.104162,2.60808,0.0076256,,0.207,0.349,0.17,0.236,0.012,0.0148,0.00489,0.00216,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1053_05.root +Fri Oct 8 18:27:19 2021,1021,3,-11100,-500,-5000,5000,4991,10536,47.3709,0.486442,1.9361,0.0159514,,0.403,0.404,0.0944,0.0797,0.00511,0.00838,0.000613,0.000409,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_05.root +Fri Oct 8 18:28:00 2021,1021,3,-11100,-500,-5000,5000,45,3983,1.1298,0.167467,-0.0786517,0,,1.49,-0.292,-0.0449,-0.112,-0,-0,-0,-0.0225,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1053_01.root +Fri Oct 8 18:28:49 2021,1021,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_01.root +Fri Oct 8 18:29:12 2021,1021,3,-11100,-500,-5000,5000,2829,2900,97.5517,0.286978,1.89938,0.0183654,,0.394,0.424,0.088,0.0841,0.00601,0.00141,0.00177,0.000707,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_01.root +Fri Oct 8 18:29:53 2021,1021,3,-11100,-500,-5000,5000,5228,5385,97.0845,0.229266,1.89772,0.0148981,,0.419,0.395,0.0951,0.0777,0.00497,0.00364,0.00134,0.000574,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_02.root +Fri Oct 8 18:30:37 2021,1021,3,-11100,-500,-5000,5000,10688,10880,98.2353,0.126228,1.91242,0.0099534,,0.4,0.414,0.0857,0.0897,0.00459,0.00356,0.00112,0.00131,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_03.root +Fri Oct 8 18:31:27 2021,1021,3,-11100,-500,-5000,5000,15485,15765,98.2239,0.105195,1.90593,0.00832567,,0.404,0.412,0.0897,0.0804,0.00491,0.00581,0.00187,0.00123,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_04.root +Fri Oct 8 19:08:06 2021,1021,3,-11100,-500,-5000,5000,100519,114913,87.474,0.0976475,1.89222,0.00320354,,0.406,0.413,0.0919,0.0777,0.00341,0.00541,0.00155,0.000907,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_06.root +Sat Oct 9 10:10:06 2021,1021,3,-11100,-500,-5000,5000,100519,114913,87.474,0.0976475,1.89222,0.00320354,,0.406,0.413,0.0919,0.0777,0.00341,0.00541,0.00155,0.000907,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_06.root +Sat Oct 9 11:11:34 2021,1021,3,-11100,-500,-5000,5000,118259,129114,91.5927,0.0772275,1.9098,0.00299134,,0.4,0.414,0.0921,0.0815,0.00454,0.00506,0.00174,0.000897,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_06.root +Sat Oct 9 11:27:03 2021,1021,3,-11100,-500,-5000,5000,99019,112117,88.3176,0.09593,1.90432,0.00326048,,0.402,0.414,0.0914,0.0806,0.00423,0.00535,0.00149,0.00084,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_07.root +Sat Oct 9 11:34:40 2021,1021,4,-11100,-500,-5000,5000,97944,106550,91.923,0.0834756,1.52381,0.00237649,,0.583,0.347,0.0367,0.0306,0.00134,0.000849,0.000184,0.000123,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_07.root +Sat Oct 9 14:35:01 2021,1089,3,500,11100,-5000,5000,0,3218,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1089_01.root +Sat Oct 9 14:35:27 2021,1089,3,-11100,-500,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1089_01.root +Sat Oct 9 14:36:57 2021,1089,3,500,11100,-5000,5000,0,3218,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1089_01.root +Sat Oct 9 14:38:23 2021,1089,4,500,11100,-5000,5000,0,3204,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1089_01.root +Sat Oct 9 15:06:32 2021,1089,3,500,11100,-5000,5000,4908,5000,98.16,0.19006,1.61984,0.0116938,,0.534,0.367,0.0479,0.0485,0.00143,0.000408,0.000408,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1089_01.root +Sat Oct 9 15:07:20 2021,1089,4,500,11100,-5000,5000,5143,5177,99.3432,0.112261,1.89559,0.0134992,,0.404,0.406,0.0898,0.0964,0.00175,0.00194,0.000389,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1089_01.root +Sat Oct 9 15:26:32 2021,1086,3,500,11100,-5000,5000,13124,13343,98.3587,0.109996,1.62453,0.00712466,,0.528,0.376,0.0457,0.0475,0.0016,0.00137,0.000152,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1086_01.root +Sat Oct 9 15:27:51 2021,1086,4,500,11100,-5000,5000,13567,13824,98.1409,0.114884,1.91358,0.008596,,0.403,0.403,0.0854,0.103,0.00251,0.00243,0.00059,0.00059,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1086_01.root +Sat Oct 9 15:42:38 2021,1082,3,500,11100,-5000,5000,196783,200214,98.2863,0.0290043,1.61534,0.00184685,,0.539,0.362,0.0479,0.0486,0.00144,0.000671,0.00028,0.000107,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1082_01.root +Sat Oct 9 15:47:30 2021,1082,4,500,11100,-5000,5000,199187,202445,98.3907,0.027967,1.90377,0.00220351,,0.403,0.404,0.0882,0.0993,0.002,0.00186,0.000592,0.000316,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1082_01.root +Sat Oct 9 15:58:29 2021,1083,3,500,11100,-5000,5000,40175,41619,96.5304,0.0897065,1.62324,0.00411847,,0.533,0.367,0.048,0.0486,0.00149,0.000921,0.000373,0.000199,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1083_01.root +Sat Oct 9 16:01:15 2021,1083,4,500,11100,-5000,5000,42093,42514,99.0097,0.0480229,1.89717,0.00475108,,0.403,0.41,0.0828,0.0995,0.00207,0.00185,0.00057,0.000238,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1083_01.root +Sat Oct 9 16:22:04 2021,1084,3,500,11100,-5000,5000,21874,22086,99.0401,0.0656079,1.62523,0.00559853,,0.534,0.365,0.0489,0.0496,0.00133,0.00105,0.000229,0.000137,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1084_01.root +Sat Oct 9 16:24:21 2021,1084,4,500,11100,-5000,5000,22085,22777,96.9618,0.113725,1.90442,0.00663547,,0.404,0.402,0.088,0.101,0.00154,0.00181,0.000589,0.000408,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1084_01.root +Sat Oct 9 16:48:19 2021,1082,3,500,11100,-5000,5000,251274,253610,99.0789,0.0189697,1.61704,0.00163496,,0.538,0.363,0.0476,0.0488,0.00133,0.000816,0.000235,0.000103,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1082_02.root +Sat Oct 9 16:55:43 2021,1082,4,500,11100,-5000,5000,253819,256179,99.0788,0.0188757,1.91005,0.0019564,,0.4,0.406,0.0878,0.101,0.00234,0.00203,0.000619,0.000303,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1082_02.root +Sat Oct 9 17:26:14 2021,1082,3,500,11100,-5000,5000,251274,253610,99.0789,0.0189697,1.61704,0.00163496,,0.538,0.363,0.0476,0.0488,0.00133,0.000816,0.000235,0.000103,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1082_02.root +Sat Oct 9 17:32:39 2021,1082,4,500,11100,-5000,5000,253819,256179,99.0788,0.0188757,1.91005,0.0019564,,0.4,0.406,0.0878,0.101,0.00234,0.00203,0.000619,0.000303,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1082_02.root +Sat Oct 9 17:45:47 2021,1082,3,500,11100,-5000,5000,27181,27432,99.085,0.0574888,1.61727,0.00497385,,0.536,0.365,0.0476,0.048,0.00121,0.000883,0.000294,0.000147,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1082_02.root +Sat Oct 9 17:47:55 2021,1082,4,500,11100,-5000,5000,27443,27675,99.1617,0.054806,1.90924,0.00593891,,0.399,0.408,0.0862,0.101,0.00219,0.00186,0.000619,0.000219,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1082_02.root +Sat Oct 9 17:50:42 2021,1082,3,500,11100,-5000,5000,27181,27432,99.085,0.0574888,1.61727,0.00497385,,0.536,0.365,0.0476,0.048,0.00121,0.000883,0.000294,0.000147,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1082_02.root +Sat Oct 9 17:51:43 2021,1082,3,1000,10000,-2000,2000,10423,10518,99.0968,0.0922483,1.61925,0.00816302,,0.539,0.362,0.0454,0.0509,0.00106,0.000672,0.000288,0.000288,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1082_02.root +Sat Oct 9 17:53:32 2021,1082,4,1000,10000,-2000,2000,10574,10690,98.9149,0.100203,1.91221,0.00956087,,0.4,0.404,0.0876,0.105,0.00161,0.00151,0.000567,9.46e-05,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1082_02.root +Sat Oct 9 18:00:58 2021,1082,3,1000,10000,-200,200,1047,1056,99.1477,0.282878,1.64283,0.0261168,,0.526,0.371,0.042,0.0583,0.00191,0,0.000955,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1082_02.root +Sat Oct 9 18:02:03 2021,1082,4,1000,10000,-200,200,1084,1098,98.725,0.338591,1.92625,0.0299657,,0.404,0.385,0.095,0.114,0.000923,0.000923,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1082_02.root +Sat Oct 9 18:04:04 2021,1082,3,-15483,15483,-6774,6774,39450,39798,99.1256,0.0466682,1.61438,0.00413769,,0.54,0.362,0.0463,0.0488,0.00134,0.000887,0.00033,0.000127,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1082_02.root +Sat Oct 9 18:05:10 2021,1082,4,-15483,15483,-6774,6774,39485,39804,99.1986,0.0446911,1.91636,0.00497751,,0.397,0.408,0.0878,0.103,0.00198,0.0018,0.000709,0.000203,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1082_02.root +Sat Oct 9 18:09:19 2021,1082,3,-15500,15500,-7000,7000,39450,39804,99.1106,0.0470582,1.61438,0.00413769,,0.54,0.362,0.0463,0.0488,0.00134,0.000887,0.00033,0.000127,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1082_02.root +Sat Oct 9 18:11:43 2021,1082,4,-15500,15500,-7000,7000,39485,39804,99.1986,0.0446911,1.91636,0.00497751,,0.397,0.408,0.0878,0.103,0.00198,0.0018,0.000709,0.000203,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1082_02.root +Sat Oct 9 18:50:05 2021,1082,3,-15483,15483,-6774,6774,363461,366660,99.1275,0.0153582,1.61252,0.00135724,,0.541,0.361,0.0467,0.0485,0.00136,0.000812,0.000248,0.000105,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1082_03.root +Sat Oct 9 19:03:25 2021,1082,4,-15483,15483,-6774,6774,363471,366726,99.1124,0.0154881,1.91439,0.00163657,,0.398,0.407,0.0884,0.101,0.00234,0.002,0.000592,0.000294,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1082_03.root +Sat Oct 9 22:17:57 2021,1021,3,-15483,15483,-6774,6774,2,3,66.6667,27.2166,2,0.57735,,0.5,0,0.5,0,0,0,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_07.root +Sat Oct 9 22:19:05 2021,1021,3,-15483,15483,-6774,6774,4056,4161,97.4766,0.243135,1.86446,0.0152831,,0.413,0.416,0.0821,0.0772,0.00666,0.00296,0.000986,0.000493,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_07.root +Sat Oct 9 22:21:57 2021,1021,3,-15483,15483,-6774,6774,144011,163864,87.8845,0.0806094,1.86552,0.0026582,,0.42,0.408,0.0853,0.0746,0.00411,0.00503,0.00154,0.000792,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_07.root +Sat Oct 9 22:24:29 2021,1021,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_07.root +Sat Oct 9 22:24:50 2021,1021,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_07.root +Sat Oct 9 22:26:35 2021,1021,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_07.root +Sat Oct 9 22:27:05 2021,1021,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_07.root +Sat Oct 9 22:30:15 2021,1021,3,-11100,-500,-5000,5000,99019,112117,88.3176,0.09593,1.90432,0.00326048,,0.402,0.414,0.0914,0.0806,0.00423,0.00535,0.00149,0.00084,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_07.root +Sat Oct 9 22:33:29 2021,1021,3,-11100,-500,-5000,5000,10688,10880,98.2353,0.126228,1.91242,0.0099534,,0.4,0.414,0.0857,0.0897,0.00459,0.00356,0.00112,0.00131,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_03.root +Sat Oct 9 22:36:27 2021,1021,3,-11100,-500,-5000,5000,10688,10880,98.2353,0.126228,1.91242,0.0099534,,0.4,0.414,0.0857,0.0897,0.00459,0.00356,0.00112,0.00131,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_03.root +Sat Oct 9 22:49:07 2021,1021,3,-11100,-500,-5000,5000,15487,15767,98.2241,0.105181,1.90588,0.0083248,,0.404,0.412,0.0896,0.0804,0.00491,0.00581,0.00187,0.00123,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_04.root +Sat Oct 9 22:49:35 2021,1021,3,-11100,-500,-5000,5000,2829,2900,97.5517,0.286978,1.89938,0.0183654,,0.394,0.424,0.088,0.0841,0.00601,0.00141,0.00177,0.000707,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_01.root +Sat Oct 9 22:50:11 2021,1021,3,-11100,-500,-5000,5000,2829,2900,97.5517,0.286978,1.89938,0.0183654,,0.394,0.424,0.088,0.0841,0.00601,0.00141,0.00177,0.000707,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_01.root +Sat Oct 9 22:51:03 2021,1021,3,-11100,-500,-5000,5000,10688,10880,98.2353,0.126228,1.91242,0.0099534,,0.4,0.414,0.0857,0.0897,0.00459,0.00356,0.00112,0.00131,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_03.root +Sat Oct 9 22:52:03 2021,1021,3,-11100,-500,-5000,5000,10688,10880,98.2353,0.126228,1.91242,0.0099534,,0.4,0.414,0.0857,0.0897,0.00459,0.00356,0.00112,0.00131,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_03.root +Sat Oct 9 22:53:58 2021,1021,3,-11100,-500,-5000,5000,15487,15767,98.2241,0.105181,1.90588,0.0083248,,0.404,0.412,0.0896,0.0804,0.00491,0.00581,0.00187,0.00123,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_04.root +Sat Oct 9 22:56:58 2021,1021,3,-11100,-500,-5000,5000,100519,114913,87.474,0.0976475,1.89222,0.00320354,,0.406,0.413,0.0919,0.0777,0.00341,0.00541,0.00155,0.000907,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_200kE_300KEv.root +Sun Oct 10 09:22:43 2021,1021,3,-11100,-500,-5000,5000,10820,55873,19.3653,0.167175,1.93289,0.00997572,,0.38,0.431,0.0967,0.0794,0.00501,0.00395,0.00164,0.000771,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_1_100KEv.root +Sun Oct 10 09:28:20 2021,1021,3,-11100,-500,-5000,5000,10820,55873,19.3653,0.167175,1.93289,0.00997572,,0.38,0.431,0.0967,0.0794,0.00501,0.00395,0.00164,0.000771,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_1_100KEv.root +Sun Oct 10 09:28:46 2021,1021,3,-11100,-500,-5000,5000,152,158,96.2025,1.52059,1.73723,0.0790996,,0.513,0.342,0.0592,0.0724,0.00658,0.00658,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_1_100KEv.root +Sun Oct 10 09:29:14 2021,1021,3,-11100,-500,-5000,5000,8575,8769,97.7877,0.15707,1.89293,0.0109638,,0.402,0.418,0.0918,0.0754,0.00537,0.00408,0.0014,0.0007,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_1_100KEv.root +Sun Oct 10 09:31:59 2021,1021,3,-11100,-500,-5000,5000,70,8980,0.77951,0.0928054,3,0.358849,,0.429,0.286,0,0.143,0,0,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_100KEv_200KEv.root +Sun Oct 10 09:38:37 2021,1021,3,-11100,-500,-5000,5000,700,89799,0.779519,0.029348,3,0.114204,,0.429,0.286,0,0.143,0,0,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_100KEv_200KEv.root +Sun Oct 10 09:40:31 2021,1021,3,-11100,-500,-5000,5000,1624,1749,92.8531,0.615975,1.64931,0.0226609,,0.554,0.32,0.0629,0.0555,0,0.0074,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_200kEv_300KEv.root +Sun Oct 10 09:50:12 2021,1021,3,-11100,-500,-5000,5000,2812,2883,97.5373,0.288649,1.89876,0.0184826,,0.398,0.418,0.0878,0.0846,0.00747,0.00249,0.00107,0.000356,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_01.root +Sun Oct 10 09:51:34 2021,1021,3,-11100,-500,-5000,5000,2812,2883,97.5373,0.288649,1.89876,0.0184826,,0.398,0.418,0.0878,0.0846,0.00747,0.00249,0.00107,0.000356,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_01.root +Sun Oct 10 10:00:34 2021,1021,3,-11100,-500,-5000,5000,13888,15678,88.5827,0.253986,1.90507,0.00886769,,0.405,0.412,0.0893,0.0798,0.00577,0.00476,0.00144,0.00101,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_02.root +Sun Oct 10 10:08:33 2021,1021,3,-11100,-500,-5000,5000,13954,15206,91.7664,0.22291,1.90971,0.00865387,,0.398,0.416,0.092,0.0823,0.00366,0.00488,0.00179,0.00108,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1021_03.root +Sun Oct 10 10:09:03 2021,1021,3,-11100,-500,-5000,5000,2812,2883,97.5373,0.288649,1.89876,0.0184826,,0.398,0.418,0.0878,0.0846,0.00747,0.00249,0.00107,0.000356,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_01.root +Sun Oct 10 10:09:30 2021,1021,3,-11100,-500,-5000,5000,13888,15678,88.5827,0.253986,1.90507,0.00886769,,0.405,0.412,0.0893,0.0798,0.00577,0.00476,0.00144,0.00101,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_02.root +Sun Oct 10 10:10:03 2021,1021,3,-11100,-500,-5000,5000,13954,15206,91.7664,0.22291,1.90971,0.00865387,,0.398,0.416,0.092,0.0823,0.00366,0.00488,0.00179,0.00108,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_03.root +Sun Oct 10 10:12:32 2021,1021,3,-11100,-500,-5000,5000,118259,129825,91.0911,0.0790626,1.90987,0.00299136,,0.4,0.414,0.0921,0.0815,0.00454,0.00506,0.00174,0.000897,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_03.root +Sun Oct 10 11:35:57 2021,1021,3,-11100,-500,-5000,5000,99019,112117,88.3176,0.09593,1.90432,0.00326048,,0.402,0.414,0.0914,0.0806,0.00423,0.00535,0.00149,0.00084,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_01.root +Sun Oct 10 11:38:44 2021,1021,3,-11100,-500,-5000,5000,122352,128802,94.9923,0.0607717,1.90504,0.00293983,,0.402,0.412,0.0922,0.0802,0.00459,0.00536,0.00132,0.00094,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_02.root +Sun Oct 10 11:40:58 2021,1021,3,-11100,-500,-5000,5000,118259,129824,91.0918,0.0790601,1.90987,0.00299136,,0.4,0.414,0.0921,0.0815,0.00454,0.00506,0.00174,0.000897,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_03.root +Sun Oct 10 11:42:17 2021,1021,3,-11100,-500,-5000,5000,13942,15206,91.6875,0.223879,1.90916,0.00865693,,0.398,0.416,0.0921,0.0822,0.00366,0.00488,0.00179,0.00108,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_03.root +Sun Oct 10 11:52:53 2021,1021,3,-11100,-500,-5000,5000,98857,112117,88.1731,0.0964425,1.90375,0.00326252,,0.402,0.413,0.0913,0.0806,0.00423,0.00534,0.00147,0.00084,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_04.root +Sun Oct 10 14:53:54 2021,1072,3,500,11100,-5000,5000,0,2791,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1072_01.root +Sun Oct 10 14:54:28 2021,1072,3,500,11100,-5000,5000,0,2791,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1072_01.root +Sun Oct 10 14:55:11 2021,1072,3,-11100,-500,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1072_01.root +Sun Oct 10 14:55:33 2021,1072,3,-15000,-12100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1072_01.root +Sun Oct 10 14:55:54 2021,1072,3,500,11100,-5000,5000,0,2791,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1072_01.root +Sun Oct 10 15:35:35 2021,1072,3,500,11100,-5000,5000,4,6,66.6667,19.245,1.9,0.134164,,0.1,0.9,0,0,0,0,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1072_01.root +Sun Oct 10 15:43:29 2021,1072,3,500,11100,-5000,5000,4,6,66.6667,19.245,1.9,0.134164,,0.1,0.9,0,0,0,0,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1072_01.root +Sun Oct 10 17:11:54 2021,1072,3,500,11100,-5000,5000,141216,146632,96.3064,0.0492536,1.61295,0.00218421,,0.541,0.361,0.0465,0.0487,0.00125,0.0009,0.000262,0.00012,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1072_01.root +Sun Oct 10 17:17:10 2021,1073,3,500,11100,-5000,5000,21869,22857,95.6775,0.134513,1.58702,0.00544862,,0.556,0.353,0.0442,0.044,0.00142,0.000823,0.000366,9.15e-05,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1073_01.root +Sun Oct 10 19:05:34 2021,1072,3,500,11100,-5000,5000,159108,166544,95.5351,0.0506084,1.61369,0.00205876,,0.541,0.361,0.0471,0.0487,0.00123,0.00093,0.00027,0.000113,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1072_02.root +Sun Oct 10 19:16:22 2021,1072,3,500,11100,-5000,5000,141396,146806,96.3149,0.0491701,1.61292,0.00218271,,0.541,0.361,0.0465,0.0487,0.00126,0.000898,0.000262,0.00012,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1072_03.root +Mon Oct 11 09:57:15 2021,1104,3,500,11100,-5000,5000,0,28180,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1104_01.root +Mon Oct 11 09:57:42 2021,1104,3,500,11100,-5000,5000,0,28180,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1104_01.root +Mon Oct 11 09:58:04 2021,1104,3,500,11100,-5000,5000,0,28180,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1104_01.root +Mon Oct 11 09:58:46 2021,1104,3,500,11100,-5000,5000,0,28180,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1104_01.root +Mon Oct 11 10:03:59 2021,1104,3,500,11100,-5000,5000,27870,28479,97.8616,0.0857216,1.45854,0.00424698,,0.631,0.311,0.0312,0.0248,0.00126,0.00061,0.000215,0.000179,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1104_01.root +Mon Oct 11 10:08:38 2021,1104,4,500,11100,-5000,5000,27990,28607,97.8432,0.0858886,1.2514,0.0032114,,0.783,0.196,0.0106,0.00925,0.000679,0.000465,0.000107,7.15e-05,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1104_01.root +Mon Oct 11 10:21:13 2021,1104,3,500,11100,-5000,5000,25356,25570,99.1631,0.0569706,1.45904,0.00446373,,0.631,0.31,0.0313,0.0249,0.00126,0.00067,0.000197,0.000197,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1104_02.root +Mon Oct 11 10:22:07 2021,1104,4,500,11100,-5000,5000,25134,25685,97.8548,0.0904039,1.24965,0.00337372,,0.784,0.195,0.0103,0.00911,0.000676,0.000477,7.96e-05,7.96e-05,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1104_02.root +Mon Oct 11 15:46:49 2021,1186,3,500,11100,-5000,5000,0,2,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1186_01.root +Mon Oct 11 15:47:55 2021,1186,3,-11100,-500,-5000,5000,23408,24818,94.3186,0.146941,2.70006,0.0090882,,0.189,0.333,0.179,0.254,0.0153,0.0159,0.00551,0.00303,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1186_01.root +Mon Oct 11 16:15:25 2021,1186,3,-11100,-500,-5000,5000,20661,20794,99.3604,0.0552834,2.72364,0.00966771,,0.181,0.333,0.182,0.258,0.0154,0.0162,0.00576,0.00295,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1186_02.root +Mon Oct 11 16:19:16 2021,1186,3,-11100,-500,-5000,5000,23408,24818,94.3186,0.146941,2.70006,0.0090882,,0.189,0.333,0.179,0.254,0.0153,0.0159,0.00551,0.00303,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1186_01.root +Mon Oct 11 16:21:19 2021,1186,3,-11100,-500,-5000,5000,20661,20794,99.3604,0.0552834,2.72364,0.00966771,,0.181,0.333,0.182,0.258,0.0154,0.0162,0.00576,0.00295,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1186_02.root +Mon Oct 11 16:22:51 2021,1186,3,-11100,-500,-5000,5000,42121,42394,99.356,0.0388485,2.7264,0.00674112,,0.183,0.329,0.181,0.26,0.0157,0.0168,0.00615,0.00306,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1186_02.root +Mon Oct 11 16:24:33 2021,1186,3,-11100,-500,-5000,5000,42123,42394,99.3608,0.0387068,2.72639,0.00674081,,0.183,0.329,0.181,0.26,0.0157,0.0168,0.00615,0.00306,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1186_02.root +Mon Oct 11 16:27:44 2021,1186,4,-11100,-500,-5000,5000,37703,40963,92.0416,0.133724,1.13354,0.00214239,,0.886,0.102,0.00684,0.00403,0.000822,0.000265,7.96e-05,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1186_02.root +Mon Oct 11 16:29:54 2021,1186,4,-11100,-500,-5000,5000,37703,40963,92.0416,0.133724,1.13354,0.00214239,,0.886,0.102,0.00684,0.00403,0.000822,0.000265,7.96e-05,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1186_02.root +Mon Oct 11 16:31:03 2021,1186,3,-11100,-500,-5000,5000,42123,42394,99.3608,0.0387068,2.72639,0.00674081,,0.183,0.329,0.181,0.26,0.0157,0.0168,0.00615,0.00306,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1186_02.root +Mon Oct 11 16:32:32 2021,1186,3,-11100,-500,-5000,5000,42123,42394,99.3608,0.0387068,2.72641,0.00674079,,0.182,0.329,0.181,0.26,0.0157,0.0168,0.00615,0.00306,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1186_02.root +Mon Oct 11 17:38:23 2021,1186,3,-11100,-500,-5000,5000,20655,20787,99.365,0.055095,2.72359,0.00966945,,0.181,0.333,0.182,0.258,0.0154,0.0162,0.00576,0.00295,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1186_03.root +Mon Oct 11 17:58:42 2021,1186,3,-11100,-500,-5000,5000,20584,20716,99.3628,0.0552832,2.72414,0.00968609,,0.181,0.333,0.183,0.258,0.0155,0.0162,0.00573,0.00296,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1186_04.root +Mon Oct 11 18:11:47 2021,1186,3,-11100,-500,-5000,5000,20437,20569,99.3583,0.055677,2.7224,0.0097113,,0.181,0.333,0.183,0.257,0.0155,0.0161,0.00577,0.00298,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1186_05.root +Mon Oct 11 23:24:45 2021,1186,3,-11100,-500,-5000,5000,22790,22930,99.3894,0.0514435,2.72777,0.00920528,,0.179,0.334,0.182,0.259,0.0157,0.0161,0.00566,0.00312,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1186_043.root +Tue Oct 12 08:51:36 2021,1186,3,-11100,-500,-5000,5000,23414,24818,94.3428,0.146646,2.70008,0.00908628,,0.189,0.333,0.179,0.254,0.0153,0.0159,0.00551,0.00303,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1186_01.root +Tue Oct 12 08:52:24 2021,1186,3,-11100,-500,-5000,5000,20662,20794,99.3652,0.0550765,2.72364,0.00966726,,0.181,0.333,0.182,0.258,0.0154,0.0162,0.00576,0.00295,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1186_02.root +Tue Oct 12 09:46:04 2021,1186,3,-11100,-500,-5000,5000,22790,22930,99.3894,0.0514435,2.72777,0.00920528,,0.179,0.334,0.182,0.259,0.0157,0.0161,0.00566,0.00312,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1186_03.root +Tue Nov 9 15:59:13 2021,1021,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_01.root +Tue Nov 9 15:59:35 2021,1021,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1021_01.root +Tue Nov 9 16:13:37 2021,1089,3,500,11100,-5000,5000,4908,5000,98.16,0.19006,1.61982,0.0116937,,0.534,0.367,0.0479,0.0485,0.00143,0.000408,0.000408,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1089_01.root +Tue Nov 9 16:39:08 2021,1089,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1089_01.root +Tue Nov 9 16:43:08 2021,1089,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1089_01.root +Tue Nov 9 16:43:57 2021,1089,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1089_01.root +Tue Nov 9 16:44:09 2021,1089,3,500,11100,-5000,5000,2,2,100,0,1,0,,1,0,0,0,0,0,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1089_01.root +Mon Nov 22 15:40:39 2021,1089,3,500,11100,-5000,5000,4908,5000,98.16,0.19006,1.61983,0.0116937,,0.534,0.367,0.0479,0.0485,0.00143,0.000408,0.000408,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1089_01.root +Mon Nov 22 15:46:43 2021,1089,3,500,11100,-5000,5000,8859,8893,99.6177,0.0654424,1.67785,0.00910474,,0.501,0.387,0.0527,0.0558,0.00181,0.000903,0.00079,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1089_02.root +Mon Nov 22 15:53:07 2021,1089,3,500,11100,-5000,5000,9579,9601,99.7709,0.0487974,1.68494,0.00883875,,0.5,0.385,0.053,0.0583,0.00188,0.00104,0.000731,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1089_03.root +Mon Nov 22 17:16:11 2021,1089,3,500,11100,-5000,5000,10001,10010,99.9101,0.0299566,1.68803,0.00866972,,0.498,0.386,0.0534,0.0586,0.0018,0.0011,0.0008,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1089_04.root +Mon Nov 22 18:13:05 2021,1089,3,500,11100,-5000,5000,4908,5000,98.16,0.19006,1.61983,0.0116937,,0.534,0.367,0.0479,0.0485,0.00143,0.000408,0.000408,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1089_01.root +Mon Nov 22 18:14:42 2021,1089,3,500,11100,-5000,5000,8859,8893,99.6177,0.0654424,1.67785,0.00910474,,0.501,0.387,0.0527,0.0558,0.00181,0.000903,0.00079,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1089_02.root +Mon Nov 22 18:15:29 2021,1089,3,500,11100,-5000,5000,9579,9601,99.7709,0.0487974,1.68494,0.00883875,,0.5,0.385,0.053,0.0583,0.00188,0.00104,0.000731,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1089_03.root +Mon Nov 22 18:16:59 2021,1089,3,500,11100,-5000,5000,10001,10010,99.9101,0.0299566,1.68803,0.00866972,,0.498,0.386,0.0534,0.0586,0.0018,0.0011,0.0008,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1089_04.root +Mon Nov 22 18:26:30 2021,1089,3,500,11100,-5000,5000,4908,5000,98.16,0.19006,1.61983,0.0116937,,0.534,0.367,0.0479,0.0485,0.00143,0.000408,0.000408,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run1089_01.root +Thu Nov 25 10:42:52 2021,1084,3,500,11100,-5000,5000,60006,60222,99.6413,0.0243608,1.67599,0.00348958,,0.504,0.382,0.0532,0.0581,0.00138,0.00085,0.000333,0.000167,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run1084_01.root diff --git a/results_ana_M99/Main_results.csv b/results_ana_M99/Main_results.csv new file mode 100644 index 0000000..c0fee75 --- /dev/null +++ b/results_ana_M99/Main_results.csv @@ -0,0 +1,112 @@ +Mon Oct 11 10:46:44 2021,454,3,500,11100,-5000,5000,1599,1613,99.1321,0.23096,1.50658,0.0186272,,0.604,0.326,0.0288,0.04,0.000625,0,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run454_03.root +Mon Oct 11 10:48:41 2021,454,4,500,11100,-5000,5000,1592,1610,98.882,0.262041,1.47175,0.0169979,,0.611,0.328,0.0396,0.0207,0.000628,0,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run454_03.root +Mon Oct 11 10:49:29 2021,454,3,500,11100,-5000,5000,1599,1613,99.1321,0.23096,1.50658,0.0186272,,0.604,0.326,0.0288,0.04,0.000625,0,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run454_03.root +Fri Oct 15 14:30:50 2021,619,3,500,11100,-5000,5000,6841,6849,99.8832,0.0412728,1.0782,0.00387593,,0.933,0.0596,0.00424,0.00292,0.000146,0.000146,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Fri Oct 15 14:33:23 2021,619,4,500,11100,-5000,5000,0,6830,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Fri Oct 15 15:16:30 2021,619,3,500,11100,-5000,5000,119356,119370,99.9883,0.00313432,1.00452,0.000228922,,0.996,0.00345,0.000243,0.000168,8.38e-06,8.38e-06,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Fri Oct 15 17:50:03 2021,619,3,500,11100,-5000,5000,1357,1371,98.9788,0.271517,1.39721,0.0170374,,0.659,0.304,0.0214,0.0147,0.000737,0.000737,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_02.root +Fri Oct 15 18:01:01 2021,619,3,500,11100,-5000,5000,2371,2394,99.0393,0.199363,1.38255,0.0126224,,0.67,0.294,0.0211,0.0135,0.000844,0.000422,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_03.root +Fri Oct 15 18:02:12 2021,619,3,500,11100,-5000,5000,2667,2692,99.0713,0.184871,1.38358,0.0119058,,0.669,0.296,0.0199,0.0142,0.00075,0.000375,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_03.root +Fri Oct 15 18:15:41 2021,619,3,500,11100,-5000,5000,55845,56301,99.1901,0.0377746,1.36867,0.00265815,,0.687,0.276,0.0204,0.0145,0.00102,0.000376,0.000215,8.95e-05,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_04.root +Fri Oct 15 18:17:17 2021,619,3,500,11100,-5000,5000,55845,56301,99.1901,0.0377746,1.36867,0.00265815,,0.687,0.276,0.0204,0.0145,0.00102,0.000376,0.000215,8.95e-05,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_04.root +Tue Oct 19 18:23:09 2021,619,3,500,11100,-5000,5000,2378,2393,99.3732,0.161338,1.35997,0.0123143,,0.691,0.27,0.0269,0.0114,0,0.000421,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_011.root +Tue Oct 19 18:31:35 2021,619,3,500,11100,-5000,5000,3797,3831,99.1125,0.151528,1.38662,0.0102478,,0.672,0.289,0.0213,0.0153,0.00184,0.000263,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_012.root +Tue Oct 19 18:39:12 2021,619,3,500,11100,-5000,5000,45355,45535,99.6047,0.0294057,1.36389,0.00293864,,0.692,0.272,0.0202,0.0144,0.00104,0.000375,0.000243,8.82e-05,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_013.root +Tue Oct 19 18:40:09 2021,619,4,500,11100,-5000,5000,44461,44867,99.0951,0.0447056,1.75876,0.00427978,,0.462,0.398,0.068,0.0672,0.00198,0.00191,0.00054,0.000225,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_013.root +Tue Oct 19 18:41:48 2021,619,3,500,11100,-5000,5000,45355,45535,99.6047,0.0294057,1.36389,0.00293864,,0.692,0.272,0.0202,0.0144,0.00104,0.000375,0.000243,8.82e-05,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_013.root +Tue Oct 19 18:56:01 2021,619,3,500,11100,-5000,5000,48748,49145,99.1922,0.0403789,1.36759,0.00284112,,0.689,0.274,0.0208,0.0146,0.000964,0.000308,0.000246,8.21e-05,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_014.root +Tue Oct 19 19:10:52 2021,619,3,500,11100,-5000,5000,50268,50488,99.5643,0.029314,1.36538,0.00278903,,0.69,0.274,0.0201,0.0144,0.00109,0.000378,0.000219,7.96e-05,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_015.root +Tue Oct 19 19:12:00 2021,619,3,500,11100,-5000,5000,50268,50488,99.5643,0.029314,1.36538,0.00278903,,0.69,0.274,0.0201,0.0144,0.00109,0.000378,0.000219,7.96e-05,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_015.root +Tue Oct 19 19:13:33 2021,619,3,500,11100,-5000,5000,50268,50488,99.5643,0.029314,1.36538,0.00278903,,0.69,0.274,0.0201,0.0144,0.00109,0.000378,0.000219,7.96e-05,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_015.root +Tue Oct 19 22:55:42 2021,619,3,500,11100,-5000,5000,2577,2594,99.3446,0.158426,1.3671,0.0120255,,0.682,0.286,0.0171,0.0128,0.00116,0.000776,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_016.root +Tue Oct 19 23:02:07 2021,619,3,500,11100,-5000,5000,2665,2690,99.0706,0.185008,1.38387,0.011913,,0.668,0.296,0.0199,0.0143,0.00075,0.000375,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_017.root +Tue Oct 19 23:17:54 2021,619,3,500,11100,-5000,5000,47561,47756,99.5917,0.029181,1.36429,0.00286936,,0.691,0.272,0.0201,0.0143,0.00111,0.000378,0.000231,8.41e-05,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_018.root +Tue Oct 19 23:19:14 2021,619,3,500,11100,-5000,5000,47561,47756,99.5917,0.029181,1.36429,0.00286936,,0.691,0.272,0.0201,0.0143,0.00111,0.000378,0.000231,8.41e-05,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_018.root +Tue Oct 19 23:25:15 2021,619,3,500,11100,-5000,5000,2528,2543,99.4101,0.15185,1.34969,0.012234,,0.701,0.267,0.015,0.0138,0.00119,0.00119,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_019.root +Wed Oct 20 09:48:02 2021,619,3,500,11100,-5000,5000,2575,2592,99.3441,0.158548,1.367,0.0120315,,0.682,0.286,0.0171,0.0128,0.00117,0.000777,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Wed Oct 20 09:48:43 2021,619,3,0,11611,-5670,5670,3084,3111,99.1321,0.166299,1.36187,0.0109375,,0.688,0.278,0.0198,0.0123,0.000973,0.000649,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_01.root +Wed Oct 20 09:49:09 2021,619,3,-15483,15483,-6774,6774,4238,4271,99.2273,0.133981,1.37164,0.00951275,,0.683,0.281,0.0205,0.0144,0.000708,0.000708,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_01.root +Wed Oct 20 09:49:44 2021,619,3,500,11100,-5000,5000,2575,2592,99.3441,0.158548,1.36699,0.0120315,,0.682,0.286,0.0171,0.0128,0.00117,0.000777,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_01.root +Wed Oct 20 10:43:04 2021,619,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_02.root +Wed Oct 20 10:44:05 2021,619,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_02.root +Wed Oct 20 11:03:31 2021,619,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Wed Oct 20 11:04:09 2021,619,3,-11100,-500,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Wed Oct 20 11:14:00 2021,619,3,500,11100,-5000,5000,2551,2568,99.338,0.160025,1.37045,0.012124,,0.679,0.289,0.0172,0.0129,0.00118,0.000784,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Wed Oct 20 11:29:42 2021,619,3,500,11100,-5000,5000,46305,46452,99.6835,0.0260595,1.36733,0.00291927,,0.689,0.275,0.0203,0.0144,0.00117,0.00041,0.000238,8.64e-05,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_02.root +Wed Oct 20 11:30:57 2021,619,3,500,11100,-5000,5000,46305,46452,99.6835,0.0260595,1.36733,0.00291927,,0.689,0.275,0.0203,0.0144,0.00117,0.00041,0.000238,8.64e-05,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_02.root +Wed Oct 20 11:36:27 2021,619,3,500,11100,-5000,5000,2493,2505,99.521,0.137956,1.37385,0.0123322,,0.677,0.29,0.0176,0.0132,0.0012,0.000802,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_03.root +Wed Oct 20 11:45:23 2021,619,3,500,11100,-5000,5000,1558,1568,99.3622,0.201032,1.37292,0.0156163,,0.678,0.29,0.0167,0.0128,0.00193,0.000642,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_04.root +Wed Oct 20 11:45:58 2021,619,3,0,11611,-5670,5670,1851,1867,99.143,0.213327,1.36737,0.0143325,,0.686,0.279,0.02,0.013,0.00162,0.00054,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_04.root +Wed Oct 20 11:46:26 2021,619,3,500,11100,-5000,5000,2493,2505,99.521,0.137956,1.37385,0.0123322,,0.677,0.29,0.0176,0.0132,0.0012,0.000802,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_03.root +Wed Oct 20 11:47:18 2021,619,3,500,11100,-5000,5000,30778,30870,99.702,0.0310248,1.36552,0.00357243,,0.69,0.273,0.0202,0.015,0.000747,0.000292,0.00026,9.75e-05,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_02.root +Wed Oct 20 11:48:18 2021,619,3,-15483,15483,-6774,6774,33317,33420,99.6918,0.0303209,1.36759,0.00344094,,0.689,0.274,0.0205,0.0151,0.00069,0.00033,0.00024,0.00012,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_02.root +Wed Oct 20 11:49:24 2021,619,3,0,11611,-5670,5670,32156,32248,99.7147,0.029701,1.36594,0.00349531,,0.69,0.273,0.0203,0.015,0.000715,0.000342,0.000249,9.33e-05,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_02.root +Wed Oct 20 11:55:59 2021,619,3,0,11611,-5670,5670,2925,2939,99.5236,0.127007,1.34804,0.0112111,,0.701,0.269,0.0161,0.0126,0.00103,0.00103,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_05.root +Wed Oct 20 11:56:30 2021,619,3,-15483,15483,-6774,6774,3984,4006,99.4508,0.116763,1.36496,0.0097504,,0.687,0.279,0.0178,0.0141,0.001,0.000753,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_05.root +Wed Oct 20 15:31:37 2021,619,3,500,11100,-5000,5000,3864,3887,99.4083,0.123016,1.39053,0.0101735,,0.668,0.293,0.0217,0.0153,0.00181,0.000259,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_06.root +Wed Oct 20 15:32:30 2021,619,3,-15483,15483,-6774,6774,6146,6184,99.3855,0.0993765,1.38969,0.0081049,,0.671,0.288,0.0241,0.0155,0.00114,0.000325,0.000163,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_06.root +Wed Oct 20 15:44:30 2021,619,3,500,11100,-5000,5000,2484,2496,99.5192,0.138452,1.3748,0.0123669,,0.676,0.291,0.0177,0.0133,0.00121,0.000805,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_07.root +Wed Oct 20 15:50:02 2021,619,3,500,11100,-5000,5000,1774,1785,99.3838,0.185232,1.37543,0.0157587,,0.692,0.267,0.0186,0.0192,0.00169,0,0.00113,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_08.root +Wed Oct 20 16:02:07 2021,619,3,500,11100,-5000,5000,1774,1785,99.3838,0.185232,1.37543,0.0157587,,0.692,0.267,0.0186,0.0192,0.00169,0,0.00113,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_09.root +Tue Nov 9 15:56:49 2021,619,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_012.root +Tue Nov 9 15:57:06 2021,619,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_012.root +Tue Nov 9 15:57:40 2021,619,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_01.root +Tue Nov 9 15:58:00 2021,619,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_01.root +Tue Nov 9 16:50:58 2021,619,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 9 16:51:13 2021,619,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 9 16:57:05 2021,619,3,-11100,-500,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 9 16:58:00 2021,619,3,-11100,-500,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 9 17:06:42 2021,619,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 9 17:07:37 2021,619,3,500,11100,-5000,5000,166,166,100,0,1.39759,0.0508775,,0.675,0.277,0.0241,0.0241,0,0,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 9 17:08:42 2021,619,3,500,11100,-5000,5000,1809,1822,99.2865,0.197183,1.3748,0.0156104,,0.693,0.266,0.0188,0.0193,0.00166,0,0.00111,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 9 17:28:19 2021,619,3,500,11100,-5000,5000,1809,1822,99.2865,0.197183,1.3748,0.0156104,,0.693,0.266,0.0188,0.0193,0.00166,0,0.00111,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Wed Nov 10 09:29:11 2021,619,3,500,11100,-5000,5000,1809,1822,99.2865,0.197183,1.3748,0.0156104,,0.693,0.266,0.0188,0.0193,0.00166,0,0.00111,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 16 09:24:43 2021,619,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 16 18:02:33 2021,619,3,-11100,-500,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 16 18:02:53 2021,619,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 16 18:03:27 2021,619,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 16 18:03:59 2021,619,3,-11100,-500,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 16 18:05:17 2021,619,3,500,11100,-5000,5000,9,9,100,0,1.44444,0.157135,,0.556,0.444,0,0,0,0,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 16 18:06:12 2021,619,3,500,11100,-5000,5000,9,9,100,0,1.44444,0.157135,,0.556,0.444,0,0,0,0,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 16 18:08:12 2021,619,3,500,11100,-5000,5000,9,9,100,0,1.44444,0.157135,,0.556,0.444,0,0,0,0,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 16 18:13:22 2021,619,3,500,11100,-5000,5000,22,22,100,0,1.45455,0.150457,,0.636,0.318,0,0.0455,0,0,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 16 18:13:41 2021,619,3,500,11100,-5000,5000,166,166,100,0,1.39759,0.0508775,,0.675,0.277,0.0241,0.0241,0,0,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 16 18:14:08 2021,619,3,500,11100,-5000,5000,888,897,98.9967,0.332766,1.35924,0.0226894,,0.714,0.244,0.0158,0.0225,0.00225,0,0.00113,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 16 18:17:14 2021,619,3,500,11100,-5000,5000,888,897,98.9967,0.332766,1.35924,0.0226894,,0.714,0.244,0.0158,0.0225,0.00225,0,0.00113,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 16 18:18:08 2021,619,3,500,11100,-5000,5000,888,897,98.9967,0.332766,1.35924,0.0226894,,0.714,0.244,0.0158,0.0225,0.00225,0,0.00113,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 16 18:19:04 2021,619,3,500,11100,-5000,5000,888,897,98.9967,0.332766,1.35924,0.0226894,,0.714,0.244,0.0158,0.0225,0.00225,0,0.00113,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 16 18:50:38 2021,619,3,500,11100,-5000,5000,888,897,98.9967,0.332766,1.35924,0.0226894,,0.714,0.244,0.0158,0.0225,0.00225,0,0.00113,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 16 19:18:19 2021,619,3,500,11100,-5000,5000,383,388,98.7113,0.572581,1.36815,0.0354755,,0.708,0.251,0.0157,0.0235,0,0,0.00261,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 16 19:27:57 2021,619,3,500,11100,-5000,5000,383,388,98.7113,0.572581,1.36815,0.0354755,,0.708,0.251,0.0157,0.0235,0,0,0.00261,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 16 19:28:56 2021,619,3,500,11100,-5000,5000,383,388,98.7113,0.572581,1.36815,0.0354755,,0.708,0.251,0.0157,0.0235,0,0,0.00261,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Tue Nov 16 22:43:32 2021,619,3,500,11100,-5000,5000,383,388,98.7113,0.572581,1.36815,0.0354755,,0.708,0.251,0.0157,0.0235,0,0,0.00261,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Wed Nov 17 09:21:20 2021,619,3,500,11100,-5000,5000,215,216,99.537,0.46189,1.3814,0.0465719,,0.702,0.247,0.0186,0.0326,0,0,0,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Wed Nov 17 10:17:30 2021,619,3,500,11100,-5000,5000,888,897,98.9967,0.332766,1.35924,0.0226894,,0.714,0.244,0.0158,0.0225,0.00225,0,0.00113,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Wed Nov 17 10:59:46 2021,619,3,500,11100,-5000,5000,888,897,98.9967,0.332766,1.35924,0.0226894,,0.714,0.244,0.0158,0.0225,0.00225,0,0.00113,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Wed Nov 17 11:01:23 2021,619,3,500,11100,-5000,5000,888,897,98.9967,0.332766,1.35924,0.0226894,,0.714,0.244,0.0158,0.0225,0.00225,0,0.00113,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Wed Nov 17 11:14:04 2021,619,3,500,11100,-5000,5000,383,388,98.7113,0.572581,1.36815,0.0354755,,0.708,0.251,0.0157,0.0235,0,0,0.00261,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Fri Nov 19 08:42:59 2021,619,3,500,11100,-5000,5000,383,388,98.7113,0.572581,1.36815,0.0354755,,0.708,0.251,0.0157,0.0235,0,0,0.00261,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Fri Nov 19 09:22:38 2021,619,3,500,11100,-5000,5000,383,388,98.7113,0.572581,1.36815,0.0354755,,0.708,0.251,0.0157,0.0235,0,0,0.00261,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Fri Nov 19 09:51:21 2021,619,3,500,11100,-5000,5000,383,388,98.7113,0.572581,1.36815,0.0354755,,0.708,0.251,0.0157,0.0235,0,0,0.00261,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Fri Nov 19 09:53:33 2021,619,3,500,11100,-5000,5000,383,388,98.7113,0.572581,1.36815,0.0354755,,0.708,0.251,0.0157,0.0235,0,0,0.00261,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Mon Nov 22 10:07:48 2021,619,3,500,11100,-5000,5000,383,388,98.7113,0.572581,1.36815,0.0354755,,0.708,0.251,0.0157,0.0235,0,0,0.00261,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Mon Nov 22 11:34:30 2021,619,3,500,11100,-5000,5000,427,431,99.0719,0.461879,1.37471,0.033414,,0.7,0.258,0.0164,0.0234,0,0,0.00234,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Mon Nov 22 11:45:27 2021,619,3,500,11100,-5000,5000,427,431,99.0719,0.461879,1.37471,0.033414,,0.7,0.258,0.0164,0.0234,0,0,0.00234,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Mon Nov 22 11:46:02 2021,619,3,500,11100,-5000,5000,2176,2187,99.497,0.15127,1.38144,0.0142165,,0.687,0.272,0.0193,0.0193,0.00184,0,0.000919,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Mon Nov 22 11:56:26 2021,619,3,500,11100,-5000,5000,2175,2186,99.4968,0.151339,1.38161,0.0142219,,0.686,0.272,0.0193,0.0193,0.00184,0,0.00092,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Mon Nov 22 12:14:46 2021,619,3,500,11100,-5000,5000,1809,1822,99.2865,0.197183,1.3748,0.0156104,,0.693,0.266,0.0188,0.0193,0.00166,0,0.00111,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Mon Nov 22 12:24:56 2021,619,3,500,11100,-5000,5000,2175,2186,99.4968,0.151339,1.38161,0.0142219,,0.686,0.272,0.0193,0.0193,0.00184,0,0.00092,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Mon Nov 22 13:31:05 2021,619,3,500,11100,-5000,5000,1809,1822,99.2865,0.197183,1.3748,0.0156104,,0.693,0.266,0.0188,0.0193,0.00166,0,0.00111,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_02.root +Mon Nov 22 13:33:13 2021,619,3,500,11100,-5000,5000,2175,2186,99.4968,0.151339,1.38161,0.0142219,,0.686,0.272,0.0193,0.0193,0.00184,0,0.00092,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_01.root +Mon Nov 22 13:51:57 2021,619,3,500,11100,-5000,5000,0,0,0,0,0,0,,nan,nan,nan,nan,nan,nan,nan,nan,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_03.root +Mon Nov 22 13:59:51 2021,619,3,500,11100,-5000,5000,2279,2279,100,0,1.41553,0.0143063,,0.66,0.292,0.0237,0.0206,0.00219,0,0.000878,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Mon Nov 22 14:07:22 2021,619,3,500,11100,-5000,5000,1809,1822,99.2865,0.197183,1.3748,0.0156104,,0.693,0.266,0.0188,0.0193,0.00166,0,0.00111,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_02.root +Mon Nov 22 14:15:32 2021,619,3,500,11100,-5000,5000,1809,1822,99.2865,0.197183,1.3748,0.0156104,,0.693,0.266,0.0188,0.0193,0.00166,0,0.00111,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Mon Nov 22 14:27:31 2021,619,3,500,11100,-5000,5000,2210,2212,99.9096,0.0639048,1.41448,0.0146194,,0.663,0.288,0.024,0.0213,0.00226,0,0.000905,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_02.root +Mon Nov 22 14:51:27 2021,619,3,500,11100,-5000,5000,2274,2274,100,0,1.41513,0.014315,,0.661,0.292,0.0233,0.0207,0.0022,0,0.00088,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_03.root +Mon Nov 22 14:58:30 2021,619,3,500,11100,-5000,5000,1809,1822,99.2865,0.197183,1.3748,0.0156104,,0.693,0.266,0.0188,0.0193,0.00166,0,0.00111,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_01.root +Mon Nov 22 15:05:54 2021,619,3,500,11100,-5000,5000,2210,2212,99.9096,0.0639048,1.41448,0.0146194,,0.663,0.288,0.024,0.0213,0.00226,0,0.000905,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_02.root +Mon Nov 22 15:13:58 2021,619,3,500,11100,-5000,5000,2274,2274,100,0,1.41513,0.014315,,0.661,0.292,0.0233,0.0207,0.0022,0,0.00088,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF//run619_03.root +Mon Nov 22 18:18:43 2021,619,3,500,11100,-5000,5000,1809,1822,99.2865,0.197183,1.3748,0.0156104,,0.693,0.266,0.0188,0.0193,0.00166,0,0.00111,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_01.root +Mon Nov 22 18:19:35 2021,619,3,500,11100,-5000,5000,2210,2212,99.9096,0.0639048,1.41448,0.0146194,,0.663,0.288,0.024,0.0213,0.00226,0,0.000905,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_02.root +Mon Nov 22 18:20:11 2021,619,3,500,11100,-5000,5000,2274,2274,100,0,1.41513,0.014315,,0.661,0.292,0.0233,0.0207,0.0022,0,0.00088,0,/Users/zelbitar/HEP_SOFT/taf.git/taf/datDSF/run619_03.root diff --git a/script_taf.sh b/script_taf.sh new file mode 100755 index 0000000..4569f54 --- /dev/null +++ b/script_taf.sh @@ -0,0 +1,12 @@ + +# ROOT : need to set the environnment of ROOT in case of nohup usage. + +source /Users/zelbitar/ilcsoft.v1/root-install/bin/thisroot.sh + +# TAF : set the TAF environnment + +source /Users/zelbitar/HEP_SOFT/taf.git/taf.origin/taf/Scripts/thistaf.sh + +# EXECUTE TAF: Full Binary Path should be given + +/Users/zelbitar/HEP_SOFT/taf.git/taf.origin/taf/bin/bin/TAF -q -run 405 -dsfp 10