Hi, I have been trying to figure out how to get the tpm1 vertex out of Brat. I got some instructions from Hiro which I'll send along with this message. Before going into the details of what I did, the bottom line is that I'm getting an error: (Many of these Warning lines have been suppressed...) Warning in <BrTPCSequence::Compare>: this method must be overridden! Warning in <BrTPCSequence::Compare>: this method must be overridden! Warning in <BrTPCSequence::Compare>: this method must be overridden! Warning in <BrTPCSequence::Compare>: this method must be overridden! Warning in <BrTPCSequence::Compare>: this method must be overridden! Warning in <BrTPCSequence::Compare>: this method must be overridden! root.exe: BrTPCClusterFinder.cxx:409: Bool_t BrTPCClusterFinder::FindClusters(): Assertion `tabSeq' failed. This is found using Brat 1.15.1 and Root 3.00.06. I see the same failure mode running on my linuxPPC system AND running on the RCF machines. (Side note: Why is root 3.00.06 not available on the rcf machines?, I had to compile it in my own directory. The 1.15.1 version of Brat does not seem to compile with the earlier root systems...) Any suggestions would be greatly appreciated! (In the following, I used the .geo and .mag files from brahms_app/fv_app/Data) ...steve --------------------------------------------------------------- The Procedure that I followed is given in the note that Hiro sent me. The code follows his note... Ok. Although I do not use it for my analysis, I played around the BRAT and got it working for using TPM1 Cluset vertex staff. I attached the macro program (SiAnalyze8.C and Common.h), which use the TPM1 to find the vertex. You also need 90deg.geo file in the directory where you are running this macro. To run this macro, do the following 1. .L BratLoad and BratLoad() (if BratLoad() stops at BrAna, edit BratLoad.C such that "Ana" comes right before "EndList") (you do not need to do this if you run "bratroot" or something like that.) 2. .L Common.h 3. .L SiAnalyze8.C 4. Setup() 5. OpenRawFile() if you want to use this in your computer, edit my macro to open you file. 6. GetEvent(); 7. Analyze(); That is it. Now, you need to be carefull for using TPM1 Cluster vertex since you need to specify the cut. You will accept TPM1 Vertex if the following condition is met. a. z_error <1 b. z_sigma <2 c. abs(TPM1 Cluster Vertex - BB Vertex) < 10 cm Anyway, this should help you to get started. Hiro ------------------------------- Common.h // Common.h // ======== // Load this file with common symbols before // executing the other macros. // These objects are used across multiple macro routines. // This belongs to code that is meant to analyze a single TPC, and be able to // plot results. // BrGeantInput *geantinput; BrEvent *geantevent; Bool_t clear_gevent=kFALSE; // BrRawDataInput *InputFile; BrEventIO *RootFile; BrEvent *gevent; BrEvent *digitized_node; BrEvent *seq_node; BrRawDataInput *InputFile; Bool_t clear_devent=kFALSE; Bool_t clear_levent=kFALSE; BrEvent *localtrack_node; BrModuleContainer *asp_digitize, *asp_localtrack; BrEventHeader *event_header; //test BrDigSi *digsi_p; BrDigTiles *digtile_p; const Int_t NumCh = 58; Int_t EventNo; // event number - set by reading routine -------------------------------------------------------------------- SiAnalyze8.C void Setup(){ // // Define modules, parameters to be used. // // BrGeometryDbManager *gGeomDb = BrGeometryDbManager::Instance(); //gGeomDb->SetDbFileName("test.geo"); //BrParameterDbManager *gParamDb = BrParameterDbManager::Instance(); //gParamDb->SetDbParameterFileName("DetectorParameters.txt"); clear_devent= kFALSE; clear_levent= kFALSE; digitized_node=0; } //________________________________________________________________________ void OpenRawFile() { InputFile = new BrRawDataInput("Test"); if(InputFile->Open("/brahms/data01/data/raw/run002336seq000.dat","DISKFILE")) { cout << "File is opened. " << endl; } else { cout << "File is not opened. " << endl;} } //---------------------------------------------------------------------- void GetEvent() { EventNo++; if (EventNo%100==0) cout << "Event No."<<EventNo<<endl; if(clear_devent) delete digitized_node; clear_devent=kTRUE; digitized_node = new BrEvent("Digitized Node",0, EventNo); InputFile->Event(digitized_node); // cout << " Now list objects " << endl; //digitized_node->ListObjects(); // cout << " Objects have been listed!? " << endl; } //---------------------------------------------------------------- //___________________________________________ void Analyze() { Int_t i,j,k,m; //Int_t kNumMultSi=224; //Int_t MaxEventNum = 2; //const Int_t NumCh = 17; 16 ADC channel + 1 for event number //Float_t SiAdc[NumCh]; // Create and init modules BrGeometryDbManager *gGeomDb = BrGeometryDbManager::Instance(); gGeomDb->SetDbFileName("90deg.geo"); gGeomDb->SetDbFileName("90deg.mag"); BrParameterDbManager *gParamDb = BrParameterDbManager::Instance(); gParamDb->SetDbParameterFileName("$BRATSYS/params/DetectorParameters.txt"); preprocess = new BrTPCPreProcess("TPM1", "TPC Preprocessor"); preprocess->Init(); clusterfinder = new BrTPCClusterFinder("TPM1", "TPC clusterfinder"); clusterfinder->Init(); cout << "yep" << endl; vertexfinder = new BrTPMClusterVertexModule("cvtx","cvtx","TPM1"); vertexfinder->Init(); BrClonesArray *allhits; BrDataTable *datatable; float z, y, z_sigma, y_sigma, z_error, y_error; for (j=0; j<100000; j++) { GetEvent(); datatable = digitized_node->GetDataTable("TPCSequence TPM1"); vertex_node = new BrEventNode("vertex_node","vertex_node"); preprocess->Event(digitized_node); clusterfinder->Event(digitized_node); allhits = clusterfinder->GetDetectorHits(); // Find vertex vertexfinder->SetDetectorHits(allhits); vertexfinder->Event(digitized_node, vertex_node); if (cvtx = (BrVertex*)vertex_node->GetObject("TPM1 Cluster VtxData")) { if (cvtx->VertexFound()) { z = cvtx->GetZ(); y = cvtx->GetY(); cout << z << " " << y << endl; z_sigma = cvtx->GetVertexZSigma(); y_sigma = cvtx->GetVertexYSigma(); z_error = sqrt(cvtx->GetVarianceZ()); y_error = sqrt(cvtx->GetVarianceY()); // SetValid(); } } delete vertex_node; } }
This archive was generated by hypermail 2b29 : Thu Mar 29 2001 - 14:03:03 EST