X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FMUONCheck.C;h=d6210c0db1e581e7b338bb1b57f0de14a4d007c8;hb=4a69b40c1a4669f4b938ebef01e27e73bb4bb77f;hp=3e4c820af638f9ac161bf451bcff669dc9044d8a;hpb=144414de3c3813272a2e1a238449869e281212ce;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/MUONCheck.C b/MUON/MUONCheck.C index 3e4c820af63..d6210c0db1e 100644 --- a/MUON/MUONCheck.C +++ b/MUON/MUONCheck.C @@ -36,6 +36,8 @@ #include "AliHeader.h" #include "AliLoader.h" #include "AliStack.h" +#include "AliTracker.h" +#include "AliMagFMaps.h" // MUON includes #include "AliMUON.h" @@ -48,14 +50,18 @@ #include "AliMUONLocalTrigger.h" #include "AliMUONTrack.h" #include "AliMUONTrackParam.h" +#include "AliMUONTrackExtrap.h" +#include "AliMUONTriggerCircuit.h" +#include "AliMUONTriggerCrateStore.h" +#include "AliMpSegmentation.h" #include "AliMpVSegmentation.h" #include "AliMpIntPair.h" #include "AliMpDEManager.h" -#include "AliMpSegFactory.h" +#include "AliMpCathodType.h" +#include "AliMpPlaneType.h" #endif - void MUONkine(Int_t event2Check=0, char * filename="galice.root") { // Stack of particle for each event @@ -120,15 +126,7 @@ void MUONhits(Int_t event2Check=0, char * filename="galice.root") AliMUONHit* mHit; for(ihit=0; ihit(muondata.Hits()->At(ihit)); - Int_t detele = mHit-> DetElemId(); // Detection element if defined - Int_t hittrack = mHit->Track(); - Float_t x = mHit->X(); - Float_t y = mHit->Y(); - Float_t z = mHit->Z(); - Float_t elos = mHit->Eloss(); - Float_t momentum = mHit->Momentum(); - printf(">>> >>> Hit%4d DetEle %4d Track%4d (X,Y,Z)=(%7.2f,%7.2f,%8.2f)cm Elost=%7.2gGeV P=%6.1fGeV/c\n", - ihit, detele, hittrack,x,y,z,elos,momentum); + mHit->Print("full"); } muondata.ResetHits(); } // end track loop @@ -151,7 +149,7 @@ void MUONdigits(Int_t event2Check=0, char * filename="galice.root") MUONLoader->LoadDigits("READ"); // Creating MUON data container AliMUONData muondata(MUONLoader,"MUON","MUON"); - + Int_t ievent, nevents; nevents = RunLoader->GetNumberOfEvents(); AliMUONDigit * mDigit; @@ -160,47 +158,76 @@ void MUONdigits(Int_t event2Check=0, char * filename="galice.root") if (event2Check!=0) ievent=event2Check; printf(">>> Event %d \n",ievent); RunLoader->GetEvent(ievent); - + // Addressing Int_t ichamber, nchambers; nchambers = AliMUONConstants::NCh(); ; muondata.SetTreeAddress("D,GLT"); - // char branchname[30]; - + muondata.GetDigits(); // Loop on chambers for( ichamber=0; ichamberGetEntriesFast(); + TClonesArray* digits = muondata.Digits(ichamber); + digits->Sort(); + ndigits = (Int_t)digits->GetEntriesFast(); for(idigit=0; idigit(muondata.Digits(ichamber)->At(idigit)); - Int_t PadX = mDigit->PadX(); // Pad X number - Int_t PadY = mDigit->PadY(); // Pad Y number - Int_t Signal = mDigit->Signal(); // Physics Signal - Int_t Physics= mDigit->Physics(); // Physics contribution to signal - // Int_t Hit = mDigit->Hit(); // iHit - Int_t Cathode= mDigit->Cathode(); // Cathode - Int_t Track0 = mDigit->Track(0); - Int_t Track1 = mDigit->Track(1); - //Int_t Track2 = mDigit->Track(2); - Int_t TCharges0 = mDigit->TrackCharge(0); //charge per track making this digit (up to 10) - Int_t TCharges1 = mDigit->TrackCharge(1); - //Int_t TCharges2 = mDigit->TrackCharge(2); - Int_t idDE = mDigit->DetElemId(); - // printf(">>> Cathode %d\n",Cathode); - - printf(">>> DetEle %4d Digit%4d Cath %1d (Ix,Iy)=(%3d,%3d) Signal=%4d Physics=%4d Track0=%4d Charge0=%4d Track1=%4d Charge1=%4d \n", - idDE, idigit, Cathode, PadX, PadY, Signal, Physics, Track0, - TCharges0, Track1, TCharges1); + mDigit = static_cast(digits->At(idigit)); + mDigit->Print("tracks"); } // end digit loop } // end chamber loop muondata.ResetDigits(); - // } // end cathode loop if (event2Check!=0) ievent=nevents; } // end event loop MUONLoader->UnloadDigits(); } +void MUONsdigits(Int_t event2Check=0, char * filename="galice.root") +{ + // Creating Run Loader and openning file containing Hits + AliRunLoader * RunLoader = AliRunLoader::Open(filename,"MUONFolder","READ"); + if (RunLoader ==0x0) { + printf(">>> Error : Error Opening %s file \n",filename); + return; + } + // Loading MUON subsystem + AliLoader * MUONLoader = RunLoader->GetLoader("MUONLoader"); + MUONLoader->LoadSDigits("READ"); + // Creating MUON data container + AliMUONData muondata(MUONLoader,"MUON","MUON"); + + Int_t ievent, nevents; + nevents = RunLoader->GetNumberOfEvents(); + AliMUONDigit * mDigit; + + for(ievent=0; ievent>> Event %d \n",ievent); + RunLoader->GetEvent(ievent); + + // Addressing + Int_t ichamber, nchambers; + nchambers = AliMUONConstants::NCh(); ; + muondata.SetTreeAddress("S"); + + muondata.GetSDigits(); + // Loop on chambers + for( ichamber=0; ichamberGetEntriesFast(); + for(idigit=0; idigit(digits->At(idigit)); + mDigit->Print("tracks"); + } // end digit loop + } // end chamber loop + muondata.ResetSDigits(); + if (event2Check!=0) ievent=nevents; + } // end event loop + MUONLoader->UnloadSDigits(); + +} + void MUONoccupancy(Int_t event2Check=0, Bool_t perDetEle =kFALSE, char * filename="galice.root") { // Creating Run Loader and openning file containing Hits AliRunLoader * RunLoader = AliRunLoader::Open(filename,"MUONFolder","READ"); @@ -217,8 +244,8 @@ void MUONoccupancy(Int_t event2Check=0, Bool_t perDetEle =kFALSE, char * filena Int_t ievent, nevents; nevents = RunLoader->GetNumberOfEvents(); AliMUONDigit * mDigit =0x0; - AliMpVSegmentation * segbend = 0x0; - AliMpVSegmentation * segnonbend = 0x0; + const AliMpVSegmentation * segbend = 0x0; + const AliMpVSegmentation * segnonbend = 0x0; AliMpIntPair pad(0,0); Int_t dEoccupancy_bending[14][26]; @@ -238,8 +265,6 @@ void MUONoccupancy(Int_t event2Check=0, Bool_t perDetEle =kFALSE, char * filena Int_t ichamber, nchambers,idetele, detele, ix, iy; nchambers = AliMUONConstants::NCh(); ; - AliMpSegFactory factory; - for (ichamber=0; ichamberGetMpSegmentation(detele, AliMp::kCath0); + segnonbend = AliMpSegmentation::Instance() + ->GetMpSegmentation(detele, AliMp::kCath1); + if (AliMpDEManager::GetPlaneType(detele, AliMp::kCath0) != AliMp::kBendingPlane ) { + const AliMpVSegmentation* tmp = segbend; segbend = segnonbend; segnonbend = tmp; } @@ -291,8 +317,6 @@ void MUONoccupancy(Int_t event2Check=0, Bool_t perDetEle =kFALSE, char * filena printf(">>Spectrometer has %7d channels in bending and %7d channels in nonbending \n", totalchannels_bending, totalchannels_nonbending); - factory.DeleteSegmentations(); - ievent=event2Check; printf(">>> Event %d \n",ievent); RunLoader->GetEvent(ievent); @@ -327,7 +351,7 @@ void MUONoccupancy(Int_t event2Check=0, Bool_t perDetEle =kFALSE, char * filena ichamber+1, cHoccupancy_bending[ichamber], cHoccupancy_nonbending[ichamber]); - printf(">>> Chamber %2d Occupancy Bending %5.2f \% Occupancy NonBending %5.2f \% \n", + printf(">>> Chamber %2d Occupancy Bending %5.2f %% Occupancy NonBending %5.2f %% \n", ichamber+1, 100.*((Float_t) cHoccupancy_bending[ichamber])/((Float_t) cHchannels_bending[ichamber]), 100.*((Float_t) cHoccupancy_nonbending[ichamber])/((Float_t) cHchannels_bending[ichamber]) ); @@ -341,7 +365,7 @@ void MUONoccupancy(Int_t event2Check=0, Bool_t perDetEle =kFALSE, char * filena idetele+100*(ichamber+1), dEoccupancy_bending[ichamber][idetele], dEoccupancy_nonbending[ichamber][idetele]); - printf(">>> DetEle %4d Occupancy Bending %5.2f \% Occupancy NonBending %5.2f \% \n", + printf(">>> DetEle %4d Occupancy Bending %5.2f %% Occupancy NonBending %5.2f %% \n", idetele+100*(ichamber+1), 100.*((Float_t) dEoccupancy_bending[ichamber][idetele])/((Float_t) dEchannels_bending[ichamber][idetele]), 100.*((Float_t) dEoccupancy_nonbending[ichamber][idetele])/((Float_t) dEchannels_bending[ichamber][idetele])); @@ -349,7 +373,7 @@ void MUONoccupancy(Int_t event2Check=0, Bool_t perDetEle =kFALSE, char * filena } } } // end chamber loop - printf(">>> Muon Spectrometer Occupancy Bending %5.2f\% Occupancy NonBending %5.2f\% \n", + printf(">>> Muon Spectrometer Occupancy Bending %5.2f %% Occupancy NonBending %5.2f %% \n", 100.*((Float_t) totaloccupancy_bending)/((Float_t) totalchannels_bending), 100.*((Float_t) totaloccupancy_nonbending)/((Float_t) totalchannels_nonbending) ); muondata.ResetDigits(); @@ -394,24 +418,7 @@ void MUONrecpoints(Int_t event2Check=0, char * filename="galice.root") { // printf(">>> Chamber %2d, Number of recpoints = %6d \n",ichamber+1, nrecpoints); for(irecpoint=0; irecpoint(muondata.RawClusters(ichamber)->At(irecpoint)); - Int_t Track0 = mRecPoint->GetTrack(0); - Int_t Track1 = mRecPoint->GetTrack(1); - Int_t Track2 = mRecPoint->GetTrack(2); - Int_t Q0 = mRecPoint->GetCharge(0); - Int_t Q1 = mRecPoint->GetCharge(1); - Float_t x0 = mRecPoint->GetX(0); - Float_t x1 = mRecPoint->GetX(1); - Float_t y0 = mRecPoint->GetY(0); - Float_t y1 = mRecPoint->GetY(1); - Float_t z0 = mRecPoint->GetZ(0); - Float_t z1 = mRecPoint->GetZ(1); - Float_t chi2_0 = mRecPoint->GetChi2(0); - //Float_t chi2_1 = mRecPoint->GetChi2(1); - Int_t de = mRecPoint->GetDetElemId(); - printf(">>> >>> RecPoint %4d DetEle %4d (X,Y,Z)=(%7.2f,%7.2f,%8.2f)cm Q0=%4d Q1=%4d Hit=%4d Track1=%4d Track2=%4d Chi2=%6.3f \n", - irecpoint,de,x0,y0,z0,Q0,Q1,Track0, Track1, Track2, chi2_0); - if( (x0!=x1) || (y0!=y1) || (z0!=z1) ) - printf(">>> >>> Warning (X0,Y0,Z0)=(%7.2f, %7.2f, %8.2f)cm != (X1,Y1,Z1)=(%7.2f,%7.2f,%8.2f)cm \n",x0,y0,z0,x1,y1,z1); + mRecPoint->Print("full"); } // end recpoint loop } // end chamber loop muondata.ResetRawClusters(); @@ -420,26 +427,24 @@ void MUONrecpoints(Int_t event2Check=0, char * filename="galice.root") { MUONLoader->UnloadRecPoints(); } +void MUONrectrigger (Int_t event2Check=0, char * filename="galice.root", Int_t WRITE = 0, Bool_t readFromRP = 0) +{ - -void MUONrectrigger (Int_t event2Check=0, char * filename="galice.root"){ // reads and dumps trigger objects from MUON.RecPoints.root TClonesArray * globalTrigger; TClonesArray * localTrigger; // Do NOT print out all the info if the loop runs over all events Int_t PRINTOUT = (event2Check == 0 ) ? 0 : 1 ; - + // Book a ntuple for more detailled studies - TNtuple *Tgtuple = new TNtuple("Tgtuple","Trigger Ntuple","ev:global:spapt:smapt:undefapt:uplpt:uphpt:upapt:suapt"); - Int_t WRITE = 0; + TNtuple *TgtupleGlo = new TNtuple("TgtupleGlo","Global Trigger Ntuple","ev:global:slpt:shpt:uplpt:uphpt:lplpt:lplpt"); + TNtuple *TgtupleLoc = new TNtuple("TgtupleLoc","Local Trigger Ntuple","ev:LoCircuit:LoStripX:LoDev:StripY:LoLpt:LoHpt:y11:y21:x11"); // counters - Int_t SPLowpt=0,SPHighpt=0,SPAllpt=0; - Int_t SMLowpt=0,SMHighpt=0,SMAllpt=0; - Int_t SULowpt=0,SUHighpt=0,SUAllpt=0; - Int_t USLowpt=0,USHighpt=0,USAllpt=0; - Int_t LSLowpt=0,LSHighpt=0,LSAllpt=0; + Int_t SLowpt=0,SHighpt=0; + Int_t USLowpt=0,USHighpt=0; + Int_t LSLowpt=0,LSHighpt=0; // Creating Run Loader and openning file containing Hits AliRunLoader * RunLoader = AliRunLoader::Open(filename,"MUONFolder","READ"); @@ -447,9 +452,36 @@ void MUONrectrigger (Int_t event2Check=0, char * filename="galice.root"){ printf(">>> Error : Error Opening %s file \n",filename); return; } + + AliMUONTriggerCrateStore* crateManager = new AliMUONTriggerCrateStore(); + crateManager->ReadFromFile(); + + AliMUONGeometryTransformer* transformer = new AliMUONGeometryTransformer(kFALSE); + transformer->ReadGeometryData("volpath.dat", "geometry.root"); + + TClonesArray* triggerCircuit = new TClonesArray("AliMUONTriggerCircuit", 234); + + for (Int_t i = 0; i < AliMUONConstants::NTriggerCircuit(); i++) { + AliMUONTriggerCircuit* c = new AliMUONTriggerCircuit(); + c->SetTransformer(transformer); + c->Init(i,*crateManager); + TClonesArray& circuit = *triggerCircuit; + new(circuit[circuit.GetEntriesFast()])AliMUONTriggerCircuit(*c); + delete c; + } + Char_t fileName[30]; AliLoader * MUONLoader = RunLoader->GetLoader("MUONLoader"); - MUONLoader->LoadDigits("READ"); + if (!readFromRP) { + cout << " reading from digits \n"; + MUONLoader->LoadDigits("READ"); + sprintf(fileName,"TriggerCheckFromDigits.root"); + } else { + cout << " reading from RecPoints \n"; + MUONLoader->LoadRecPoints("READ"); + sprintf(fileName,"TriggerCheckFromRP.root"); + } + // Creating MUON data container AliMUONData muondata(MUONLoader,"MUON","MUON"); @@ -457,102 +489,60 @@ void MUONrectrigger (Int_t event2Check=0, char * filename="galice.root"){ Int_t ievent, nevents; nevents = RunLoader->GetNumberOfEvents(); - AliMUONGlobalTrigger *gloTrg; - AliMUONLocalTrigger *locTrg; + AliMUONGlobalTrigger *gloTrg(0x0); + AliMUONLocalTrigger *locTrg(0x0); for (ievent=0; ieventGetEvent(ievent); - muondata.SetTreeAddress("GLT"); - muondata.GetTriggerD(); - + if (!readFromRP) { + muondata.SetTreeAddress("D,GLT"); + muondata.GetTriggerD(); + } else { + muondata.SetTreeAddress("RC,TC"); + muondata.GetTrigger(); + } + globalTrigger = muondata.GlobalTrigger(); localTrigger = muondata.LocalTrigger(); Int_t nglobals = (Int_t) globalTrigger->GetEntriesFast(); // should be 1 Int_t nlocals = (Int_t) localTrigger->GetEntriesFast(); // up to 234 if (PRINTOUT) printf("###################################################\n"); - if (PRINTOUT) {cout << " event " << ievent - << " nglobals nlocals: " << nglobals << " " << nlocals << "\n"; } - + if (PRINTOUT) printf("event %d nglobal %d nlocal %d \n",ievent,nglobals,nlocals); + for (Int_t iglobal=0; iglobal(globalTrigger->At(iglobal)); - SPLowpt+=gloTrg->SinglePlusLpt() ; - SPHighpt+=gloTrg->SinglePlusHpt() ; - SPAllpt+=gloTrg->SinglePlusApt() ; - SMLowpt+=gloTrg->SingleMinusLpt(); - SMHighpt+=gloTrg->SingleMinusHpt(); - SMAllpt+=gloTrg->SingleMinusApt(); - SULowpt+=gloTrg->SingleUndefLpt(); - SUHighpt+=gloTrg->SingleUndefHpt(); - SUAllpt+=gloTrg->SingleUndefApt(); + SLowpt+=gloTrg->SingleLpt() ; + SHighpt+=gloTrg->SingleHpt() ; USLowpt+=gloTrg->PairUnlikeLpt(); USHighpt+=gloTrg->PairUnlikeHpt(); - USAllpt+=gloTrg->PairUnlikeApt(); LSLowpt+=gloTrg->PairLikeLpt(); LSHighpt+=gloTrg->PairLikeHpt(); - LSAllpt+=gloTrg->PairLikeApt(); - - if (PRINTOUT) { - printf("===================================================\n"); - printf(" Global Trigger output Low pt High pt All\n"); - printf(" number of Single Plus :\t"); - printf("%i\t%i\t%i\t",gloTrg->SinglePlusLpt(), - gloTrg->SinglePlusHpt(),gloTrg->SinglePlusApt()); - printf("\n"); - - printf(" number of Single Minus :\t"); - printf("%i\t%i\t%i\t",gloTrg->SingleMinusLpt(), - gloTrg->SingleMinusHpt(),gloTrg->SingleMinusApt()); - printf("\n"); - - printf(" number of Single Undefined :\t"); - printf("%i\t%i\t%i\t",gloTrg->SingleUndefLpt(), - gloTrg->SingleUndefHpt(),gloTrg->SingleUndefApt()); - printf("\n"); - - printf(" number of UnlikeSign pair :\t"); - printf("%i\t%i\t%i\t",gloTrg->PairUnlikeLpt(), - gloTrg->PairUnlikeHpt(),gloTrg->PairUnlikeApt()); - printf("\n"); - - printf(" number of LikeSign pair :\t"); - printf("%i\t%i\t%i\t",gloTrg->PairLikeLpt(), - gloTrg->PairLikeHpt(),gloTrg->PairLikeApt()); - printf("\n"); - - printf("===================================================\n"); - } + if (PRINTOUT) gloTrg->Print("full"); + } // end of loop on Global Trigger - + for (Int_t ilocal=0; ilocal>> Output for Local Trigger " << ilocal << "\n"; - locTrg = static_cast(localTrigger->At(ilocal)); + + if (locTrg->LoLpt()!=0) { // board is fired + + if (PRINTOUT) locTrg->Print("full"); + + AliMUONTriggerCircuit* circuit = (AliMUONTriggerCircuit*)triggerCircuit->At(locTrg->LoCircuit()-1); + + TgtupleLoc->Fill(ievent,locTrg->LoCircuit(),locTrg->LoStripX(),locTrg->LoDev(),locTrg->LoStripY(),locTrg->LoLpt(),locTrg->LoHpt(),circuit->GetY11Pos(locTrg->LoStripX()),circuit->GetY21Pos(locTrg->LoStripX()+locTrg->LoDev()+1),circuit->GetX11Pos(locTrg->LoStripY())); + } // board is fired - if (PRINTOUT){ - cout << "Circuit StripX Dev StripY: " - << locTrg->LoCircuit() << " " - << locTrg->LoStripX() << " " - << locTrg->LoDev() << " " - << locTrg->LoStripY() - << "\n"; - cout << "Lpt Hpt Apt: " - << locTrg->LoLpt() << " " - << locTrg->LoHpt() << " " - << locTrg->LoApt() << "\n"; - } } // end of loop on Local Trigger - // fill ntuple - //TNtuple *Tgtuple = new TNtuple("Tgtuple","Trigger Ntuple","ev:global:spapt:smapt:undefapt:uplpt:uphpt:upapt:suapt"); - Tgtuple->Fill(ievent,nglobals,gloTrg->SinglePlusApt(),gloTrg->SingleMinusApt(),gloTrg->SingleUndefApt(),gloTrg->PairUnlikeLpt(),gloTrg->PairUnlikeHpt(),gloTrg->PairUnlikeApt(),gloTrg->SingleUndefApt()); - + TgtupleGlo->Fill(ievent,nglobals,gloTrg->SingleLpt(),gloTrg->SingleHpt(),gloTrg->PairUnlikeLpt(),gloTrg->PairUnlikeHpt(),gloTrg->PairLikeLpt(),gloTrg->PairLikeHpt()); muondata.ResetTrigger(); if (event2Check!=0) ievent=nevents; @@ -560,39 +550,44 @@ void MUONrectrigger (Int_t event2Check=0, char * filename="galice.root"){ // Print out summary if loop ran over all event if (!event2Check){ + printf("\n"); - printf("===================================================\n"); - printf("=================== SUMMARY =====================\n"); + printf("=============================================\n"); + printf("================ SUMMARY ==================\n"); printf("\n"); printf("Total number of events processed %d \n", (event2Check==0) ? nevents : 1); printf("\n"); - printf(" Global Trigger output Low pt High pt All\n"); - printf(" number of Single Plus :\t"); - printf("%i\t%i\t%i\t",SPLowpt,SPHighpt,SPAllpt); - printf("\n"); - printf(" number of Single Minus :\t"); - printf("%i\t%i\t%i\t",SMLowpt,SMHighpt,SMAllpt); - printf("\n"); - printf(" number of Single Undefined :\t"); - printf("%i\t%i\t%i\t",SULowpt,SUHighpt,SUAllpt); + printf(" Global Trigger output Low pt High pt\n"); + printf(" number of Single :\t"); + printf("%i\t%i\t",SLowpt,SHighpt); printf("\n"); printf(" number of UnlikeSign pair :\t"); - printf("%i\t%i\t%i\t",USLowpt,USHighpt,USAllpt); + printf("%i\t%i\t",USLowpt,USHighpt); printf("\n"); printf(" number of LikeSign pair :\t"); - printf("%i\t%i\t%i\t",LSLowpt,LSHighpt, LSAllpt); + printf("%i\t%i\t",LSLowpt,LSHighpt); printf("\n"); - printf("===================================================\n"); + printf("=============================================\n"); + fflush(stdout); } if (WRITE){ - TFile *myFile = new TFile("TriggerCheck.root", "RECREATE"); - Tgtuple->Write(); - myFile->Close(); + TFile *myFile = new TFile(fileName, "RECREATE"); + TgtupleGlo->Write(); + TgtupleLoc->Write(); + myFile->Close(); } - - MUONLoader->UnloadRecPoints(); + if (!readFromRP) { + MUONLoader->UnloadDigits(); + } else { + MUONLoader->UnloadRecPoints(); + } + + delete crateManager; + delete transformer; + delete triggerCircuit; + } void MUONrectracks (Int_t event2Check=0, char * filename="galice.root"){ @@ -605,7 +600,12 @@ void MUONrectracks (Int_t event2Check=0, char * filename="galice.root"){ printf(">>> Error : Error Opening %s file \n",filename); return; } - + // waiting for mag field in CDB + printf("Loading field map...\n"); + if (!AliTracker::GetFieldMap()) { + AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG); + AliTracker::SetFieldMap(field, kFALSE); + } AliLoader * MUONLoader = RunLoader->GetLoader("MUONLoader"); MUONLoader->LoadTracks("READ"); // Creating MUON data container @@ -629,36 +629,19 @@ void MUONrectracks (Int_t event2Check=0, char * filename="galice.root"){ printf(">>> Event %d, Number of Recconstructed tracks %d \n",ievent, nrectracks); // loop over tracks - - - Int_t nTrackHits;// nPrimary; - Double_t fitFmin; - Double_t bendingSlope, nonBendingSlope, inverseBendingMomentum; - Double_t xRec, yRec, zRec, chi2MatchTrigger; - Bool_t matchTrigger; - - // setting pointer for tracks, triggertracks & trackparam at vertex + + // setting pointer for tracks, triggertracks & trackparam at vertex AliMUONTrack* recTrack = 0; AliMUONTrackParam* trackParam = 0; + // set the magnetic field for track extrapolations + AliMUONTrackExtrap::SetField(AliTracker::GetFieldMap()); for (Int_t iRecTracks = 0; iRecTracks < nrectracks; iRecTracks++) { - // reading info from tracks - recTrack = (AliMUONTrack*) RecTracks->At(iRecTracks); - trackParam = (AliMUONTrackParam*) (recTrack->GetTrackParamAtHit())->First(); - trackParam->ExtrapToZ(0.0); - bendingSlope = trackParam->GetBendingSlope(); - nonBendingSlope = trackParam->GetNonBendingSlope(); - inverseBendingMomentum = trackParam->GetInverseBendingMomentum(); - xRec = trackParam->GetNonBendingCoor(); - yRec = trackParam->GetBendingCoor(); - zRec = trackParam->GetZ(); - - nTrackHits = recTrack->GetNTrackHits(); - fitFmin = recTrack->GetFitFMin(); - matchTrigger = recTrack->GetMatchTrigger(); - chi2MatchTrigger = recTrack->GetChi2MatchTrigger(); - - printf(">>> RecTrack %4d NofClusters=%2d BendMomentum=%7.2f NonBendSlope=%5.2f BendSlope=%5.2f Match2Trig=%1d (vertex@z=0)=(%5.2f,%5.2f,%5.1f)cm \n", iRecTracks, nTrackHits, 1/inverseBendingMomentum , nonBendingSlope*180./TMath::Pi(), bendingSlope*180./TMath::Pi(), matchTrigger, xRec,yRec,zRec); + // // reading info from tracks + recTrack = (AliMUONTrack*) RecTracks->At(iRecTracks); + trackParam = (AliMUONTrackParam*) (recTrack->GetTrackParamAtHit())->First(); + AliMUONTrackExtrap::ExtrapToZ(trackParam,0.); + recTrack->Print("full"); } // end loop tracks muondata.ResetRecTracks(); @@ -667,12 +650,3 @@ void MUONrectracks (Int_t event2Check=0, char * filename="galice.root"){ MUONLoader->UnloadTracks(); } - - - - - - - - -