diff --git a/MFT/AliMFTClusterFinder.cxx b/MFT/AliMFTClusterFinder.cxx index eec7b5f453f..0a8165a5b00 100644 --- a/MFT/AliMFTClusterFinder.cxx +++ b/MFT/AliMFTClusterFinder.cxx @@ -86,7 +86,7 @@ void AliMFTClusterFinder::StartEvent() { AliDebug(1, "Starting Event..."); for (Int_t iPlane=0; iPlaneClear(); + fClustersPerPlane[iPlane]->Delete(); } AliDebug(1, "... done!"); @@ -105,11 +105,13 @@ void AliMFTClusterFinder::DigitsToClusters(const TObjArray *pDigitList) { StartEvent(); Bool_t isDigAvailableForNewCluster = kTRUE; + TClonesArray *myDigitList = 0; + for (Int_t iPlane=0; iPlaneAt(iPlane); + myDigitList = (TClonesArray*) pDigitList->At(iPlane); AliDebug(1, Form("myDigitList->GetEntries() = %d", myDigitList->GetEntries())); @@ -162,6 +164,8 @@ void AliMFTClusterFinder::DigitsToClusters(const TObjArray *pDigitList) { AliDebug(1, Form("Found %d clusters in plane %02d", fClustersPerPlane[iPlane]->GetEntries(), iPlane)); + myDigitList -> Delete(); + } // end of cycle over the planes } diff --git a/MFT/AliMuonForwardTrackAnalysis.cxx b/MFT/AliMuonForwardTrackAnalysis.cxx index 1488c074427..42dd32a9231 100644 --- a/MFT/AliMuonForwardTrackAnalysis.cxx +++ b/MFT/AliMuonForwardTrackAnalysis.cxx @@ -22,6 +22,7 @@ #include "TRandom.h" #include "TLorentzVector.h" #include "TDatabasePDG.h" +#include "TGraph.h" #include "AliMuonForwardTrackAnalysis.h" ClassImp(AliMuonForwardTrackAnalysis) @@ -55,11 +56,13 @@ AliMuonForwardTrackAnalysis::AliMuonForwardTrackAnalysis(): fHistOffsetSingleMuonsX_vsPtRapidity(0x0), fHistOffsetSingleMuonsY_vsPtRapidity(0x0), fHistSingleMuonsPtRapidity(0x0), + fHistSingleMuonsOffsetChi2(0x0), fHistWOffsetMuonPairs(0x0), fHistMassMuonPairs(0x0), fHistMassMuonPairsWithoutMFT(0x0), fHistMassMuonPairsMC(0x0), fHistRapidityPtMuonPairsMC(0x0), + fGraphSingleMuonsOffsetChi2(0x0), fNMassBins(1000), fMassMin(0), fMassMax(10), @@ -67,9 +70,9 @@ AliMuonForwardTrackAnalysis::AliMuonForwardTrackAnalysis(): fMuonPairAnalysis(1), fMatchTrigger(0), fOption(0), - fXVertResMC(150.e-4), - fYVertResMC(150.e-4), - fZVertResMC(100.e-4), + fXVertResMC(50.e-4), + fYVertResMC(50.e-4), + fZVertResMC(50.e-4), fMaxNWrongClustersMC(999), fPtMinSingleMuons(0) { @@ -163,7 +166,7 @@ Bool_t AliMuonForwardTrackAnalysis::AnalyzeSingleMuon() { if (fNTracksAnalyzedOfEvent>=fNTracksOfEvent) return kFALSE; - fMFTTrack = (AliMuonForwardTrack*) fMuonForwardTracks->At(fNTracksAnalyzedOfEvent); + fMFTTrack = (AliMuonForwardTrack*) fMuonForwardTracks->At(fNTracksAnalyzedOfEvent); fNTracksAnalyzedOfEvent++; if (fMatchTrigger && !fMFTTrack->GetMatchTrigger()) return kTRUE; fMCRefTrack = fMFTTrack->GetMCTrackRef(); @@ -172,7 +175,9 @@ Bool_t AliMuonForwardTrackAnalysis::AnalyzeSingleMuon() { if (fMFTTrack->GetNWrongClustersMC()>fMaxNWrongClustersMC) return kTRUE; Double_t xOrig=gRandom->Gaus(0., fXVertResMC); - Double_t yOrig=gRandom->Gaus(0., fXVertResMC); + Double_t yOrig=gRandom->Gaus(0., fYVertResMC); +// Double_t xOrig = 0.; +// Double_t yOrig = 0.; Double_t zOrig=gRandom->Gaus(0., fZVertResMC); AliMUONTrackParam *param = fMFTTrack->GetTrackParamAtMFTCluster(0); @@ -208,9 +213,12 @@ Bool_t AliMuonForwardTrackAnalysis::AnalyzeSingleMuon() { fHistOffsetSingleMuonsX_tmp[rapBin-1][ptBin-1]->Fill(1.e4*dX); fHistOffsetSingleMuonsY_tmp[rapBin-1][ptBin-1]->Fill(1.e4*dY); } - fHistSingleMuonsPtRapidity -> Fill(pMu.Rapidity(), pMu.Pt()); - fHistOffsetSingleMuons -> Fill(1.e4*offset); - fHistWOffsetSingleMuons -> Fill(weightedOffset); + fHistSingleMuonsPtRapidity -> Fill(pMu.Rapidity(), pMu.Pt()); + fHistOffsetSingleMuons -> Fill(1.e4*offset); + fHistWOffsetSingleMuons -> Fill(weightedOffset); + Double_t chi2OverNdf = fMFTTrack->GetGlobalChi2()/Double_t(fMFTTrack->GetNMFTClusters()+fMFTTrack->GetNMUONClusters()); + fHistSingleMuonsOffsetChi2 -> Fill(1.e4*offset, chi2OverNdf); + fGraphSingleMuonsOffsetChi2 -> SetPoint(fGraphSingleMuonsOffsetChi2->GetN(),1.e4*offset, chi2OverNdf); fNTracksAnalyzed++; @@ -232,7 +240,7 @@ Bool_t AliMuonForwardTrackAnalysis::AnalyzeMuonPair() { } Double_t xOrig=gRandom->Gaus(0., fXVertResMC); - Double_t yOrig=gRandom->Gaus(0., fXVertResMC); + Double_t yOrig=gRandom->Gaus(0., fYVertResMC); Double_t zOrig=gRandom->Gaus(0., fZVertResMC); AliDebug(1, Form("origin = (%f, %f, %f)", xOrig, yOrig, zOrig)); @@ -322,6 +330,9 @@ void AliMuonForwardTrackAnalysis::Terminate(Char_t *outputFileName) { // } fHistSingleMuonsPtRapidity -> Write(); + fHistSingleMuonsOffsetChi2 -> Write(); + + fGraphSingleMuonsOffsetChi2 -> Write(); fHistWOffsetMuonPairs -> Write(); fHistMassMuonPairs -> Write(); @@ -341,7 +352,7 @@ void AliMuonForwardTrackAnalysis::BookHistos() { fHistOffsetSingleMuonsY = new TH1D("fHistOffsetSingleMuonsY", "Offset for single muons along Y", 200, -1000, 1000); fHistErrorSingleMuonsX = new TH1D("fHistErrorSingleMuonsX", "Coordinate Error for single muons along X", 200, 0, 1000); fHistErrorSingleMuonsY = new TH1D("fHistErrorSingleMuonsY", "Coordinate Error for single muons along Y", 200, 0, 1000); - fHistOffsetSingleMuons = new TH1D("fHistOffsetSingleMuons", "Offset for single muons", 100, 0, 2000); + fHistOffsetSingleMuons = new TH1D("fHistOffsetSingleMuons", "Offset for single muons", 200, 0, 2000); fHistWOffsetSingleMuons = new TH1D("fHistWOffsetSingleMuons", "Weighted Offset for single muons", 300, 0, 15); fHistOffsetSingleMuonsX_vsPtRapidity = new TH2D("fHistOffsetSingleMuonsX_vsPtRapidity", "Offset for single muons along X", @@ -357,6 +368,7 @@ void AliMuonForwardTrackAnalysis::BookHistos() { } fHistSingleMuonsPtRapidity = new TH2D("fHistSingleMuonsPtRapidity", "Phase Space for single muons", 10, -4, -2.5, 10, 0.5, 5.5); + fHistSingleMuonsOffsetChi2 = new TH2D("fHistSingleMuonsOffsetChi2", "Offset vs #chi^{2}/ndf for single muons", 400, 0, 4000, 100, 0, 20); fHistOffsetSingleMuonsX -> SetXTitle("Offset(X) [#mum]"); fHistOffsetSingleMuonsY -> SetXTitle("Offset(Y) [#mum]"); @@ -372,6 +384,8 @@ void AliMuonForwardTrackAnalysis::BookHistos() { fHistSingleMuonsPtRapidity -> SetXTitle("y^{#mu}"); fHistSingleMuonsPtRapidity -> SetYTitle("p_{T}^{#mu} [GeV/c]"); + fHistSingleMuonsOffsetChi2 -> SetXTitle("Offset [#mum]"); + fHistSingleMuonsOffsetChi2 -> SetYTitle("#chi^{2}/ndf"); fHistOffsetSingleMuonsX -> Sumw2(); fHistOffsetSingleMuonsY -> Sumw2(); @@ -383,9 +397,15 @@ void AliMuonForwardTrackAnalysis::BookHistos() { fHistOffsetSingleMuonsX_vsPtRapidity -> Sumw2(); fHistOffsetSingleMuonsY_vsPtRapidity -> Sumw2(); fHistSingleMuonsPtRapidity -> Sumw2(); + fHistSingleMuonsOffsetChi2 -> Sumw2(); //-------------------------------------------- + fGraphSingleMuonsOffsetChi2 = new TGraph("fGraphSingleMuonsOffsetChi2"); + fGraphSingleMuonsOffsetChi2 -> SetName("fGraphSingleMuonsOffsetChi2"); + + //-------------------------------------------- + fHistWOffsetMuonPairs = new TH1D("fHistWOffsetMuonPairs", "Weighted Offset for Muon Pairs", 300, 0, 60); fHistMassMuonPairs = new TH1D("fHistMassMuonPairs", "Dimuon Mass (MUON+MFT)", fNMassBins, fMassMin, fMassMax); fHistMassMuonPairsWithoutMFT = new TH1D("fHistMassMuonPairsWithoutMFT", "Dimuon Mass (MUON only)", fNMassBins, fMassMin, fMassMax); diff --git a/MFT/AliMuonForwardTrackAnalysis.h b/MFT/AliMuonForwardTrackAnalysis.h index a7ddbd15714..64e9f548ac0 100644 --- a/MFT/AliMuonForwardTrackAnalysis.h +++ b/MFT/AliMuonForwardTrackAnalysis.h @@ -22,6 +22,7 @@ #include "AliMUONTrackParam.h" #include "AliMUONTrackExtrap.h" #include "TDatabasePDG.h" +#include "TGraph.h" //==================================================================================================================================================== @@ -86,9 +87,12 @@ class AliMuonForwardTrackAnalysis : public TObject { TH2D *fHistOffsetSingleMuonsX_vsPtRapidity, *fHistOffsetSingleMuonsY_vsPtRapidity, *fHistSingleMuonsPtRapidity; //! TH1D *fHistOffsetSingleMuonsX_tmp[fNRapBinsOffsetSingleMuons][fNPtBinsOffsetSingleMuons]; //! TH1D *fHistOffsetSingleMuonsY_tmp[fNRapBinsOffsetSingleMuons][fNPtBinsOffsetSingleMuons]; //! + TH2D *fHistSingleMuonsOffsetChi2; //! TH1D *fHistWOffsetMuonPairs, *fHistMassMuonPairs, *fHistMassMuonPairsWithoutMFT, *fHistMassMuonPairsMC; //! TH2D *fHistRapidityPtMuonPairsMC; + TGraph *fGraphSingleMuonsOffsetChi2; //! + Int_t fNMassBins; Double_t fMassMin, fMassMax; diff --git a/MFT/AliMuonForwardTrackFinder.C b/MFT/AliMuonForwardTrackFinder.C index dcd9b85df3e..1b34e9ab5af 100644 --- a/MFT/AliMuonForwardTrackFinder.C +++ b/MFT/AliMuonForwardTrackFinder.C @@ -1,6 +1,7 @@ //================================================================================================================================ void AliMuonForwardTrackFinder(Int_t run=0, + Double_t zVertexError=0.010, Int_t matching=0, const Char_t *readDir= ".", const Char_t *outDir = ".", @@ -25,9 +26,11 @@ void AliMuonForwardTrackFinder(Int_t run=0, // finder -> SetRAbsorberCut(26.4); finder -> SetLowPtCut(0.0); // finder -> SetLowPtCut(0.5); - finder -> SetVertexError(0.015, 0.015, 0.010); + finder -> SetVertexError(0.015, 0.015, zVertexError); finder -> SetMatchingMode(matching); // 0 -> real matching 1 -> ideal matching - finder -> SetMinResearchRadiusAtLastPlane(0.0); +// finder -> SetMinResearchRadiusAtPlane(4, 0.0); + finder -> SetMinResearchRadiusAtPlane(4, 0.50); + finder -> SetMinResearchRadiusAtPlane(3, 0.05); while (finder->LoadNextTrack()) continue; diff --git a/MFT/AliMuonForwardTrackFinder.cxx b/MFT/AliMuonForwardTrackFinder.cxx index 2e422295454..39d4eaa8d65 100644 --- a/MFT/AliMuonForwardTrackFinder.cxx +++ b/MFT/AliMuonForwardTrackFinder.cxx @@ -151,7 +151,6 @@ AliMuonForwardTrackFinder::AliMuonForwardTrackFinder(): fOutputEventTree(0), fMuonForwardTracks(0), fMatchingMode(-1), - fMinResearchRadiusAtLastPlane(0), fGRPData(0), fRunInfo(0) @@ -192,6 +191,8 @@ AliMuonForwardTrackFinder::AliMuonForwardTrackFinder(): fIsPlaneMandatory[iPlane] = kFALSE; + fMinResearchRadiusAtPlane[iPlane] = 0.; + } // fNextTrack = 0; @@ -435,7 +436,7 @@ Bool_t AliMuonForwardTrackFinder::LoadNextEvent() { fRunLoader -> LoadKinematics(); fStack = fRunLoader->Stack(); fNextTrack = fTrackStore->CreateIterator(); - fMuonForwardTracks->Clear(); + fMuonForwardTracks->Delete(); fEv++; @@ -467,7 +468,7 @@ Int_t AliMuonForwardTrackFinder::LoadNextTrack() { fCountRealTracksAnalyzed++; - fCandidateTracks -> Clear(); + fCandidateTracks -> Delete(); fLabelMC = -1; fDistanceFromGoodClusterAndTrackAtLastPlane = -1.; @@ -600,7 +601,7 @@ Int_t AliMuonForwardTrackFinder::LoadNextTrack() { AliMuonForwardTrack *newTrack = (AliMuonForwardTrack*) fCandidateTracks->UncheckedAt(0); new ((*fMuonForwardTracks)[fMuonForwardTracks->GetEntries()]) AliMuonForwardTrack(*newTrack); AliDebug(1, "...track added!\n"); - fCandidateTracks->Clear(); + fCandidateTracks->Delete(); fCountRealTracksAnalyzedOfEvent++; fCountRealTracksAnalyzedWithFinalCandidates++; PrintParticleHistory(); @@ -783,7 +784,7 @@ Int_t AliMuonForwardTrackFinder::LoadNextTrack() { // ------------------------------------------------------------------------------------------- - fCandidateTracks->Clear(); + fCandidateTracks->Delete(); fFinalBestCandidate = NULL; fCountRealTracksAnalyzedOfEvent++; @@ -853,8 +854,8 @@ void AliMuonForwardTrackFinder::FindClusterInPlane(Int_t planeId) { Double_t researchRadiusFront = TMath::Sqrt(squaredError_X_Front + squaredError_Y_Front); Double_t researchRadiusBack = TMath::Sqrt(squaredError_X_Back + squaredError_Y_Back); - if (planeId==fNPlanesMFT-1 && 0.5*(researchRadiusFront+researchRadiusBack)cd(); @@ -1157,8 +1158,8 @@ Double_t AliMuonForwardTrackFinder::TryOneCluster(const AliMUONTrackParam &track void AliMuonForwardTrackFinder::SeparateFrontBackClusters() { for (Int_t iPlane=0; iPlaneClear(); - fMFTClusterArrayBack[iPlane] ->Clear(); + fMFTClusterArrayFront[iPlane]->Delete(); + fMFTClusterArrayBack[iPlane] ->Delete(); for (Int_t iCluster=0; iClusterGetEntries(); iCluster++) { AliMFTCluster *cluster = (AliMFTCluster*) fMFTClusterArray[iPlane]->At(iCluster); if (TMath::Abs(cluster->GetZ())GetPlane(iPlane)->GetZCenter())) { diff --git a/MFT/AliMuonForwardTrackFinder.h b/MFT/AliMuonForwardTrackFinder.h index f7e79614181..adc97ad5c58 100644 --- a/MFT/AliMuonForwardTrackFinder.h +++ b/MFT/AliMuonForwardTrackFinder.h @@ -131,7 +131,7 @@ class AliMuonForwardTrackFinder : public TObject { Bool_t IsMother(const Char_t *nameMother); void SetMatchingMode(Int_t matchingMode) { fMatchingMode = matchingMode; } - void SetMinResearchRadiusAtLastPlane(Double_t minResearchRadius) { fMinResearchRadiusAtLastPlane = minResearchRadius; } + void SetMinResearchRadiusAtPlane(Int_t plane, Double_t radius) { if (plane>=0 && planeSetMomentumRange(0,999); gener->SetPtRange(0,100.); - gener->SetPhiRange(0., 360.); - gener->SetThetaRange(0., 180.); - gener->SetChildThetaRange(170.0,179.0); - gener->SetYRange(-4.5, -2.0); + gener->SetYRange(-4.0, -2.5); + gener->SetChildThetaRange(171.0,177.0); + gener->SetChildMomentumRange(5.0, 999.); gener->SetOrigin(0.0, 0.0, 0.0); // vertex position gener->SetSigma(0.0, 0.0, 0.0); // vertex position smearing - gener->SetVertexSmear(kPerEvent); enum {kEta2Body, kEtaDalitz, kRho2Body, kOmega2Body, kOmegaDalitz, kPhi2Body, kEtaPrimeDalitz, kPionLMR, kKaonLMR}; - gener->GenerateSingleProcess(kPhi2Body, 500); + gener->GenerateSingleProcess(kPhi2Body, 10); + gener->SetCutOnChild(1); + + return gener; + +} + +//==================================================================================================================================================== + +AliGenerator* GenParamJpsi() { + + AliGenParam *gener = new AliGenParam(5, AliGenMUONlib::kJpsi); + gener->SetMomentumRange(0,999); + gener->SetPtRange(0,100.); + gener->SetYRange(-4.0, -2.5); + gener->SetPhiRange(0., 360.); + gener->SetChildThetaRange(171.0,177.0); + gener->SetChildMomentumRange(5.0, 999.); + gener->SetOrigin(0.0, 0.0, 0.0); // vertex position + gener->SetSigma(0.0, 0.0, 0.0); // Sigma in (X,Y,Z) (cm) on IP position + gener->SetForceDecay(kDiMuon); + gener->SetTrackingFlag(1); gener->SetCutOnChild(1); return gener; diff --git a/STEER/AOD/AliAODEvent.cxx b/STEER/AOD/AliAODEvent.cxx index cf72ef72beb..3f9b5a7b87b 100644 --- a/STEER/AOD/AliAODEvent.cxx +++ b/STEER/AOD/AliAODEvent.cxx @@ -426,6 +426,8 @@ void AliAODEvent::ResetStd(Int_t trkArrSize, { // deletes content of standard arrays and resets size // The line below added to avoid very costly and un-needed TROOT::RecursiveRemove (A.G.) + + Bool_t mustClean = gROOT->MustClean(); gROOT->SetMustClean(kFALSE); if (fTracks) { fTracks->Delete(); @@ -483,11 +485,15 @@ void AliAODEvent::ResetStd(Int_t trkArrSize, fEMCALTrigger->DeAllocate(); if (fPHOSTrigger) fPHOSTrigger->DeAllocate(); + + gROOT->SetMustClean(mustClean); } void AliAODEvent::ClearStd() { // clears the standard arrays + Bool_t mustClean = gROOT->MustClean(); + gROOT->SetMustClean(kFALSE); if (fHeader) fHeader ->Clear(); if (fTracks) @@ -519,6 +525,7 @@ void AliAODEvent::ClearStd() fEMCALTrigger->DeAllocate(); if (fPHOSTrigger) fPHOSTrigger->DeAllocate(); + gROOT->SetMustClean(mustClean); } //_________________________________________________________________ diff --git a/STEER/AOD/AliAODTZERO.cxx b/STEER/AOD/AliAODTZERO.cxx index 034ba51d53b..69a737a107d 100644 --- a/STEER/AOD/AliAODTZERO.cxx +++ b/STEER/AOD/AliAODTZERO.cxx @@ -14,9 +14,9 @@ **************************************************************************/ //------------------------------------------------------------------------- -// Container class for AOD VZERO data -// Author: Cvetan Cheshkov -// cvetan.cheshkov@cern.ch 2/02/2011 +// Container class for AOD TZERO data +// Author: Filip Krizek +// filip.krizek@cern.ch 23/02/2012 //------------------------------------------------------------------------- #include "AliAODTZERO.h" @@ -29,7 +29,8 @@ AliAODTZERO::AliAODTZERO() :TObject(), fPileup(0), fSattelite(0), - fBackground(0) + fBackground(0), + fT0VertexRaw(999) { // Default constructor for(Int_t j=0; j<3; j++){ @@ -43,7 +44,8 @@ AliAODTZERO::AliAODTZERO(const AliAODTZERO &source) :TObject(source), fPileup(source.fPileup), fSattelite(source.fSattelite), - fBackground(source.fBackground) + fBackground(source.fBackground), + fT0VertexRaw(source.fT0VertexRaw) { // Default constructor for(Int_t j=0; j<3; j++) { @@ -59,9 +61,10 @@ AliAODTZERO& AliAODTZERO::operator=(const AliAODTZERO& source) // if(this==&source) return *this; // Assignment operator - fPileup = source.fPileup; - fSattelite = source.fSattelite; - fBackground = source.fBackground; + fPileup = source.fPileup; + fSattelite = source.fSattelite; + fBackground = source.fBackground; + fT0VertexRaw = source.fT0VertexRaw; for(Int_t j=0; j<3; j++){ fT0TOF[j] = source.fT0TOF[j]; diff --git a/STEER/AOD/AliAODTZERO.h b/STEER/AOD/AliAODTZERO.h index 448b4f0bda7..fff78267946 100644 --- a/STEER/AOD/AliAODTZERO.h +++ b/STEER/AOD/AliAODTZERO.h @@ -4,7 +4,7 @@ //------------------------------------------------------------------------- // Container class for AOD TZERO data // Author: Filip Krizek -// filip.krizek@cern.ch 18/11/2011 +// filip.krizek@cern.ch 23/02/2012 //------------------------------------------------------------------------- #include @@ -30,6 +30,8 @@ class AliAODTZERO : public TObject Bool_t GetPileupFlag() const {return fPileup;} Bool_t GetSatellite() const {return fSattelite;} + Float_t GetT0VertexRaw() const {return fT0VertexRaw;} + //Setters void SetT0TOF(Int_t icase, Double32_t time) { fT0TOF[icase] = time;} void SetT0TOFbest(Int_t icase, Double32_t time) { fT0TOFbest[icase] = time;} @@ -37,8 +39,9 @@ class AliAODTZERO : public TObject void SetBackgroundFlag(Bool_t back = false) {fBackground = back;} void SetPileupFlag(Bool_t back = false) {fPileup = back;} void SetSatelliteFlag(Bool_t sat = false) { fSattelite = sat;} - + void SetT0VertexRaw(Float_t vtx) { fT0VertexRaw = vtx;} + protected: Double32_t fT0TOF[3]; // interaction time in ps with 1st time( A&C, A, C) @@ -46,8 +49,9 @@ class AliAODTZERO : public TObject Bool_t fSattelite; // sattelite flag Bool_t fBackground; // sattelite flag Double32_t fT0TOFbest[3];// interaction time in ps ( A&C, A, C) with best time + Float_t fT0VertexRaw; // raw T0 vertex without any cuts - ClassDef(AliAODTZERO,1) + ClassDef(AliAODTZERO,2) }; #endif diff --git a/STEER/AOD/AliAODTrack.cxx b/STEER/AOD/AliAODTrack.cxx index c0c58590801..4ebed0f8821 100644 --- a/STEER/AOD/AliAODTrack.cxx +++ b/STEER/AOD/AliAODTrack.cxx @@ -48,7 +48,9 @@ AliAODTrack::AliAODTrack() : fCaloIndex(kEMCALNoMatch), fCovMatrix(NULL), fDetPid(NULL), - fProdVertex(NULL) + fProdVertex(NULL), + fTrackPhiOnEMCal(-999), + fTrackEtaOnEMCal(-999) { // default constructor @@ -94,7 +96,9 @@ AliAODTrack::AliAODTrack(Short_t id, fCaloIndex(kEMCALNoMatch), fCovMatrix(NULL), fDetPid(NULL), - fProdVertex(prodVertex) + fProdVertex(prodVertex), + fTrackPhiOnEMCal(-999), + fTrackEtaOnEMCal(-999) { // constructor @@ -144,7 +148,9 @@ AliAODTrack::AliAODTrack(Short_t id, fCaloIndex(kEMCALNoMatch), fCovMatrix(NULL), fDetPid(NULL), - fProdVertex(prodVertex) + fProdVertex(prodVertex), + fTrackPhiOnEMCal(-999), + fTrackEtaOnEMCal(-999) { // constructor @@ -188,7 +194,9 @@ AliAODTrack::AliAODTrack(const AliAODTrack& trk) : fCaloIndex(trk.fCaloIndex), fCovMatrix(NULL), fDetPid(NULL), - fProdVertex(trk.fProdVertex) + fProdVertex(trk.fProdVertex), + fTrackPhiOnEMCal(trk.fTrackPhiOnEMCal), + fTrackEtaOnEMCal(trk.fTrackEtaOnEMCal) { // Copy constructor @@ -231,6 +239,8 @@ AliAODTrack& AliAODTrack::operator=(const AliAODTrack& trk) fCharge = trk.fCharge; fType = trk.fType; fCaloIndex = trk.fCaloIndex; + fTrackPhiOnEMCal = trk.fTrackPhiOnEMCal; + fTrackEtaOnEMCal = trk.fTrackEtaOnEMCal; delete fCovMatrix; if(trk.fCovMatrix) fCovMatrix=new AliAODRedCov<6>(*trk.fCovMatrix); diff --git a/STEER/AOD/AliAODTrack.h b/STEER/AOD/AliAODTrack.h index ce536a147c5..53605085e29 100644 --- a/STEER/AOD/AliAODTrack.h +++ b/STEER/AOD/AliAODTrack.h @@ -255,6 +255,10 @@ class AliAODTrack : public AliVTrack { void SetEMCALcluster(Int_t index) {fCaloIndex=index;} Bool_t IsEMCAL() const {return fFlags&kEMCALmatch;} + Double_t GetTrackPhiOnEMCal() const {return fTrackPhiOnEMCal;} + Double_t GetTrackEtaOnEMCal() const {return fTrackEtaOnEMCal;} + void SetTrackPhiEtaOnEMCal(Double_t phi,Double_t eta) {fTrackPhiOnEMCal=phi;fTrackEtaOnEMCal=eta;} + Int_t GetPHOScluster() const {return fCaloIndex;} void SetPHOScluster(Int_t index) {fCaloIndex=index;} Bool_t IsPHOS() const {return fFlags&kPHOSmatch;} @@ -390,7 +394,10 @@ class AliAODTrack : public AliVTrack { AliAODPid *fDetPid; // more detailed or detector specific pid information TRef fProdVertex; // vertex of origin - ClassDef(AliAODTrack, 15); + Double_t fTrackPhiOnEMCal; // phi of track after being propagated to 430cm + Double_t fTrackEtaOnEMCal; // eta of track after being propagated to 430cm + + ClassDef(AliAODTrack, 16); }; inline Bool_t AliAODTrack::IsPrimaryCandidate() const diff --git a/STEER/ESD/AliESDtrack.cxx b/STEER/ESD/AliESDtrack.cxx index 7b80878247d..aa32089f609 100644 --- a/STEER/ESD/AliESDtrack.cxx +++ b/STEER/ESD/AliESDtrack.cxx @@ -235,7 +235,9 @@ AliESDtrack::AliESDtrack() : fESDEvent(0), fCacheNCrossedRows(-10), fCacheChi2TPCConstrainedVsGlobal(-10), - fCacheChi2TPCConstrainedVsGlobalVertex(0) + fCacheChi2TPCConstrainedVsGlobalVertex(0), + fTrackPhiOnEMCal(-999), + fTrackEtaOnEMCal(-999) { // // The default ESD constructor @@ -345,7 +347,9 @@ AliESDtrack::AliESDtrack(const AliESDtrack& track): fESDEvent(track.fESDEvent), fCacheNCrossedRows(track.fCacheNCrossedRows), fCacheChi2TPCConstrainedVsGlobal(track.fCacheChi2TPCConstrainedVsGlobal), - fCacheChi2TPCConstrainedVsGlobalVertex(track.fCacheChi2TPCConstrainedVsGlobalVertex) + fCacheChi2TPCConstrainedVsGlobalVertex(track.fCacheChi2TPCConstrainedVsGlobalVertex), + fTrackPhiOnEMCal(track.fTrackPhiOnEMCal), + fTrackEtaOnEMCal(track.fTrackEtaOnEMCal) { // //copy constructor @@ -467,7 +471,9 @@ AliESDtrack::AliESDtrack(const AliVTrack *track) : fESDEvent(0), fCacheNCrossedRows(-10), fCacheChi2TPCConstrainedVsGlobal(-10), - fCacheChi2TPCConstrainedVsGlobalVertex(0) + fCacheChi2TPCConstrainedVsGlobalVertex(0), + fTrackPhiOnEMCal(-999), + fTrackEtaOnEMCal(-999) { // // ESD track from AliVTrack. @@ -609,7 +615,9 @@ AliESDtrack::AliESDtrack(TParticle * part) : fESDEvent(0), fCacheNCrossedRows(-10), fCacheChi2TPCConstrainedVsGlobal(-10), - fCacheChi2TPCConstrainedVsGlobalVertex(0) + fCacheChi2TPCConstrainedVsGlobalVertex(0), + fTrackPhiOnEMCal(-999), + fTrackEtaOnEMCal(-999) { // // ESD track from TParticle @@ -956,6 +964,9 @@ AliESDtrack &AliESDtrack::operator=(const AliESDtrack &source){ fCacheChi2TPCConstrainedVsGlobal = source.fCacheChi2TPCConstrainedVsGlobal; fCacheChi2TPCConstrainedVsGlobalVertex = source.fCacheChi2TPCConstrainedVsGlobalVertex; + fTrackPhiOnEMCal= source.fTrackPhiOnEMCal; + fTrackEtaOnEMCal= source.fTrackEtaOnEMCal; + return *this; } diff --git a/STEER/ESD/AliESDtrack.h b/STEER/ESD/AliESDtrack.h index 4b6c0f5e3d7..d5831a7835b 100644 --- a/STEER/ESD/AliESDtrack.h +++ b/STEER/ESD/AliESDtrack.h @@ -346,6 +346,10 @@ class AliESDtrack : public AliExternalTrackParam { Int_t GetEMCALcluster() const {return fCaloIndex;} void SetEMCALcluster(Int_t index) {fCaloIndex=index;} Bool_t IsEMCAL() const {return fFlags&kEMCALmatch;} + + Double_t GetTrackPhiOnEMCal() const {return fTrackPhiOnEMCal;} + Double_t GetTrackEtaOnEMCal() const {return fTrackEtaOnEMCal;} + void SetTrackPhiEtaOnEMCal(Double_t phi,Double_t eta) {fTrackPhiOnEMCal=phi;fTrackEtaOnEMCal=eta;} Int_t GetPHOScluster() const {return fCaloIndex;} void SetPHOScluster(Int_t index) {fCaloIndex=index;} @@ -518,12 +522,15 @@ class AliESDtrack : public AliExternalTrackParam { mutable Float_t fCacheNCrossedRows; //! Cache for the number of crossed rows mutable Float_t fCacheChi2TPCConstrainedVsGlobal; //! Cache for the chi2 of constrained TPC vs global track mutable const AliESDVertex* fCacheChi2TPCConstrainedVsGlobalVertex; //! Vertex for which the cache is valid + + Double_t fTrackPhiOnEMCal; // phi of track after being propagated to 430cm + Double_t fTrackEtaOnEMCal; // eta of track after being propagated to 430cm private: static bool fgkOnlineMode; //! indicate the online mode to skip some of the functionality AliESDtrack & operator=(const AliESDtrack & ); - ClassDef(AliESDtrack,63) //ESDtrack + ClassDef(AliESDtrack,64) //ESDtrack }; diff --git a/STEER/STEER/AliGRPPreprocessor.cxx b/STEER/STEER/AliGRPPreprocessor.cxx index b7df434202f..e310278dc4c 100644 --- a/STEER/STEER/AliGRPPreprocessor.cxx +++ b/STEER/STEER/AliGRPPreprocessor.cxx @@ -198,13 +198,13 @@ const Double_t kFitFraction = -1.; // Fraction of DCS sensor fit "", "(DAQ logbook ERROR)", "(DAQ FXS ERROR)", - "(Trigger Scalers not found in DCS FXS - ERROR)", + "(Trigger Scalers not found in FXS - ERROR)", "(DCS data points ERROR)", "(Trigger Configuration ERROR)", "(DAQ logbook ERROR determining partition of the run)", "(CTP timing ERROR)", "(SPD Mean Vertex ERROR)", - "(DCS FXS Error for LHC Data)", + "(FXS Error for LHC Data)", "(LHC Data Error)", "(LHC Clock Phase Error (from LHC Data))", "(LTU Configuration Error)", @@ -353,7 +353,7 @@ UInt_t AliGRPPreprocessor::Process(TMap* valueMap) if( iDcsFxs == 0 ) { Log(Form("DCS FXS, successful!")); } else if (iDcsFxs ==1) { - Log(Form("DCS FXS, Could not store CTP scalers!!!")); + Log(Form("Could not store CTP scalers!!!")); error |= 4; } else{ Log(Form("Incorrect field in DAQ logbook for partition = %s and detector = %s, going into error without CTP scalers...",partition.Data(),detector.Data())); @@ -625,9 +625,9 @@ UInt_t AliGRPPreprocessor::Process(TMap* valueMap) UInt_t iLHCData = ProcessLHCData(grpobj); if( iLHCData == 0 ) { - Log(Form("LHC Data from DCS FXS, successful!")); + Log(Form("LHC Data from FXS, successful!")); } else if (iLHCData == 1) { - Log(Form("LHC Data, problems with DCS FXS!")); + Log(Form("LHC Data, problems with FXS!")); error |= 256; } else if (iLHCData == 2) { Log(Form("LHC Data, problems with DAQ_time_start/DAQ_time_end!")); @@ -1264,7 +1264,7 @@ UInt_t AliGRPPreprocessor::ProcessLHCData(AliGRPObject *grpobj) } else { - AliError("No LHCData file found in DCS FXS"); + AliError("No LHCData file found in FXS"); return 1; } diff --git a/STEER/STEERBase/AliVTrack.h b/STEER/STEERBase/AliVTrack.h index 5a5ca56679a..64d080c4183 100644 --- a/STEER/STEERBase/AliVTrack.h +++ b/STEER/STEERBase/AliVTrack.h @@ -63,6 +63,10 @@ class AliVTrack: public AliVParticle { virtual void SetEMCALcluster(Int_t) {;} virtual Bool_t IsEMCAL() const {return kFALSE;} + virtual Double_t GetTrackPhiOnEMCal() const {return -999;} + virtual Double_t GetTrackEtaOnEMCal() const {return -999;} + virtual void SetTrackPhiEtaOnEMCal(Double_t,Double_t) {;} + virtual Int_t GetPHOScluster() const {return -1;} virtual void SetPHOScluster(Int_t) {;} virtual Bool_t IsPHOS() const {return kFALSE;} diff --git a/TPC/AliTPCcalibDButil.cxx b/TPC/AliTPCcalibDButil.cxx index 13286893425..f762174d321 100644 --- a/TPC/AliTPCcalibDButil.cxx +++ b/TPC/AliTPCcalibDButil.cxx @@ -834,7 +834,7 @@ void AliTPCcalibDButil::ProcessPulserVariations(TVectorF &pulserQdeviations, Flo Float_t pt=ptROC->GetValue(irow,ipad); // Float_t ptRef=ptRefROC->GetValue(irow,ipad); //comparisons q - Float_t deviation=TMath::Abs(pq/pqRef-1); + Float_t deviation=TMath::Abs(pqRef)>1e-20?TMath::Abs(pq/pqRef-1):-999; for (Int_t i=0;ivThres[i]) ++pulserQdeviations.GetMatrixArray()[i]; diff --git a/TPC/AliTPCcalibSummary.cxx b/TPC/AliTPCcalibSummary.cxx index cb31455c621..86cc499a5d1 100644 --- a/TPC/AliTPCcalibSummary.cxx +++ b/TPC/AliTPCcalibSummary.cxx @@ -57,7 +57,10 @@ delete calibSummary; #include #include #include -#include +#include +#include "AliTPCCalibGlobalMisalignment.h" +#include "AliTPCExBTwist.h" +#include "AliTPCComposedCorrection.h" // // // @@ -140,7 +143,7 @@ void AliTPCcalibSummary::Process(const char * runList, Int_t first, Int_t last){ if (startTime>0&&endTime>0) break; } AliDCSSensorArray* goofieArray = fCalibDB->GetGoofieSensors(irun); - if (goofieArray) fDButil->FilterGoofie(goofieArray,0.5,4.,6.85,7.05,fPcstream); + if (goofieArray) fDButil->FilterGoofie(goofieArray,0.5,4.,4,10,fPcstream); // don't filter goofie for the moment ProcessRun(irun, startTime,endTime); } @@ -314,7 +317,7 @@ void AliTPCcalibSummary::ProcessRun(Int_t irun, Int_t startTime, Int_t endTime){ // TVectorD voltagesIROC(36); TVectorD voltagesOROC(36); - for(Int_t j=1; j<36; j++) voltagesIROC[j-1] = fCalibDB->GetChamberHighVoltage(irun, j,itime); + for(Int_t j=0; j<36; j++) voltagesIROC[j] = fCalibDB->GetChamberHighVoltage(irun, j,itime); for(Int_t j=36; j<72; j++) voltagesOROC[j-36] = fCalibDB->GetChamberHighVoltage(irun, j,itime); Double_t voltIROC = TMath::Median(36, voltagesIROC.GetMatrixArray()); Double_t voltOROC = TMath::Median(36, voltagesOROC.GetMatrixArray()); @@ -526,6 +529,34 @@ void AliTPCcalibSummary::ProcessDrift(Int_t run, Int_t timeStamp){ "slaserA="<GetCorrections()->FindObject("FitAlignTime"); + AliTPCExBTwist *twist = (AliTPCExBTwist*)corr->GetCorrections()->FindObject("FitExBTwistTime"); + if (twist){ + twistX=twist->GetXTwist(); + twistY=twist->GetYTwist(); + //delete twist; + } + if (align && align->GetAlignGlobal()){ + matrixAlign = (TGeoMatrix*) (align->GetAlignGlobal()->Clone()); + //delete align; + } + } + } + (*fPcstream)<<"dcs"<< + "alignTime.="<