// ------------------------------------------------------------------------- // ----- CbmMvdMimoDataCheck source file ----- // ----- Created 23.08.2011 by Q. Li, M. Deveaux ----- // ------------------------------------------------------------------------- #include "CbmMvdMimoDataCheck.h" #include "FairLogger.h" #include #include using std::cout; using std::endl; // ----- Default constructor ------------------------------------------- CbmMvdMimoDataCheck::CbmMvdMimoDataCheck(): FairTask() { fVerbose=0; } // ------------------------------------------------------------------------- // ----- Standard constructor ------------------------------------------ CbmMvdMimoDataCheck::CbmMvdMimoDataCheck(const char* name, Int_t iVerbose) : FairTask(name){ fVerbose=iVerbose; fInputPersistance=-1; } // ------------------------------------------------------------------------- InitStatus CbmMvdMimoDataCheck::Init(){ FairRootManager* ioman = FairRootManager::Instance(); if ( ! ioman ) { cout << "-E- " << GetName() << "::Init: No FairRootManager!" << endl; return kFATAL; } fDigiArray= (TClonesArray*) ioman->GetObject("MvdDigi"); if (!fDigiArray){ Fatal (GetName(), "Could not find Mvddigis");} fMimoDataStateMatchArray = (TClonesArray*) ioman->GetObject("MimoDataStateMatch"); if (!fMimoDataStateMatchArray) { Fatal (GetName(), "Could not find StateMatch!");} fMimoDataArray = (TClonesArray*) ioman->GetObject("MimoData"); if (!fMimoDataArray) { Fatal (GetName(), "Could not find MimoData!"); } } // ------------------------------------------------------------------------- InitStatus CbmMvdMimoDataCheck::ReInit(){cout << "Hello World Init the ClusterFinder again " << endl;} /** compare each state between MimoData and StateMatch**/ void CbmMvdMimoDataCheck::CompareDataWithStateMatch(){ Int_t fNumOfEntriesDataArray = 0; Int_t fNumOfEntriesStateArray = 0; Int_t fFrameID1 = 0; Int_t fFrameID2 = 0; Int_t fSensorID1 = 0; Int_t fSensorID2 = 0; Int_t fStateNum = 0; Int_t fStateIndex = 0; Int_t fDigiIndex = 0; Int_t fPixel_Colum = 0; Int_t fPixel_Row = 0; Int_t fStateNumberInStateMatch = 0; Int_t fStateNumInMimoData = 0; Double_t fTotalNum = 0; Double_t fRightNum = 0; Double_t fBadNum = 0; fNumOfEntriesDataArray = fMimoDataArray->GetEntries();// to get the index of entry fNumOfEntriesStateArray = fMimoDataStateMatchArray->GetEntries(); tcan = new TCanvas("Checker","StateChecker",10,10,1200,1200); tcan->cd(); tcan->Divide(1,2); Float_t state; TH2I *fDigiHisto = new TH2I("MimoData","MimoDataHisto",1152,0,1152,576,0,576); TH2I *fStateHisto = new TH2I("StateMatch","StateMatchHisto",1152,0,1152,576,0,576); if(fNumOfEntriesDataArray == fNumOfEntriesStateArray) { while(fNumOfEntriesDataArray) { fMimoData = (CbmMvdMimoData*)fMimoDataArray->At(fNumOfEntriesDataArray-1); fMimoStateMatch = (CbmMvdMimoStateMatch*)fMimoDataStateMatchArray->At(fNumOfEntriesStateArray-1); fNumOfEntriesDataArray--; if (fMimoData == NULL) cout << "ZERO POINTER in MimoData "<< endl; else if (fMimoStateMatch == NULL) cout << "ZERO POINTER in MimoStateMatch"<< endl; else { fFrameID1 = fMimoData->GetROCFrame(); fFrameID2 = fMimoStateMatch->GetROCFrame(); fSensorID1 = fMimoData->GetSensorOffset(); fSensorID2 = fMimoStateMatch->GetSensorOffset(); fStateNumInMimoData = fMimoData->GetStateNum(); fStateNumberInStateMatch = fMimoStateMatch->GetStateNums(); if((fSensorID1 == fSensorID2)&&(fFrameID1 == fFrameID2)&&(fStateNumInMimoData == fStateNumberInStateMatch )) { fStateVector.clear(); fMimoData->GetState(fStateVector); for(Int_t i=0;iSetBinContent(fRowAddr,fState/8%2048+nn,1); fDigiHisto->SetBinContent(fRowAddr,fState/8%2048+nn+10,0); } stateDigis.clear(); if(fStateNumberInStateMatch > (fStateIndex+j)) { fMimoStateMatch->GetStateDigis(fStateIndex+j,stateDigis); fDigiIndex = stateDigis[0]; fDigi = (CbmMvdDigi*)fDigiArray->At(fDigiIndex); fPixel_Colum = fDigi->GetPixelX()%1152; fPixel_Row = fDigi->GetPixelY()%576; Int_t fDigiNumInOneState = stateDigis.size(); //add for test for(Int_t nn=0;nnSetBinContent(fPixel_Row,fPixel_Colum,1); if(fPixel_Row!=fRowAddr) { cout<<"The "<< fStateIndex <<"th state is wrong because of fRowAddr Error"<cd(1); fDigiHisto->DrawClone("colz"); tcan->cd(2); fStateHisto->DrawClone("colz"); } else cout<<"Board Info is wrong!"<