180 likes | 252 Views
ExclusiveDecayTools Package. Nicolò Magini Firenze, 16 Gennaio 2003. Un po’ di storia. Sviluppato originariamente a Pisa da Zhen Xie Modificato successivamente da V. Ciulli, R. Ranieri e N. Magini Utilizzato per la mia tesi di laurea e per gli studi di B-Physics nel DAQ-TDR
E N D
ExclusiveDecayTools Package NicolòMagini Firenze, 16 Gennaio 2003 ExclusiveDecayTools Package
Un po’ di storia • Sviluppato originariamente a Pisa da Zhen Xie • Modificato successivamente da V. Ciulli, R. Ranieri e N. Magini • Utilizzato per la mia tesi di laurea e per gli studi di B-Physics nel DAQ-TDR • Adesso disponibile come pacchetto in bTauAnalysis ExclusiveDecayTools Package
Utilizzando come input oggetti ricostruiti con il consueto codice di ORCA, consente di ricostruire catene di decadimenti esclusivi Nel caso di eventi MonteCarlo in formato HEPEVT effettua automaticamente l’associazione con la verità MonteCarlo A che serve? ExclusiveDecayTools Package
Classi per l’utente • Particle • Builder • Channel • UserCut ExclusiveDecayTools Package
Particle RawParticle SimpleLockable Particle In pratica è la classe RawParticle di COBRA, con l’aggiunta di alcune funzionalità utili o necessarie per il pacchetto P.S. Immagino che per una eventuale release ufficiale mi verrà chiesto di cambiare il nome della classe … ExclusiveDecayTools Package
Builder • Classe astratta: deve essere implementata dall’utente una classe concreta che eredita da Builder. Prende come input gli oggetti ricostruiti (nel costruttore) • Il metodo BuildBasicObj restituisce un vettore di Particle • Effettua l’associazione con il MonteCarlo ExclusiveDecayTools Package
Esempio concreto: TkBuilder • Costruita con un qualsiasi vettore di RecTrack (ad es. da CombinatorialTrackFinder, PixelLine, o come più vi aggrada) • Se passiamo nel costruttore anche un vettore di SimTrack viene effettuata l’associazione con la verità MonteCarlo (TDRTrackAssociatorByHits) • Ma ci si potrebbe sbizzarrire a produrre un MuBuilder, un CaloBuilder, ecc … ExclusiveDecayTools Package
Channel • Si costruisce a partire da una stringa di testo con i nomi PDG della particella madre e dei prodotti di decadimento (fino a 6) • Esempio: Channel bdchannel("B0->pi+,pi-") • Il metodo Verify passando come argomento uno UserCut e un numero di vector<Particle*>* pari al numero di prodotti di decadimento ricostruisce tutte le possibili combinazioni compatibili con la particella madre ExclusiveDecayTools Package
UserCut • Altra classe astratta -> l’utente deve implementare le classi derivate con i tagli utili alla sua analisi nel metodo Cut Ad esempio è implementata la classe CutMass che ritorna true se la massa ricostruita è entro una opportuna finestra intorno alla massa vera ExclusiveDecayTools Package
Come si usa il pacchetto? Come esempio utilizzerò il canale di Andrei effettuando una banale ricostruzione bb μ Bs Ds π π K+ K- 4) Tagli topologici fra Bs e μ 3) Minv tra i Ds ricostruiti e π 2) Id dei π e Minv con i 1) Id e Minv delle coppie di K ExclusiveDecayTools Package
Si parte passando al Builder i normali oggetti ricostruiti di ORCA • In questo caso, avendo effettuato una ricostruzione nel Tracker, si tratta di un vettore di RecTrack: TkBuilder mytk(“BasicObj”, &GoodRecTracks, &GoodSimTracks) vector<Particle*>* TKBasicObj = mytk.BuildBasicObj() In questo caso passiamo anche un vettore di sim tracks perché ci interessa l’associazione con la verità MonteCarlo ExclusiveDecayTools Package
Poi si effettua la prima identificazione delle particelle Si può fare con la classe Channel se chiamiamo il costruttore con un canale di decadimento “ad un corpo” CutdEdX cutdEdx; Channel aPi(“pi+->BasicObj”); vector<Particle*>* Pilist = aPi.Verify(&cutdEdX,TKBasicObj); Channel aK(“K+->BasicObj”); vector<Particle*>* Klist = aK.Verify(&cutdEdX,TKBasicObj); Channel aMu(“mu+->BasicObj”); vector<Particle*>* Mulist = aMu.Verify(&cutdEdX,TKBasicObj); P.S. Qualora qualcuno se lo stia chiedendo, il taglio di dE/dx attualmente non fa assolutamente niente (return true), quindi si ottengono le stesse particelle in tutti e tre i casi, ma era solo per dare l’idea … ExclusiveDecayTools Package
A questo punto ricostuiamo le combinazioni di massa invariante Channel aPhi (“phi->K-,K+”,&mysimevt); vector<Particle*>* Philist = aPhi.Verify(cutPhiMass,Klist,Klist); Channel aDs (“D_s-->phi,pi-”,&mysimevt); vector<Particle*>* Dslist = aDs.Verify(cutDsMass,Philist,Pilist); Channel aBs (“B_s0->D-s-,pi+”,&mysimevt); vector<Particle*>* Bslist = aBs.Verify(cutBsMass,Dslist,Klist); 1) Ad ogni step viene verificato che non ci sia sovrapposizione fra i prodotti di decadimento 2) Channel ricostruisce automaticamente anche il canale ottenuto per coniugazione di C 3) In questo caso si passa nel costruttore anche il puntatore al RawHepEvent simulato per propagare la verità di MonteCarlo dai prodotti di decadimento alla madre ExclusiveDecayTools Package
Se volessimo effettuare dei tagli topologici? Possiamo costruire il Channel con un canale di decadimento “virtuale” Channel Evchannel(“Event->Bs,mu”); vector<Particle*>* Eventlist = Evchannel.Verify(&cut,Bslist,Mulist); Poiché Event non è un nome di particella nelle tabelle PDG, Channel si limita a trovare le combinazioni dei prodotti senza assegnare proprietà fisiche alla madre ExclusiveDecayTools Package
A questo punto ho i miei vettori di particelle ricostruite e posso inserirli nelle ntuple, ecc … for (int i=0; i<Bslist->size(); i++){ Particle * bs = (*Bslist)[i]; cout « “Bs pt = “ « bs->perp() « endl; Particle * ds = (*Bslist)[i]->getChild(0); Particle * pi1 = (*Bslist)[i]->getChild(1); ecc. ecc. ecc … E BUON DIVERTIMENTO CON L’ANALISI !!! ExclusiveDecayTools Package
E se mi facesse comodo accedere ai RecObj originali che hanno originato una certa Particle? • Nel nostro esempio, mi servono le RecTrack dei due K per ottenere le informazioni sul vertice di decadimento della template class ParticleBase<P> Semplicemente la Particle + il RecObj P Il metodo baseObject() restituisce P ExclusiveDecayTools Package
Stato del software • Disponibile su cvs nella head in bTauAnalysis/ExclusiveDecayTools • Testato con ORCA_6_3_0 su lxplus su eventi B0 π+π- e Bs Ds π • Compila anche su Sun • Mancano i commenti alle classi ExclusiveDecayTools Package
ToDoList • Risistemare e ottimizzare il codice • Aggiornare la documentazione (attualmente disponibile solo una CMS/IN DRAFT obsoleta sulla vecchia versione di Zhen) • Implementare altri Builder semplici (ad esempio L3MuBuilder come richiesto da Andrei) • Eventualmente in seguito, riorganizzare l’associazione con la MC Truth da un lato e i RecObj dall’altro ExclusiveDecayTools Package